
LangChain Agent 是一个能“自主决策 调用工具”的 LLM 应用框架下面我将为你系统讲解 ✅ **什么是 LangChain Agent** ✅ **如何使用和开发它** ✅ **典型应用场景与最佳实践** ✅ **与普通 Chain 的区别** ✅ **最新演进如 LangGraph、自主代理**---## 一、什么是 LangChain Agent### 核心定义 **LangChain Agent 是一个能“自主决策 调用工具”的 LLM 应用框架**。 它让大语言模型LLM不仅能回答问题还能**动态选择并执行外部工具**如搜索、计算、数据库查询实现复杂任务的自动化。### 工作原理循环决策mermaidgraph LRA[用户输入] -- B{Agent (LLM)}B --|思考需要什么工具| C[工具选择]C -- D[调用工具brSearch / API / Code]D -- E[获取结果]E -- BB --|答案已完备| F[返回最终响应]- **关键能力****推理 → 行动 → 反思 → 再行动**- **与普通 Chain 的区别**- **Chain**固定流程A → B → C- **Agent**动态流程LLM 决定下一步做什么---## 二、LangChain Agent 的核心组件| 组件 | 作用 | 示例 ||------|------|------|| **LLM** | 决策大脑 | GPT-4, Claude, Llama3, Qwen || **Tools** | 可调用的外部能力 | Google Search, Python REPL, SQL DB, 自定义函数 || **Agent Executor** | 执行引擎 | 控制循环、限制步数、处理错误 || **Prompt Template** | 引导 LLM 思考 | “你可以使用以下工具...” |---## 三、如何使用 LangChain Agent代码示例### 场景让 AI 能上网查天气 做计算#### 步骤 1安装依赖bashpip install langchain langchain-openai langchain-community duckduckgo-search#### 步骤 2定义 Toolspythonfrom langchain.agents import Toolfrom langchain_community.utilities import DuckDuckGoSearchAPIWrapperfrom langchain_openai import ChatOpenAI# 工具1网络搜索search DuckDuckGoSearchAPIWrapper()search_tool Tool(nameSearch,funcsearch.run,descriptionuseful for when you need to answer questions about current events)# 工具2Python 计算器def calculator(expr: str) - str:return str(eval(expr)) # 注意生产环境需安全沙箱calc_tool Tool(nameCalculator,funccalculator,descriptionuseful for math calculations)#### 步骤 3创建 Agentpythonfrom langchain import hubfrom langchain.agents import create_openai_functions_agent, AgentExecutor# 拉取官方 prompt 模板prompt hub.pull(hwchase17/openai-functions-agent)llm ChatOpenAI(modelgpt-4-turbo, temperature0)# 创建 agent使用 OpenAI Functions 调用协议agent create_openai_functions_agent(llm, [search_tool, calc_tool], prompt)# 执行器agent_executor AgentExecutor(agentagent, tools[search_tool, calc_tool], verboseTrue)#### 步骤 4运行pythonresponse agent_executor.invoke({input: 今天北京天气如何如果明天降温5度会是多少度})print(response[output])✅ **输出示例** “今天北京晴25°C。如果明天降温5度则为20°C。” **背后发生了什么** 1. LLM 决定先搜索“北京天气” 2. 调用 Search 工具 → 得到“25°C” 3. LLM 决定计算 25 - 5 4. 调用 Calculator → 得到“20” 5. 整合答案返回---## 四、如何开发自定义 Agent### 方法 1使用内置 Agent 类型推荐初学者LangChain 提供多种预设 Agent| Agent 类型 | 适用场景 | 特点 ||----------|--------|------|| **OpenAI Functions** | GPT-4 用户 | 利用 function calling高效准确 || **React** | 通用 LLM | 基于 ReAct 推理框架Thought/Action/Observation || **Self-Ask** | 简单问答 | 通过自问自答分解问题 || **Plan-and-Execute** | 复杂任务 | 先规划步骤再逐个执行 | ✅ **推荐**优先用 OpenAI Functions Agent性能最好### 方法 2自定义 Agent高级通过继承 BaseSingleActionAgent 实现完全控制逻辑适用于- 多模态输入图像文本- 自定义推理协议- 企业级审计日志---## 五、典型应用场景### 1. **智能客服机器人**- 工具订单查询 API 退款政策 DB 邮件发送- 能力自动查订单、判断是否可退款、发邮件通知### 2. **数据分析助手**- 工具SQL 查询 Python (Pandas) Matplotlib- 示例“上季度销售额最高的产品是什么画个柱状图”### 3. **自动化办公**- 工具Google Calendar API Gmail Docs- 能力自动安排会议、写周报、发提醒### 4. **科研文献助手**- 工具Semantic Scholar API PDF 解析 向量检索- 能力“找近3年关于 RLHF 的综述并总结核心挑战”### 5. **游戏 NPC非 RL**- 工具游戏状态 API 对话生成- 能力NPC 根据玩家行为动态生成剧情对话 ⚠️ **注意**LangChain Agent **不适合实时控制**如打游戏因其延迟高秒级应使用 RL。---## 六、高级演进LangGraph 与自主代理LangChain 最新推出 **LangGraph**支持**有状态、多角色、循环工作流**的 Agent### 示例双 Agent 协作研究员 批判者pythonfrom langgraph.graph import StateGraph, ENDclass AgentState(TypedDict):task: strplan: strcriticism: strfinal_answer: strdef research_node(state: AgentState) - AgentState:# 研究员生成方案...def critique_node(state: AgentState) - AgentState:# 批判者提意见...workflow StateGraph(AgentState)workflow.add_node(researcher, research_node)workflow.add_node(critic, critique_node)workflow.set_entry_point(researcher)workflow.add_edge(researcher, critic)workflow.add_conditional_edges(critic, should_continue, {True: researcher, False: END})app workflow.compile()result app.invoke({task: 如何降低数据中心能耗}) ✅ **适用场景** - 多轮反思优化如写论文、写代码 - 多专家协作医生药师保险顾问---## 七、最佳实践与避坑指南| 问题 | 建议 ||------|------|| **工具太多导致混乱** | 限制工具数量5个明确描述用途 || **无限循环** | 设置 max_iterations10 || **幻觉调用不存在工具** | 在 prompt 中严格限定可用工具列表 || **安全风险** | 禁用 eval()用 ast.literal_eval 或沙箱 || **成本过高** | 缓存工具结果如相同搜索不重复调用 |---## 八、总结LangChain Agent 的价值| 维度 | 说明 ||------|------|| **核心价值** | 让 LLM 从“聊天机器人”升级为“行动者” || **适用任务** | **需要外部信息 or 计算** 的复杂问题 || **不适用场景** | 实时控制、高频决策、确定性流程用 Chain 更好 || **技术栈** | LangChain LLM Tools Prompt Engineering || **未来方向** | 多 Agent 协作、长期记忆、自主目标设定 |---## 快速开始模板python# minimal_agent.pyfrom langchain.agents import AgentExecutor, create_openai_functions_agentfrom langchain_openai import ChatOpenAIfrom langchain_community.tools import DuckDuckGoSearchRunfrom langchain import hubtools [DuckDuckGoSearchRun()]llm ChatOpenAI(modelgpt-4-turbo)prompt hub.pull(hwchase17/openai-functions-agent)agent create_openai_functions_agent(llm, tools, prompt)executor AgentExecutor(agentagent, toolstools, verboseTrue)print(executor.invoke({input: 谁是2024年奥运会主办城市})) 官方文档https://python.langchain.com/docs/modules/agents/