地震可视化AI代理

想象一下,拥有一个AI助手,它可以自动收集全球地震数据,分析模式,并生成漂亮的可视化效果——所有这些都不需要人工干预。

地震可视化AI代理

想象一下,拥有一个AI助手,它可以自动收集全球地震数据,分析模式,并生成漂亮的可视化效果——所有这些都不需要人工干预。在这篇全面的指南中,我们将使用smolagents构建这样一个系统,Hugging Face的最小化但功能强大的框架用于创建AI代理。

我们将创建一个“地震可视化代理”,该代理可以:

  • 搜索实时地震数据
  • 处理复杂的地质数据集
  • 生成交互式世界地图
  • 自主处理错误恢复

通过本教程的结束,你不仅会有一个工作的地震可视化系统,还会理解构建可靠AI代理的基本概念。

1、理解LLM代理:从简单生成到复杂操作

在探索SmoLAgents之前,了解大型语言模型(LLM)代理的重要性是很重要的。LLMs已经超越了简单的文本生成,积极地参与工作流,代理的存在存在于一个光谱上:

  • 简单处理器:LLM生成文本而不控制程序流程
  • 路由器:输出引入基本控制流(if/else决策)
  • 工具调用:LLM可以确定要使用的函数及其适当的参数
  • 多步代理:LLM管理迭代过程和工作流循环
  • 多代理系统:多个专业代理协作完成复杂目标

我们的地震可视化系统展示了“多代理系统”级别的例子,其中专门的代理协调以完成复杂的科学可视化任务。

2、为什么选择smolagents?

SmoLAgents作为我们地震项目的最佳选择,因为它采用了一种革命性的方法来处理代理动作:

2.1 代码代理:思考Python,而不是JSON

传统框架表示动作为JSON:

{"tool": "web_search", "args": {"query": "earthquake data USGS"}}

SmoLAgents的CodeAgent将动作表达为可执行代码:

results = web_search("earthquake data USGS")  
df = pd.DataFrame(parse_json(results))

这种基于代码的方法提供了“代码的优势”——LLMs经过大量训练,减少了语法错误,并直接在动作中启用复杂推理。研究表明,代码代理在复杂基准测试中实现了30%更少的LLM调用和更好的性能

2.2 为Hugging Face生态系统而建

与Hugging Face模型、工具和Hub无缝集成意味着你可以:

  • 使用任何LLM(从开源到专有)
  • 在项目之间共享和重用工具
  • 利用社区生态系统

3、架构概述

我们的地震可视化代理展示了真正的多代理系统,具有两个专门的代理:

3.1 地震网络代理

目的:数据收集专家 职责

  • 搜索地震数据源
  • 从USGS/EMSC API提取数据
  • 解析并结构化原始地质数据

3.2 地震管理代理

目的:协调和可视化管理 职责

  • 协调网络代理
  • 处理和分析数据
  • 创建可视化
  • 管理错误恢复

这种多代理架构展示了任务分工和专业化——每个代理都有明确的职责,这导致了更可靠和可维护的系统。

4、实现深入探讨

4.1 设置基础

让我们建立必要的核心基础设施:

from smolagents import tool, Tool, CodeAgent, OpenAIServerModel  
from tavily import TavilyClient  
import plotly.express as px  
import pandas as pd

4.2 创建智能工具

工具是使我们的代理与现实世界互动的基础构建块:

@tool  
def web_search(query: str) -> str:  
    """搜索地震数据。  

    使用Tavily进行具有地质学重点的智能网络搜索。  
    """  
    tavily_client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY"))  
    response = tavily_client.search(query)  
    return str(response["results"])  

class VisitWebpageTool(Tool):  
    name = "visit_webpage"  
    description = "读取有关地质数据的网页内容"  
    inputs = {"url": {"type": "string", "description": "地震数据源的URL"}}  
    output_type = "string"  

    def forward(self, url: str) -> str:  
        # 高级错误处理和内容提取  
        try:  
            response = requests.get(url, timeout=20)  
            markdown_content = markdownify(response.text).strip()  
            return truncate_content(markdown_content, 40000)  
        except requests.exceptions.Timeout:  
            return "请求超时"  
        except Exception as e:  
            return f"错误: {str(e)}"

注意我们是如何实施稳健的错误处理的——这是生产就绪代理的关键方面。

4.3 配置网络代理

我们的网络代理针对数据收集进行了优化,具有精心选择的权限:

quake_web_agent = CodeAgent(  
    model=OpenAIServerModel("gpt-4.1-2025-04-14", max_completion_tokens=8096),  
    tools=[web_search, VisitWebpageTool()],  
    additional_authorized_imports=[  
        "geopandas", "plotly", "numpy", "pandas", "requests"  
    ],  
    max_steps=10,  
    name="quake_web_agent",  
    description="从网络来源收集实时地震数据"  
)

关键配置决策:

  • 模型选择:GPT-4用于复杂推理
  • 令牌限制:增加以处理大量数据
  • 授权导入:仔细选择的数据科学库
  • 步骤限制:防止无限循环

4.4 构建经理代理

经理展示了分层代理系统的强大功能:

quake_manager = CodeAgent(  
    model=OpenAIServerModel("gpt-4.1-2025-04-14", max_tokens=8096),  
    tools=[],  
    managed_agents=[quake_web_agent],  
    planning_interval=5,  
    verbosity_level=2,  
    max_steps=15  
)

这种设置体现了多代理协作模式,其中专门的代理协同工作以实现复杂目标。

5、代理的思维-行动过程

让我们分析我们的多步骤代理如何通过地震可视化任务进行推理:

5.1 数据源选择

这展示了SmoLAgents代理如何将思想转化为可执行代码而不是JSON,从而实现更自然和强大的动作表达。

5.2 数据转换

代理自主地将数据结构化为可视化要求,显示直接编码在可执行动作中的复杂推理。

5.3 错误处理和恢复

这展示了代理的能力:

  • 从执行日志中识别错误模式
  • 制定适当解决方案
  • 自主实施修复

5.4 可视化创建

代理正确地将可视化要求映射到执行,展示了代码代理在处理复杂工作流方面的力量。

5.5 性能分析

📊 数据处理:~10,000次地震,4个步骤
🔄 错误恢复:自动修复幅度问题
🚀 LLM令牌使用:通过基于代码的动作优化
✨ 可视化质量:出版就绪的交互式地图
⏱️ 总执行时间:<1分钟

6、高级多代理功能

6.1 工具整合

遵循效率原则,考虑结合相关工具:

@tool  
def get_seismic_data(source: str = "USGS", time_range: str = "month") -> pd.DataFrame:  
    """从指定来源获取并解析地震数据"""  
    # 结合功能进行数据检索和解析  
    pass

6.2 扩展视觉功能

SmoLAgents支持多模态功能,允许:

vision_agent = CodeAgent(  
    model=vision_model,  
    tools=[image_analysis_tool],  
    description="分析地震可视化以获得见解"  
)

7、结束语

使用SmoLAgents构建地震可视化代理展示了从简单的LLM文本生成到复杂的多代理系统的演变。通过利用代码代理和最小化抽象的原则,我们创建了一个系统,它展示了从数据收集到自主可视化的真正代理能力。

关键是,当LLMs通过代码而不是JSON进行操作时,它们获得了广泛的培训优势,使得代理开发更加自然和有效。这种方法体现在smolagents中,代表了代理AI系统的未来。

对于完整的代码实现笔记本,请查看代码链接


原文链接:Autonomous Coding AI Agent using smolagents : Earthquake visualization agent

汇智网翻译整理,转载请标明出处