首页 / 资讯中心 / 文章详情

LangChain Agent 从入门到实战:创建与调用参数全解析

LangChain Agent 从入门到实战:创建与调用参数全解析 ★ FEATURED ARTICLE
本文基于 LangChain v1 / LangGraph 的 Agent 体系系统梳理create_agent创建时和invoke调用时的关键参数帮你彻底搞懂记忆和会话隔离是怎么实现的。一、从一个例子说起先看一段很多教程里都会出现的代码pythonfrom langchain.messages import HumanMessage # 设定 thread_id作为会话标识 config {configurable: {thread_id: thread_1}} # 第一次调用告知 AI 我的信息 response agent.invoke( {messages: [HumanMessage(content你好我叫虎哥我最喜欢猫猫。)]}, config # 调用时添加 thread_id区分不同会话 ) print(response)这段代码的核心是会话记忆Memory/ 多轮对话。它通过thread_id区分不同会话让 AI 能记住上下文。但很多初学者会有疑问thread_id到底是什么为什么能记住我说的话创建 Agent 时哪些参数必须传invoke时又能传哪些参数下面逐个拆解。二、创建 Agent 时的关键参数结论先行只有model是强制必须传的。tools虽然通常都会传但技术上可以为空此时 Agent 会退化为一个普通 LLM 调用。1. model必传必须传入一个支持工具调用的 LangChain 聊天模型。可以是模型字符串标识如openai:gpt-4o模型实例如ChatOpenAI(...)传实例时可以在实例化阶段配置温度、API Key 等所有底层参数。2. tools强烈建议传工具列表可以是BaseTool、普通函数或字典。如果不传或传空列表Agent 就没有工具调用循环基本等同于普通 LLM。3. checkpointer记忆的关键这是实现会话记忆的核心。如果不传checkpointer那么invoke时传的thread_id没有任何意义Agent 不会记住任何历史。常见的 checkpointerMemorySaver内存存储适合开发调试SqliteSaver/PostgresSaver持久化存储适合生产环境pythonfrom langgraph.checkpoint.memory import MemorySaver agent create_agent( modelopenai:gpt-4o, tools[...], checkpointerMemorySaver(), # 创建时就传之后 invoke 配 thread_id 才生效 )4. 其他重要可选参数参数作用system_prompt设定 Agent 角色和行为准则字符串会自动转 SystemMessageresponse_format需要结构化输出时传入如 Pydantic 模型middlewareLangChain v1 扩展机制用于人在回路、脱敏、对话摘要等state_schema/context_schema自定义状态字段或运行上下文interrupt_before/interrupt_after在agent或tools节点前后中断用于用户确认流程典型生产级写法pythonfrom langchain.agents import create_agent from langgraph.checkpoint.memory import MemorySaver agent create_agent( modelopenai:gpt-4o, # 必传 tools[search, calculator], # 通常必传 system_prompt你是一个助手, # 建议传 checkpointerMemorySaver(), # 需要记忆时必传 )三、invoke 调用时的关键参数agent.invoke()的参数分两块输入状态必须传和运行时配置 config可选但常用。1. 输入状态messages 是核心输入必须是一个包含messages键的字典支持几种写法。最简写法——消息对象列表pythonfrom langchain_core.messages import HumanMessage response agent.invoke({messages: [HumanMessage(content你好)]})字典写法——更简洁pythonresponse agent.invoke({messages: [{role: user, content: 你好}]})动态 system promptpythonagent.invoke({ messages: [ {role: system, content: 你是一个金融顾问}, {role: user, content: 什么是ETF} ] })完整对话历史把全部消息按顺序传入Agent 能感知完整上下文。2. config控制运行时行为config是第二个参数thread_id就在这里面。thread_id会话隔离config {configurable: {thread_id: thread_1}}python同一个 id 共享历史不同 id 相互隔离。这是多用户/多会话各自独立记忆的标准做法。recursion_limit递归限制控制 Agent 的最大循环次数默认 25 次。任务复杂、需要多轮工具调用时可能触顶可以调大pythonconfig { configurable: {thread_id: thread_1}, recursion_limit: 50 }其他字段config本质是 LangGraph 的RunnableConfig还支持callbacks、tags、metadata等通用运行时配置。3. 返回的是什么invoke返回的也是字典核心是messages列表包含本次执行产生的全部消息输入、AI 工具调用消息、工具返回结果、最终 AI 回答。通常取最后一条即可拿到最终答案pythonresponse[messages][-1].content四、完整示例验证记忆效果pythonfrom langchain.agents import create_agent from langchain_core.messages import HumanMessage from langgraph.checkpoint.memory import MemorySaver # 创建带记忆的 Agent agent create_agent( modelopenai:gpt-4o, tools[], checkpointerMemorySaver(), ) config {configurable: {thread_id: thread_1}} # 第一次告诉它信息 agent.invoke( {messages: [HumanMessage(content你好我叫虎哥我最喜欢猫猫。)]}, config ) # 第二次同一 thread_id它应该记得 response agent.invoke( {messages: [HumanMessage(content我叫什么喜欢什么)]}, config ) # 预期回答你叫虎哥最喜欢猫猫 # 换一个 thread_id它就失忆了 config2 {configurable: {thread_id: thread_2}} agent.invoke({messages: [HumanMessage(content我叫什么)]}, config2) # 预期回答不知道五、核心要点速查表创建 Agent 时参数是否必传作用model✅ 必传底层聊天模型tools强烈建议工具列表缺失则退化为普通 LLMcheckpointer需要记忆时必传按 thread_id 存取历史消息system_prompt建议角色与行为准则response_format按需结构化输出middleware按需人在回路、脱敏等扩展invoke 调用时参数位置关键字段作用第一个参数输入字典messages对话内容必须传第二个参数configconfigurable.thread_id会话隔离与记忆第二个参数configrecursion_limit控制最大循环次数六、一句话总结创建时决定Agent 有什么能力、记不记得住——model必传checkpointer决定记忆。调用时决定这次问什么、属于哪个会话——messages必传thread_id决定会话隔离。只有创建时配了checkpointer调用时的thread_id才有意义。搞懂这两组参数就掌握了 LangChain Agent 的核心用法。如果本文对你有帮助欢迎点赞、收藏、关注三连有问题欢迎评论区交流
阅读完成 · 觉得有帮助?
咨询建站