Langchain(九)create_agent详解
LangChain 1.0引入全新create_agent() API,将Agent升级为具备上下文感知和决策能力的智能运行体。该API通过统一架构将语言模型与工具集结合,支持复杂任务的推理与执行。基于LangGraph的底层架构提供了结构化执行、状态管理和深度定制能力,显著提升了生产环境的可靠性。相较于早期分散的代理类型,create_agent()实现了统一调用方式,简化了开发流程。示例展示了
介绍
LangChain 1.0 的重磅变化之一,就是引入了全新的 create_agent() API。至此,LangChain 的 Agent 不再只是简单的“模型调用器”,而是一个可感知上下文、具备决策与执行能力的 智能运行体(Intelligent Runtime Unit)。
1.1 create_agent简介:现代统一代理API
create_agent函数是LangChain中用于构建可靠大型语言模型(LLM)代理的单一、生产就绪型实现 。其核心作用是将语言模型(作为推理引擎)与工具集(作为行动层)相结合,创建出能够对复杂任务进行推理、自主决定使用何种工具,并通过迭代流程寻找解决方案的系统 。
在生产环境中,create_agent通过抽象底层图形定义和状态转换的复杂性,提供了一种简洁且高效的代理构建方法。它标志着LangChain代理设计理念的重大进步,将重点从分散的、模板特定的代理类型(例如早期显式的ReAct实现)转移到统一、灵活的架构上来 。
1.2 create_agent在生产LLM系统中的作用
对于需要部署到生产环境中的LLM应用而言,可靠性、可控性和可扩展性至关重要。create_agent通过其底层架构LangGraph提供了关键的支持:
- 可靠性与结构化执行: 基于LangGraph的图形运行时确保了代理执行的每一步都是结构化和可预测的 。这种结构化执行是实现高效调试、可追溯性(通过跟踪)和最终系统可靠性的基础 。
- 状态管理与容错性: 代理必须能够处理多轮对话和长期任务。LangGraph提供的内置状态管理能力,以及基于检查点(Checkpointing)的机制,使得代理即使在遇到中断或系统故障时,也能从已知的良好状态恢复 。
- 深度定制能力: 尽管
create_agent提供了一个预构建的、开箱即用的执行流程,但它通过middleware(中间件)参数暴露了对核心代理循环的深层控制权 。这允许开发人员根据特定的企业要求,实现如动态模型选择、安全防护(Guardrails)或人机协作(Human-in-the-Loop)等高级功能 。
在 LangChain 0.x 时代,Agent 系统经历了“碎片化”阶段:
create_react_agent → 思维链推理;
create_structured_chat_agent → 结构化对话;
create_tool_calling_agent → 工具调用。
这种设计灵活但分散,导致学习曲线陡峭、模块难以复用。而在 1.0 版本中,所有入口被统一为 create_agent(),接下来我们通过一个简单的示例来演示:
例子一
1.1 依赖安装
首先确保安装所需依赖包,本文案例基于阿里云通义千问模型,需安装以下核心库:
pip install langchain langchain-openai python-dotenv pydantic
1.2 环境配置
创建 .env 文件存放 API 密钥(避免硬编码):
DASHSCOPE_API_KEY=你的阿里云通义千问API密钥
import os
from dotenv import load_dotenv
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
from pydantic import SecretStr
load_dotenv()
llm = ChatOpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
model="qwen-plus",
api_key=SecretStr(os.environ["DASHSCOPE_API_KEY"]),
)
# 直接调用大模型
print(llm.invoke("你是谁").content)
agent = create_agent(llm,
system_prompt="你叫老王,是我的专属学习伙伴")
# 封装成Agent,再调用大模型
print(agent.invoke(
{"messages":[{"role":"user","content":"你是谁"}]}
)["messages"])
1.3 代码核心解释
(1)LLM 初始化
base_url:指定阿里云通义千问兼容 OpenAI 接口的地址,实现用 OpenAI 的调用方式访问千问模型;model:选择具体的模型版本(如 qwen-plus、qwen-turbo 等);SecretStr:Pydantic 提供的安全类型,避免 API 密钥以明文形式暴露。
(2)直接调用 LLM
llm.invoke("问题") 是最基础的调用方式,返回的对象包含 content 字段(模型回复内容),此时模型使用默认的系统提示词,无个性化设定。
(3)create_agent 核心用法
- 入参:
llm:必须传入初始化好的 LLM 实例(如 ChatOpenAI);system_prompt:自定义系统提示词,用于设定 Agent 的角色、性格、回答规则;
- 调用格式:Agent 的调用需传入字典格式的参数
{"messages": [{"role":"user","content":"问题"}]},符合 LangChain 的消息交互规范; - 返回值:返回的字典中
messages是消息列表,包含用户提问和 Agent 回复,最后一条即为助手的回答。 
更多推荐



所有评论(0)