
使用LangChain构建你的第一个AI AgentLangChain 是目前最成熟的 AI Agent 开发框架之一。本文将从零开始带你用 LangChain 构建一个具备工具调用能力的完整 Agent。一、环境准备pip install langchain langchain-openai langchain-community需要准备 OpenAI API Key或其他支持的模型提供商。二、核心概念速览LangChain 的 Agent 由以下几个核心组件构成Agent LLM Prompt Tools AgentExecutor组件 作用 ------------LLM大脑负责推理和决策Prompt指导Agent如何思考的系统提示Tools外部工具如搜索、计算、数据库等AgentExecutor执行循环管理 Thought-Action-Observation 流程三、Step by Step 构建 AgentStep 1定义工具工具是 Agent 能力的延伸。LangChain 提供了丰富的内置工具也支持自定义。from langchain.tools import Toolfrom langchain_community.tools import DuckDuckGoSearchRun内置搜索工具search DuckDuckGoSearchRun()自定义计算工具def calculator(expression: str) - str: 执行数学计算 try: result eval(expression, {__builtins__: {}}, {}) return f计算结果: {result} except Exception as e: return f计算错误: {e}工具列表tools [ Tool( nameweb_search, funcsearch.run, description用于搜索互联网上的实时信息如新闻、天气、股价等 ), Tool( namecalculator, funccalculator, description用于执行数学计算如加减乘除、复杂表达式等 )]Step 2创建 LLMfrom langchain_openai import ChatOpenAIllm ChatOpenAI( modelgpt-4, temperature0, api_keyyour-api-key # 或设置环境变量 OPENAI_API_KEY)Step 3构建 AgentLangChain 提供了多种 Agent 类型。对于初学者推荐create_react_agentfrom langchain.agents import create_react_agent, AgentExecutorfrom langchain import hub使用官方推荐的 ReAct Promptprompt hub.pull(hwchase17/react)创建 Agentagent create_react_agent(llm, tools, prompt)创建执行器agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, # 打印执行过程 max_iterations5, # 最大循环次数防止无限循环 handle_parsing_errorsTrue # 自动处理解析错误)Step 4运行 Agent# 测试问题需要搜索和计算response agent_executor.invoke({ input: 2024年特斯拉的股价涨幅是多少先搜索股价信息然后计算涨幅百分比。})print(response[output])运行输出示例 Entering new AgentExecutor chain...I need to search for Teslas stock price information in 2024.Action: web_searchAction Input: 2024 Tesla stock price TSLAObservation: Tesla stock price in 2024 ranged from approximately $140 to $400...Now I need to calculate the percentage increase.Action: calculatorAction Input: (400 - 140) / 140 * 100Observation: 计算结果: 185.714...Final Answer: 2024年特斯拉股价涨幅约为185.7%从约140美元上涨到约400美元。 Finished chain.四、添加记忆功能Agent 默认是无状态的每次调用都是独立会话。添加记忆后Agent 可以记住对话上下文。from langchain.memory import ConversationBufferMemoryfrom langchain.agents import AgentExecutor创建记忆memory ConversationBufferMemory( memory_keychat_history, return_messagesTrue)构建带记忆的 Agentagent_executor AgentExecutor.from_agent_and_tools( agentagent, toolstools, memorymemory, verboseTrue)第一轮对话agent_executor.invoke({input: 我叫张三})第二轮对话Agent 能记住名字agent_executor.invoke({input: 我叫什么名字})五、进阶自定义 Agent 类型除了 ReActLangChain 还支持其他 Agent 类型from langchain.agents import create_tool_calling_agentTool Calling Agent适合结构化工具调用prompt_tool hub.pull(hwchase17/openai-tools-agent)agent_tool create_tool_calling_agent(llm, tools, prompt_tool)executor_tool AgentExecutor(agentagent_tool, toolstools, verboseTrue)Agent 类型 适用模型 | 特点 --------------------|------react通用 | 经典 ReAct兼容性好openai-toolsGPT-4/GPT-3.5 | 原生 Function Calling效率高structured-chat通用 | 支持结构化输出六、常见问题与调试1. Agent 不调用工具检查工具description是否清晰增加 Prompt 中的工具说明降低temperature提高确定性2. 循环次数过多设置max_iterations限制优化工具描述让 Agent 更快找到答案添加early_stopping_methodgenerate3. 解析错误设置handle_parsing_errorsTrue使用更强大的模型如 GPT-4检查 Prompt 格式是否正确七、完整代码汇总from langchain_openai import ChatOpenAIfrom langchain.tools import Toolfrom langchain_community.tools import DuckDuckGoSearchRunfrom langchain.agents import create_react_agent, AgentExecutorfrom langchain.memory import ConversationBufferMemoryfrom langchain import hubimport os设置API Keyos.environ[OPENAI_API_KEY] your-api-key工具定义search DuckDuckGoSearchRun()tools [ Tool(nameweb_search, funcsearch.run, description搜索互联网信息), Tool(namecalculator, funclambda x: f结果: {eval(x)}, description数学计算)]模型llm ChatOpenAI(modelgpt-4, temperature0)Agentprompt hub.pull(hwchase17/react)agent create_react_agent(llm, tools, prompt)记忆 执行器memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue)executor AgentExecutor.from_agent_and_tools( agentagent, toolstools, memorymemory, verboseTrue)运行result executor.invoke({input: 今天北京天气怎么样})print(result[output])总结本文介绍了用 LangChain 构建 Agent 的完整流程从环境搭建、工具定义、Agent 创建到执行器配置。掌握这些基础后你可以进一步探索多 Agent 协作、自定义 Agent 逻辑等高级话题。---下一篇文章将深入讲解Agent 的记忆机制包括短期记忆和长期记忆的实现方案敬请期待