1. 理解LangChain智能体的本质
在深入探讨三种构建方式之前,我们需要先理解LangChain智能体的核心架构。LangChain智能体本质上是一个基于Actor模型的执行引擎,采用Pregel计算模型实现。这种架构将智能体视为由节点和通道组成的图结构,每个节点代表一个处理单元,通道则负责节点间的消息传递。
1.1 Pregel模型与Actor模型
Pregel是Google提出的分布式图计算模型,其核心思想是"像顶点一样思考"。在LangChain中:
- 每个节点相当于Pregel中的一个顶点
- 通道相当于顶点间的消息传递机制
- 智能体的执行过程就是消息在这些顶点间的传播和处理
Actor模型则提供了并发处理的基础:
- 每个节点是独立的Actor
- 消息传递是异步的
- 状态隔离且不可变
这种架构使得LangChain智能体能够:
- 天然支持分布式执行
- 实现复杂的控制流
- 保持状态的一致性
1.2 LangChain智能体的核心组件
一个典型的LangChain智能体包含以下关键部分:
| 组件 | 类型 | 功能描述 |
|---|---|---|
| LLM | 节点 | 语言模型处理核心 |
| Tools | 节点 | 工具执行单元 |
| Messages | 通道 | 消息传递管道 |
| State | 全局 | 执行状态维护 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三种等效的Agent构建方式
2.1 使用create_agent工厂函数
这是最上层的封装方式,适合快速构建基础智能体。我们以天气查询为例:
python复制from langchain.agents import create_agent
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
load_dotenv()
def get_weather(city: str) -> str:
"""获取指定城市的天气信息"""
return f"{city}的天气是晴天!"
agent = create_agent(
model=ChatOpenAI(model="gpt-3.5-turbo"),
tools=[get_weather],
system_prompt="你是一个有用的助手",
)
message = HumanMessage(content="苏州天气怎么样?")
for step in agent.stream(
input={"messages": [message]},
stream_mode="values"
):
step["messages"][-1].pretty_print()
关键点解析:
create_agent内部自动处理了节点和通道的创建- 工具注册通过
tools参数完成 - 系统提示通过
system_prompt设置
注意:实际项目中建议将工具函数放在单独模块中,并通过配置文件管理模型参数。
2.2 采用LangGraph编程模式
这种方式提供了更细粒度的控制,适合需要自
