AI Agent实战入门:基于LangChain快速搭建自主工具调用智能体

📅 2026/7/25 4:25:13 👁️ 阅读次数 📝 编程学习
AI Agent实战入门:基于LangChain快速搭建自主工具调用智能体

Agentic AI 不是一个具体的软件包或模型,而是一个技术概念和架构范式。它指的是由具备自主性、目标驱动和适应能力的 AI 智能体(AI Agent)组成的系统。这些智能体能够模仿人类决策,在有限监督下完成特定目标,并通过调用外部工具、API 或数据库来执行复杂任务。如果说生成式 AI(如 ChatGPT)是“能说会道”的助手,那么 Agentic AI 就是“能说会做”的实干家,它可以将语言模型的思考能力转化为实际行动。

对于开发者而言,最关心的不是概念本身,而是如何快速上手、搭建并验证一个可运行的 AI Agent。本文将聚焦于 Agentic AI 的实战入门,带你从核心认知出发,快速搭建一个具备基础能力的 AI Agent,并验证其调用工具、执行任务的能力。我们将使用当前社区活跃的框架进行演示,重点关注环境准备、核心组件、实操步骤以及效果验证,让你在本地或云端快速跑通第一个 Agent 工作流。

1. 核心能力速览

在深入实操前,我们先通过一个表格快速了解 AI Agent 及 Agentic AI 系统的核心特征,这有助于你判断其技术门槛和适用性。

能力项说明与实战关注点
核心定义由 AI 智能体组成的系统,能自主规划、决策并调用工具完成任务,超越纯文本生成。
核心组件规划(Planning)工具调用(Tool Calling)记忆(Memory)行动(Action)。实战中需逐一配置。
主流框架LangChain / LangGraph、AutoGen、CrewAI、MetaGPT 等。本文将以 LangChain 为例,因其生态成熟、文档丰富。
硬件门槛无强制 GPU 要求。核心负载在大语言模型(LLM)推理上。本地部署需考虑 LLM 的硬件需求(如 Ollama 运行 7B 模型约需 8GB+ 内存)。云 API 调用(如 OpenAI、DeepSeek)则主要依赖网络。
启动方式通常为Python 脚本启动。高级框架可能提供 WebUI 或 API 服务,但核心开发模式是编写并运行 Python 程序。
接口能力核心是工具调用 API。智能体通过框架暴露的接口接收自然语言指令,返回执行结果。可自行封装为 REST API 服务。
批量任务天然支持。通过编排多个智能体或循环执行,可处理任务队列。性能瓶颈在于 LLM 的调用速率和成本。
适合场景自动化工作流(如数据分析、报告生成)、智能客服、代码助手、研究助理、个性化推荐等需要“思考-行动”循环的场景。

2. 适用场景与使用边界

AI Agent 并非万能,理解其擅长与不擅长的领域,是设计高效系统的前提。

适用场景:

  1. 多步骤任务自动化:例如,根据用户需求“帮我分析上个月销售额下降的原因,并生成一份总结报告”,Agent 可以自动执行“查询数据库 -> 数据清洗 -> 调用分析模型 -> 生成图文报告 -> 发送邮件”等一系列操作。
  2. 动态信息获取与处理:需要实时查询网络信息、调用第三方 API(如天气、股票、地图)并基于结果进行决策的任务。
  3. 复杂决策与规划:在给定约束条件下(如预算、时间),规划最优方案,例如旅行行程规划、项目资源调度。
  4. 人机协同交互:作为数字员工,在特定领域(如客服、技术支持)中与用户进行多轮对话,并实际操作系统解决问题。

使用边界与注意事项:

  1. 可靠性依赖 LLM 与工具:Agent 的“思考”质量受底层 LLM 影响,“行动”能力受所集成工具的稳定性和准确性制约。需对关键环节设置人工审核或回退机制。
  2. 成本与延迟:频繁调用 LLM(尤其是高性能闭源 API)会产生显著成本。复杂的思考-行动循环也会增加任务完成延迟,不适合对实时性要求极高的场景。
  3. 安全与合规
    • 工具权限:严格控制 Agent 可调用的工具权限,避免其执行危险操作(如删除文件、发送邮件)。
    • 数据隐私:确保流经 Agent 的数据符合隐私法规,避免敏感信息泄露。
    • 内容合规:对 Agent 生成的内容进行审核,防止产生有害或违规信息。
  4. “幻觉”与错误累积:LLM 可能产生错误推理或“幻觉”,导致 Agent 制定错误计划或调用错误工具。错误可能在多步骤任务中累积放大。
  5. 不适用于简单、确定性的任务:对于简单的数据查询、格式转换等任务,使用传统脚本或工作流引擎更高效、可靠。

3. 环境准备与前置条件

我们将以LangChain + OpenAI API作为基础环境进行演示。这是最快速的上手路径,无需本地部署大模型。

基础环境:

  • 操作系统:Windows 10/11, macOS, Linux (Ubuntu 20.04+) 均可。
  • Python:版本 3.8 或更高。推荐使用 3.10。
  • 包管理工具pipconda

核心依赖:

  1. OpenAI API Key:这是本次实操的“燃料”。你需要注册 OpenAI 平台并获取一个有效的 API Key。注意保管,不要泄露。
  2. 可选本地 LLM:如果你想完全本地运行,可以使用OllamaLM Studio在本地运行开源模型(如 Llama 3.2, Qwen2.5),并将 LangChain 的 LLM 指向本地服务。这需要你的机器有足够的内存(通常 16GB+ 为佳)。

环境检查清单:在开始前,请确保完成以下步骤:

  1. 打开终端或命令提示符。
  2. 运行python --version检查 Python 版本。
  3. 运行pip --version确保 pip 可用。
  4. 准备好你的 OpenAI API Key,将其保存在一个安全的地方(如环境变量)。

4. 安装部署与启动方式

我们通过创建一个独立的 Python 虚拟环境来管理依赖,这是最佳实践。

步骤 1:创建并激活虚拟环境

# 创建虚拟环境,命名为 `agent_env` python -m venv agent_env # 激活虚拟环境 # Windows (CMD/PowerShell) agent_env\Scripts\activate # macOS/Linux source agent_env/bin/activate

激活后,命令行提示符前会出现(agent_env)标识。

步骤 2:安装核心库我们将安装 LangChain 及其 OpenAI 集成包,同时安装python-dotenv来管理环境变量。

pip install langchain langchain-openai python-dotenv
  • langchain: AI Agent 开发的核心框架。
  • langchain-openai: 用于连接 OpenAI 模型的官方集成。
  • python-dotenv: 方便地从.env文件加载 API Key 等敏感信息。

步骤 3:配置 API Key在项目根目录创建一个名为.env的文件,内容如下:

OPENAI_API_KEY=你的实际API密钥

重要:确保将.env文件添加到.gitignore中,避免将密钥提交到代码仓库。

步骤 4:编写第一个 Agent 脚本创建一个 Python 文件,例如first_agent.py。我们将构建一个能进行简单数学计算和网络搜索(模拟)的 Agent。

5. 功能测试与效果验证

现在,我们通过三个逐步深入的测试,来验证 AI Agent 的核心能力:基础对话、工具调用和多步骤规划。

5.1 测试一:基础对话与 LLM 连接

首先,测试环境是否正常,LLM 能否被 LangChain 调用。

# first_agent.py from langchain_openai import ChatOpenAI from langchain.agents import AgentExecutor, create_react_agent from langchain.tools import Tool from langchain import hub import os from dotenv import load_dotenv # 1. 加载环境变量 load_dotenv() # 2. 初始化 LLM llm = ChatOpenAI(model="gpt-4o-mini", temperature=0, openai_api_key=os.getenv("OPENAI_API_KEY")) # 3. 测试基础对话 prompt = "你好,请用中文介绍一下你自己。" response = llm.invoke(prompt) print("【测试一:基础对话】") print(f"问题:{prompt}") print(f"回答:{response.content}\n")

运行脚本:

python first_agent.py

预期结果:你应该能看到 LLM(GPT-4o-mini)用中文做的自我介绍。这证明你的 API Key、网络和 LangChain 环境配置正确。

5.2 测试二:定义工具并让 Agent 调用

AI Agent 的核心是使用工具。我们定义两个简单的工具:一个计算器和一个模拟搜索引擎。

# 续写在 first_agent.py 中 # 4. 定义工具 def calculator(input_str: str) -> str: """一个简单的计算器,输入数学表达式字符串,返回计算结果。""" try: # 警告:使用 eval 有安全风险,仅用于演示。生产环境应使用安全计算库。 result = eval(input_str) return f"计算结果:{result}" except Exception as e: return f"计算错误:{e}" def search_web(query: str) -> str: """模拟网络搜索,返回固定结果。实际应集成 SerperAPI、Google Search API 等。""" # 这里仅作模拟 simulated_results = { "今天天气": "北京:晴,15-25°C。上海:多云,18-28°C。", "LangChain": "LangChain 是一个用于开发由语言模型驱动的应用程序的框架。", "AI Agent": "AI Agent 是能够感知环境、进行决策并执行行动以实现目标的智能体。" } return simulated_results.get(query, f"未找到关于 '{query}' 的模拟信息。") # 将函数包装成 LangChain Tool 对象 tools = [ Tool( name="Calculator", func=calculator, description="用于执行数学计算。输入应为一个有效的数学表达式,例如 '3 * 5 + 2'。" ), Tool( name="Search", func=search_web, description="用于搜索互联网上的最新信息。输入是一个搜索查询词。" ) ] # 5. 创建 Agent # 从 LangChain Hub 拉取一个预设的 ReAct 提示词模板 prompt_template = hub.pull("hwchase17/react") agent = create_react_agent(llm, tools, prompt_template) # 6. 创建执行器 agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True) print("【测试二:工具调用】") # 测试用例 1:使用计算器 question1 = "请计算 125 的平方根是多少?" print(f"问题:{question1}") result1 = agent_executor.invoke({"input": question1}) print(f"最终答案:{result1['output']}\n") # 测试用例 2:使用搜索工具 question2 = "今天北京的天气怎么样?" print(f"问题:{question2}") result2 = agent_executor.invoke({"input": question2}) print(f"最终答案:{result2['output']}\n")

运行脚本。注意观察控制台输出(因为设置了verbose=True),你会看到类似以下的思考过程:

> Entering new AgentExecutor chain... 我需要计算 125 的平方根。我应该使用计算器工具。 Action: Calculator Action Input: 125 ** 0.5 Observation: 计算结果:11.180339887498949 Thought: 我得到了计算结果,可以回答用户了。 Final Answer: 125 的平方根大约是 11.18。

验证点

  1. 自主选择工具:Agent 正确识别了问题类型,选择了CalculatorSearch工具。
  2. 正确格式化输入:它将自然语言问题转化成了工具能理解的输入格式(如125 ** 0.5)。
  3. 整合结果并回答:它接收工具返回的结果,并组织成自然语言回复给用户。

5.3 测试三:多步骤规划与自主决策

真正的威力在于处理需要多个步骤和决策的复杂任务。

# 续写在 first_agent.py 中 print("【测试三:多步骤规划】") complex_question = "我想了解 AI Agent 的最新发展,然后根据其特点,估算一下开发一个简单原型需要多少行代码?" print(f"复杂问题:{complex_question}") result3 = agent_executor.invoke({"input": complex_question}) print(f"\n最终答案:{result3['output']}")

预期结果与观察: Agent 可能会执行以下步骤(在verbose日志中可见):

  1. 思考:用户问了两个部分:了解发展和估算代码量。
  2. 行动1:调用Search工具,查询“AI Agent 最新发展”。
  3. 观察1:获得模拟的搜索结果。
  4. 思考:基于搜索到的信息,总结特点。然后需要估算代码量,这可能涉及计算或经验判断。
  5. 行动2:它可能直接基于知识回答,也可能尝试调用Calculator(虽然不适用),最终会利用 LLM 的内在知识给出一个估算范围(例如:“基于 LangChain,一个基础 Agent 原型可能只需 50-100 行代码。”)。
  6. 最终回答:将两部分信息整合,给出连贯的回答。

这个测试验证了 Agent 的规划(Planning)顺序执行能力。它没有把问题拆成两个独立问题分别提问,而是在一个会话中自主规划了步骤。

6. 接口 API 与批量任务

将 Agent 封装成 API 服务,是集成到其他应用的关键。同时,处理批量任务是提升效率的常见需求。

6.1 使用 FastAPI 封装 Agent 为 REST API

我们创建一个新的文件agent_api.py

# agent_api.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from langchain.agents import AgentExecutor, create_react_agent from langchain.tools import Tool from langchain_openai import ChatOpenAI from langchain import hub import os from dotenv import load_dotenv import asyncio from contextlib import asynccontextmanager # 加载环境变量 load_dotenv() # 定义请求和响应模型 class AgentRequest(BaseModel): query: str user_id: str | None = None # 可用于区分用户会话 class AgentResponse(BaseModel): answer: str session_id: str | None = None # 工具定义 (复用之前的工具函数) def calculator(input_str: str) -> str: try: result = eval(input_str) return f"计算结果:{result}" except Exception as e: return f"计算错误:{e}" def search_web(query: str) -> str: simulated_results = { "今天天气": "北京:晴,15-25°C。上海:多云,18-28°C。", "LangChain": "LangChain 是一个用于开发由语言模型驱动的应用程序的框架。", "AI Agent": "AI Agent 是能够感知环境、进行决策并执行行动以实现目标的智能体。" } return simulated_results.get(query, f"未找到关于 '{query}' 的模拟信息。") tools = [ Tool(name="Calculator", func=calculator, description="用于执行数学计算。"), Tool(name="Search", func=search_web, description="用于搜索互联网信息。") ] # 初始化 LLM 和 Agent(在应用生命周期内保持单例) llm = ChatOpenAI(model="gpt-4o-mini", temperature=0, openai_api_key=os.getenv("OPENAI_API_KEY")) prompt = hub.pull("hwchase17/react") agent = create_react_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=False, handle_parsing_errors=True) @asynccontextmanager async def lifespan(app: FastAPI): # 启动逻辑,这里可以初始化数据库连接等 print("Agent API 服务启动...") yield # 关闭逻辑 print("Agent API 服务关闭...") app = FastAPI(lifespan=lifespan) @app.post("/query", response_model=AgentResponse) async def query_agent(request: AgentRequest): """ 接收用户查询,调用 Agent 执行并返回结果。 """ try: # 调用 Agent 执行器 result = await asyncio.to_thread(agent_executor.invoke, {"input": request.query}) answer = result.get("output", "Agent 未返回有效结果。") return AgentResponse(answer=answer, session_id=request.user_id) except Exception as e: raise HTTPException(status_code=500, detail=f"Agent 执行失败: {str(e)}") @app.get("/health") async def health_check(): """健康检查端点""" return {"status": "healthy", "service": "AI Agent API"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)

启动 API 服务:

# 首先安装 FastAPI 和 Uvicorn pip install fastapi uvicorn # 运行服务 python agent_api.py

服务将在http://127.0.0.1:8000启动。

测试 API:使用curl或 Pythonrequests库进行测试。

# 使用 curl 测试 curl -X POST "http://127.0.0.1:8000/query" \ -H "Content-Type: application/json" \ -d '{"query": "计算 98 乘以 76 等于多少?", "user_id": "test_user_1"}'

预期响应:

{"answer": "98 乘以 76 等于 7448。", "session_id": "test_user_1"}

6.2 批量任务处理

对于批量任务,核心是构建一个任务队列,并控制并发以避免 API 速率限制。

# batch_processor.py import asyncio import aiohttp import json from typing import List API_URL = "http://127.0.0.1:8000/query" # 假设上面启动的 API async def process_single_query(session: aiohttp.ClientSession, query: str, task_id: int): """处理单个查询任务""" payload = {"query": query, "user_id": f"batch_{task_id}"} try: async with session.post(API_URL, json=payload, timeout=30) as response: if response.status == 200: result = await response.json() return {"task_id": task_id, "query": query, "success": True, "answer": result["answer"]} else: return {"task_id": task_id, "query": query, "success": False, "error": f"HTTP {response.status}"} except Exception as e: return {"task_id": task_id, "query": query, "success": False, "error": str(e)} async def process_batch_queries(queries: List[str], max_concurrent: int = 3): """批量处理查询,控制最大并发数""" connector = aiohttp.TCPConnector(limit=max_concurrent) async with aiohttp.ClientSession(connector=connector) as session: tasks = [] for idx, query in enumerate(queries): task = asyncio.create_task(process_single_query(session, query, idx)) tasks.append(task) # 等待所有任务完成 results = await asyncio.gather(*tasks) return results if __name__ == "__main__": # 示例批量任务列表 batch_queries = [ "123 + 456 等于多少?", "搜索一下什么是机器学习。", "计算圆的面积,假设半径是 5。", "今天上海的天气如何?", "Python 中如何定义一个类?" ] # 运行批量处理 results = asyncio.run(process_batch_queries(batch_queries, max_concurrent=2)) # 输出结果 for res in results: if res["success"]: print(f"任务 {res['task_id']} 成功: '{res['query']}' -> {res['answer'][:50]}...") else: print(f"任务 {res['task_id']} 失败: '{res['query']}' -> 错误: {res['error']}")

关键点:

  1. 异步处理:使用asyncioaiohttp提高 I/O 密集型任务效率。
  2. 并发控制:通过TCPConnector(limit=max_concurrent)控制同时发起的请求数,防止压垮服务或触发速率限制。
  3. 错误处理:每个任务独立处理异常,避免单个任务失败导致整个批次中断。
  4. 结果收集:使用asyncio.gather收集所有任务结果,便于后续分析。

7. 资源占用与性能观察

AI Agent 系统的性能主要取决于 LLM 的响应速度和工具执行的效率。

1. 性能观测指标:

  • 端到端延迟:从用户提问到收到最终答案的总时间。可使用 Python 的time模块在 API 调用前后计时。
  • Token 消耗:每次调用 LLM 消耗的输入和输出 Token 数,直接关联成本。OpenAI API 的响应头中通常包含usage字段。
  • 工具调用次数:复杂任务可能涉及多次工具调用,每次调用都有网络或计算开销。
  • Agent “思考”时间:即 LLM 生成“Thought”和“Action”的时间,这通常是主要的耗时环节。

2. 优化建议:

  • 选择合适的 LLM:对于简单工具调用,gpt-4o-minigpt-3.5-turbogpt-4更快、更经济。本地模型则需平衡速度与质量。
  • 优化提示词(Prompt):清晰、具体的系统提示和工具描述能减少 Agent 的“困惑”,缩短思考链,减少无效的 Token 消耗。
  • 缓存(Caching):对频繁出现的相同或相似查询结果进行缓存,可以极大减少对 LLM 和工具的调用。LangChain 提供了LLMCache等组件。
  • 设置超时与重试:为工具调用和 LLM 调用设置合理的超时,并实现重试机制,提高系统鲁棒性。
  • 流式输出(Streaming):对于生成内容较长的任务,可以考虑使用流式响应,提升用户体验。

3. 本地部署资源考量:如果使用 Ollama 等工具在本地运行 LLM(如 Llama 3.2 7B):

  • 内存/显存:7B 参数模型量化后(如 q4_K_M)通常需要 4-6 GB 内存。确保系统有足够空闲内存。
  • CPU/GPU:GPU 能显著加速推理。使用nvidia-smi(NVIDIA)或任务管理器观察推理时的 GPU 利用率。
  • 磁盘空间:模型文件本身通常占用 4-5 GB 空间。

8. 常见问题与排查方法

在开发和运行 AI Agent 过程中,你可能会遇到以下典型问题。

问题现象可能原因排查方式解决方案
启动失败,提示ModuleNotFoundError依赖包未安装或虚拟环境未激活。1. 检查命令行前缀是否有(agent_env)
2. 运行pip list | grep langchain查看包是否存在。
1. 激活虚拟环境:source agent_env/bin/activate(Linux/Mac) 或agent_env\Scripts\activate(Win)。
2. 重新安装依赖:pip install -r requirements.txt
调用 API 时报错AuthenticationErrorOpenAI API Key 无效或未正确设置。1. 检查.env文件中的OPENAI_API_KEY值是否正确。
2. 在代码中打印os.getenv(‘OPENAI_API_KEY’)[:5]查看是否加载成功。
1. 在 OpenAI 平台检查 API Key 状态、余额和有效期。
2. 确保.env文件在项目根目录,且代码中已调用load_dotenv()
Agent 陷入循环,不停调用同一个工具提示词设计不佳或工具描述不清,导致 Agent 无法做出正确决策。观察verbose=True时的日志,看 Agent 的“Thought”是否陷入逻辑循环。1. 优化工具描述,使其职责更清晰。
2. 在系统提示词中明确限制最大迭代次数或步骤。
3. 使用max_iterationsmax_execution_time参数强制停止。
工具调用返回错误或超时工具函数本身有 Bug、依赖服务不可用或网络问题。1. 单独测试工具函数。
2. 检查网络连接和第三方 API 状态。
1. 修复工具函数代码,增加异常捕获和友好错误返回。
2. 为工具调用添加重试机制和超时设置。
本地模型(Ollama)响应慢模型太大、硬件资源不足或未使用 GPU 加速。1. 使用ollama ps查看模型运行状态和资源占用。
2. 检查任务管理器中的 CPU/GPU/内存使用率。
1. 换用更小的量化模型(如q4_K_M)。
2. 确保 Ollama 配置为使用 GPU(如果可用)。
3. 升级硬件或使用云 API。
FastAPI 服务无法访问防火墙阻止、端口被占用或服务未成功启动。1. 检查服务启动日志是否有错误。
2. 在服务器上运行curl http://127.0.0.1:8000/health
3. 使用netstat -an | grep 8000查看端口监听状态。
1. 更换服务端口(如port=8001)。
2. 检查防火墙设置,开放对应端口。
3. 确保在正确的虚拟环境中运行。
批量任务中部分请求失败并发过高导致 API 限流、网络波动或个别任务超时。查看批量处理脚本的返回结果,分析失败任务的错误信息。1. 降低max_concurrent参数,减少并发数。
2. 实现指数退避的重试逻辑。
3. 对任务进行错误分类,是重试还是记录后跳过。

9. 最佳实践与使用建议

基于实战经验,遵循以下最佳实践可以让你更稳定、高效地开发和运营 AI Agent 应用。

  1. 从简单开始,逐步复杂化:不要一开始就设计包含数十个工具的复杂 Agent。从一个明确的工具和一个清晰的任务开始,验证整个流程(感知->规划->行动->观察)能跑通,再逐步增加工具和逻辑。
  2. 精心设计工具描述(Description):工具的描述是 Agent 选择工具的主要依据。描述应准确、简洁,并包含输入输出的示例格式。好的描述能极大提升工具调用的准确率。
  3. 实施严格的输入验证与清理:永远不要信任来自用户或上游系统的输入。在工具函数内部,对输入进行严格的验证、类型转换和清理,防止注入攻击或意外错误。
  4. 为 Agent 设置明确的边界:通过系统提示词(System Prompt)明确告诉 Agent 它的角色、能力范围和禁止事项。例如,“你是一个数学计算助手,只能使用提供的计算器工具,不能回答与数学无关的问题。”
  5. 实现日志记录与可观测性:记录 Agent 完整的思考链(Chain-of-Thought)、工具调用记录和最终输出。这对于调试复杂问题、优化提示词和分析成本至关重要。考虑使用 LangSmith 等专门的可观测性平台。
  6. 成本监控与优化:如果使用按 Token 计费的云 API,必须监控使用量。设置预算警报,并对高频或高消耗的查询进行优化,例如通过缓存、使用更小模型或优化提示词来减少 Token 消耗。
  7. 设计人机回退(Human-in-the-loop)机制:对于关键任务或高风险操作(如发送邮件、修改数据库),设计审批流程,让 Agent 在执行前请求人类确认。
  8. 进行全面的测试:不仅测试常规用例,更要测试边缘用例和对抗性输入。模拟工具失败、网络超时、LLM 返回不合理内容等情况,确保你的 Agent 系统能够优雅处理。

10. 总结与下一步

通过本文的实战演练,你应该已经掌握了 AI Agent 的核心概念,并在本地成功搭建并测试了一个具备工具调用能力的智能体。我们从一个简单的计算器和模拟搜索工具入手,验证了 Agent 的自主规划、决策和执行能力,并将其封装成了可对外提供服务的 API,最后探讨了批量处理任务的方法。

最值得尝试的下一步:

  1. 集成真实工具:将模拟的search_web工具替换为真实的 SerperAPI、Google Search API 或 Tavily Search API,让你的 Agent 真正具备获取实时信息的能力。
  2. 尝试多智能体(Multi-Agent)系统:使用CrewAIAutoGen框架,创建多个具有不同角色(如研究员、写手、校对员)的 Agent,让它们协作完成一个更复杂的项目,如撰写市场分析报告。
  3. 为 Agent 添加记忆(Memory):使用 LangChain 的ConversationBufferMemoryConversationSummaryMemory,让你的 Agent 能够记住对话历史,实现真正的多轮对话上下文理解。
  4. 探索本地模型替代方案:使用Ollama本地运行Qwen2.5Llama 3.2DeepSeek Coder等开源模型,完全在本地环境中构建 Agent,关注其性能、效果与云端 API 的差异。

AI Agent 的开发是一个迭代和探索的过程。从今天这个能进行简单计算和搜索的“小助手”出发,你可以通过不断集成新的工具、优化提示词和架构,逐步构建出能够自动化处理复杂工作流的强大智能体。建议将本文的代码作为起点,保存好你的虚拟环境配置,在后续的探索中不断扩展和优化。