介绍

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提供了关键的支持:

  1. 可靠性与结构化执行: 基于LangGraph的图形运行时确保了代理执行的每一步都是结构化和可预测的 。这种结构化执行是实现高效调试、可追溯性(通过跟踪)和最终系统可靠性的基础 。
  2. 状态管理与容错性: 代理必须能够处理多轮对话和长期任务。LangGraph提供的内置状态管理能力,以及基于检查点(Checkpointing)的机制,使得代理即使在遇到中断或系统故障时,也能从已知的良好状态恢复 。
  3. 深度定制能力: 尽管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 回复,最后一条即为助手的回答。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐