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 并非万能,理解其擅长与不擅长的领域,是设计高效系统的前提。
适用场景:
- 多步骤任务自动化:例如,根据用户需求“帮我分析上个月销售额下降的原因,并生成一份总结报告”,Agent 可以自动执行“查询数据库 -> 数据清洗 -> 调用分析模型 -> 生成图文报告 -> 发送邮件”等一系列操作。
- 动态信息获取与处理:需要实时查询网络信息、调用第三方 API(如天气、股票、地图)并基于结果进行决策的任务。
- 复杂决策与规划:在给定约束条件下(如预算、时间),规划最优方案,例如旅行行程规划、项目资源调度。
- 人机协同交互:作为数字员工,在特定领域(如客服、技术支持)中与用户进行多轮对话,并实际操作系统解决问题。
使用边界与注意事项:
- 可靠性依赖 LLM 与工具:Agent 的“思考”质量受底层 LLM 影响,“行动”能力受所集成工具的稳定性和准确性制约。需对关键环节设置人工审核或回退机制。
- 成本与延迟:频繁调用 LLM(尤其是高性能闭源 API)会产生显著成本。复杂的思考-行动循环也会增加任务完成延迟,不适合对实时性要求极高的场景。
- 安全与合规:
- 工具权限:严格控制 Agent 可调用的工具权限,避免其执行危险操作(如删除文件、发送邮件)。
- 数据隐私:确保流经 Agent 的数据符合隐私法规,避免敏感信息泄露。
- 内容合规:对 Agent 生成的内容进行审核,防止产生有害或违规信息。
- “幻觉”与错误累积:LLM 可能产生错误推理或“幻觉”,导致 Agent 制定错误计划或调用错误工具。错误可能在多步骤任务中累积放大。
- 不适用于简单、确定性的任务:对于简单的数据查询、格式转换等任务,使用传统脚本或工作流引擎更高效、可靠。
3. 环境准备与前置条件
我们将以LangChain + OpenAI API作为基础环境进行演示。这是最快速的上手路径,无需本地部署大模型。
基础环境:
- 操作系统:Windows 10/11, macOS, Linux (Ubuntu 20.04+) 均可。
- Python:版本 3.8 或更高。推荐使用 3.10。
- 包管理工具:
pip或conda。
核心依赖:
- OpenAI API Key:这是本次实操的“燃料”。你需要注册 OpenAI 平台并获取一个有效的 API Key。注意保管,不要泄露。
- 可选本地 LLM:如果你想完全本地运行,可以使用Ollama或LM Studio在本地运行开源模型(如 Llama 3.2, Qwen2.5),并将 LangChain 的 LLM 指向本地服务。这需要你的机器有足够的内存(通常 16GB+ 为佳)。
环境检查清单:在开始前,请确保完成以下步骤:
- 打开终端或命令提示符。
- 运行
python --version检查 Python 版本。 - 运行
pip --version确保 pip 可用。 - 准备好你的 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-dotenvlangchain: 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。验证点:
- 自主选择工具:Agent 正确识别了问题类型,选择了
Calculator或Search工具。 - 正确格式化输入:它将自然语言问题转化成了工具能理解的输入格式(如
125 ** 0.5)。 - 整合结果并回答:它接收工具返回的结果,并组织成自然语言回复给用户。
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:调用
Search工具,查询“AI Agent 最新发展”。 - 观察1:获得模拟的搜索结果。
- 思考:基于搜索到的信息,总结特点。然后需要估算代码量,这可能涉及计算或经验判断。
- 行动2:它可能直接基于知识回答,也可能尝试调用
Calculator(虽然不适用),最终会利用 LLM 的内在知识给出一个估算范围(例如:“基于 LangChain,一个基础 Agent 原型可能只需 50-100 行代码。”)。 - 最终回答:将两部分信息整合,给出连贯的回答。
这个测试验证了 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']}")关键点:
- 异步处理:使用
asyncio和aiohttp提高 I/O 密集型任务效率。 - 并发控制:通过
TCPConnector(limit=max_concurrent)控制同时发起的请求数,防止压垮服务或触发速率限制。 - 错误处理:每个任务独立处理异常,避免单个任务失败导致整个批次中断。
- 结果收集:使用
asyncio.gather收集所有任务结果,便于后续分析。
7. 资源占用与性能观察
AI Agent 系统的性能主要取决于 LLM 的响应速度和工具执行的效率。
1. 性能观测指标:
- 端到端延迟:从用户提问到收到最终答案的总时间。可使用 Python 的
time模块在 API 调用前后计时。 - Token 消耗:每次调用 LLM 消耗的输入和输出 Token 数,直接关联成本。OpenAI API 的响应头中通常包含
usage字段。 - 工具调用次数:复杂任务可能涉及多次工具调用,每次调用都有网络或计算开销。
- Agent “思考”时间:即 LLM 生成“Thought”和“Action”的时间,这通常是主要的耗时环节。
2. 优化建议:
- 选择合适的 LLM:对于简单工具调用,
gpt-4o-mini或gpt-3.5-turbo比gpt-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 时报错AuthenticationError | OpenAI 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_iterations或max_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 应用。
- 从简单开始,逐步复杂化:不要一开始就设计包含数十个工具的复杂 Agent。从一个明确的工具和一个清晰的任务开始,验证整个流程(感知->规划->行动->观察)能跑通,再逐步增加工具和逻辑。
- 精心设计工具描述(Description):工具的描述是 Agent 选择工具的主要依据。描述应准确、简洁,并包含输入输出的示例格式。好的描述能极大提升工具调用的准确率。
- 实施严格的输入验证与清理:永远不要信任来自用户或上游系统的输入。在工具函数内部,对输入进行严格的验证、类型转换和清理,防止注入攻击或意外错误。
- 为 Agent 设置明确的边界:通过系统提示词(System Prompt)明确告诉 Agent 它的角色、能力范围和禁止事项。例如,“你是一个数学计算助手,只能使用提供的计算器工具,不能回答与数学无关的问题。”
- 实现日志记录与可观测性:记录 Agent 完整的思考链(Chain-of-Thought)、工具调用记录和最终输出。这对于调试复杂问题、优化提示词和分析成本至关重要。考虑使用 LangSmith 等专门的可观测性平台。
- 成本监控与优化:如果使用按 Token 计费的云 API,必须监控使用量。设置预算警报,并对高频或高消耗的查询进行优化,例如通过缓存、使用更小模型或优化提示词来减少 Token 消耗。
- 设计人机回退(Human-in-the-loop)机制:对于关键任务或高风险操作(如发送邮件、修改数据库),设计审批流程,让 Agent 在执行前请求人类确认。
- 进行全面的测试:不仅测试常规用例,更要测试边缘用例和对抗性输入。模拟工具失败、网络超时、LLM 返回不合理内容等情况,确保你的 Agent 系统能够优雅处理。
10. 总结与下一步
通过本文的实战演练,你应该已经掌握了 AI Agent 的核心概念,并在本地成功搭建并测试了一个具备工具调用能力的智能体。我们从一个简单的计算器和模拟搜索工具入手,验证了 Agent 的自主规划、决策和执行能力,并将其封装成了可对外提供服务的 API,最后探讨了批量处理任务的方法。
最值得尝试的下一步:
- 集成真实工具:将模拟的
search_web工具替换为真实的 SerperAPI、Google Search API 或 Tavily Search API,让你的 Agent 真正具备获取实时信息的能力。 - 尝试多智能体(Multi-Agent)系统:使用CrewAI或AutoGen框架,创建多个具有不同角色(如研究员、写手、校对员)的 Agent,让它们协作完成一个更复杂的项目,如撰写市场分析报告。
- 为 Agent 添加记忆(Memory):使用 LangChain 的
ConversationBufferMemory或ConversationSummaryMemory,让你的 Agent 能够记住对话历史,实现真正的多轮对话上下文理解。 - 探索本地模型替代方案:使用Ollama本地运行Qwen2.5、Llama 3.2或DeepSeek Coder等开源模型,完全在本地环境中构建 Agent,关注其性能、效果与云端 API 的差异。
AI Agent 的开发是一个迭代和探索的过程。从今天这个能进行简单计算和搜索的“小助手”出发,你可以通过不断集成新的工具、优化提示词和架构,逐步构建出能够自动化处理复杂工作流的强大智能体。建议将本文的代码作为起点,保存好你的虚拟环境配置,在后续的探索中不断扩展和优化。