AI Agent白手起家51: 单智能体概念与 LangChain 开发实战
纲要核心概念什么是单智能体单智能体 vs 多智能体的区别React框架观察、思考、行动循环技术栈与版本选择Python 3.10、LangChain 0.3、Pydantic v2依赖管理Poetry工具推荐VSCodeGitHub Copilot用LangChain创建第一个 Agent基本组成LLM、提示词、工具create_react_agent方法详解完整可运行示例一个带搜索工具的智能体开发环境搭建项目初始化与依赖配置关键版本兼容性说明Pydantic版本冲突解决LangGraph与多智能体简介工作流图、节点与边适用场景对比总结与相关度说明单智能体一个脑子多个工具在 AI 应用开发中智能体是指能够自主规划、调用工具并完成任务的程序。单智能体就是整个系统中只有一个决策中心所有工具都围绕它运转。可以这样理解你有一个大语言模型它就像一个大脑。当你提出需求时它会自己决定“先查知识库再调日历 API最后总结回复”而不是按预设的固定流程机械执行。这种自主规划能力是单智能体和普通Chain的最根本区别——后者像一条固定流水线而智能体能动态调整步骤。单智能体有几个显著特点结构简单一个 LLM 负责所有决策决策集中无需协调多个智能体资源消耗少响应速度快适合处理相对专一或中等复杂度的任务它的核心运行机制被称为React。这可不是前端框架而是Reasoning Acting的缩写即“推理与行动”循环。需要工具已有答案用户输入观察思考行动 调用工具最终回复当用户输入到来智能体首先观察当前状态然后思考下一步该做什么。如果判断需要获取外部信息就行动——调用工具工具返回结果后它再次观察新信息重新思考……如此循环直到得出最终答案。LangChain 中的create_react_agent正是这一理念的标准实现。LangChain 中创建智能体的基本方法在LangChain 0.3中虽然官方推荐将复杂多智能体迁移到LangGraph但单智能体的开发依然保留在langchain核心包里并且提供了一个极其重要的基础方法create_react_agent。绝大多数封装好的智能体如create_tool_calling_agent、create_json_agent等都是基于这个方法的扩展。因此掌握它就意味着掌握了单智能体的根基。创建最简单的智能体需要三个元素一个大语言模型负责推理和生成一个提示词模板定义智能体的角色和行为一组工具可以是搜索 API、数据库查询、自定义函数等下面我们一步一步搭建一个可运行的搜索智能体。开发环境准备首先确保系统已安装 Python 3.10 或更高版本。为避免依赖混乱建议使用Poetry管理虚拟环境。创建一个新项目目录并初始化mkdirfirst-agentcdfirst-agent poetry init-n编辑生成的pyproject.toml添加依赖[tool.poetry.dependencies] python ^3.10 langchain ^0.3 langchain-openai ^0.2 langchain-community ^0.3 python-dotenv ^1.0然后安装poetryinstall特别注意LangChain 0.3严格要求Pydantic v2。如果环境中误装了Pydantic v1运行时会直接报错。遇到此类问题可以通过poetry add pydantic^2强制锁定版本。推荐使用VSCode配合GitHub Copilot编码能极大降低学习曲线。IDE 中的 AI 助手可以帮你补全代码、解释错误甚至将自然语言需求直接转换为函数实现。动手写第一个 Agent带搜索功能的助手项目结构first-agent/ ├── agent.py ├── .env └── pyproject.toml在.env文件中写入你的 API KeyOPENAI_API_KEYsk-xxxx SERPAPI_API_KEYxxxx我们使用SerpAPI作为搜索工具需要去 serpapi.com 注册获取免费 key当然你也可以替换为Tavily或其他任何Tool。完整代码agent.pyimportosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_react_agent,AgentExecutorfromlangchain.toolsimportToolfromlangchain.promptsimportPromptTemplatefromlangchain_community.utilitiesimportSerpAPIWrapper# 加载环境变量load_dotenv()# 1. 初始化 LLMllmChatOpenAI(modelgpt-3.5-turbo,temperature0)# 2. 定义工具在线搜索searchSerpAPIWrapper()tools[Tool(nameSearch,funcsearch.run,description当你需要回答关于实时事件或未知事实时使用此工具进行网络搜索。)]# 3. 编写提示词模板必须包含 tools、tool_names、agent_scratchpad 等占位符template你是一个乐于助人的助手可以使用工具来回答问题。 可用的工具有 {tools} 工具名称{tool_names} 使用以下格式进行推理 Question: 需要回答的问题 Thought: 你应该思考要做什么 Action: 要使用的工具名称必须是 [{tool_names}] 之一 Action Input: 工具的输入 Observation: 工具返回的结果 ... (这个 Thought/Action/Action Input/Observation 可以重复多次) Thought: 我现在知道最终答案了 Final Answer: 对原始问题的最终回答 开始 Question: {input} Thought: {agent_scratchpad}promptPromptTemplate.from_template(template)# 4. 创建 react agent 和执行器agentcreate_react_agent(llmllm,toolstools,promptprompt)agent_executorAgentExecutor(agentagent,toolstools,verboseTrue,handle_parsing_errorsTrue,)# 5. 执行if__name____main__:question2024年诺贝尔物理学奖颁给了谁responseagent_executor.invoke({input:question})print(智能体回答,response[output])运行poetry run python agent.py你将看到完整的思考过程智能体会自动判断需要搜索调用工具然后整合结果给出最终答案。解读create_react_agent将 LLM、工具和提示词绑定在一起返回一个可执行的智能体。AgentExecutor负责管理循环执行、工具调用和错误处理。提示词中的{agent_scratchpad}用于存放中间推理过程这使得模型能逐步推进思考。这个例子虽然简单但已经完整呈现了单智能体的骨架。在此基础上你可以轻松添加更多工具如知识库检索、日历 API构建出像“小浪助手”一样功能丰富的钉钉智能客服。单智能体 vs 多智能体何时升级当任务变得复杂、需要并行处理或跨领域协同时单智能体可能力不从心。此时就需要引入多智能体系统。LangGraph是 LangChain 生态中专门为多智能体设计的工作流框架。它用图来组织流程每个节点可以是一个智能体、一个工具或一段LCEL链边则控制数据流转方向。StartAgent 主管Agent 研究员Agent 写手搜索工具知识库工具文档生成End多智能体系统扩展性更强可以像公司团队一样分工协作但也带来了通信成本、状态同步等新挑战。官方建议简单场景用单智能体复杂场景用 LangGraph 构建多智能体。总结本文从单智能体的核心概念出发结合React框架原理给出了使用LangChain 0.3创建第一个智能体的完整可运行代码。同时梳理了Pydantic v2兼容性等常见环境问题并对多智能体技术路线做了前瞻性介绍。掌握这些内容后你就能顺利进入下一阶段——亲手打造一个接入钉钉的日程助手。