[ PROMPT_NODE_22210 ]
Agents Langchain 智能体
[ SKILL_DOCUMENTATION ]
# LangChain 智能体指南
关于使用 ReAct、工具调用和流式处理构建智能体的完整指南。
## 什么是智能体 (Agents)?
智能体将语言模型与工具相结合,通过推理和行动来解决复杂任务:
1. **推理 (Reasoning)**:大模型决定做什么
2. **行动 (Acting)**:根据推理执行工具
3. **观察 (Observation)**:接收工具返回的结果
4. **循环 (Loop)**:重复上述过程直到任务完成
这就是 **ReAct 模式** (Reasoning + Acting)。
## 基础智能体创建
python
from langchain.agents import create_agent
from langchain_anthropic import ChatAnthropic
# 定义工具
def calculator(expression: str) -> str:
"""计算数学表达式。"""
return str(eval(expression))
def search(query: str) -> str:
"""搜索信息。"""
return f"搜索结果: {query}"
# 创建智能体
agent = create_agent(
model=ChatAnthropic(model="claude-sonnet-4-5-20250929"),
tools=[calculator, search],
system_prompt="你是一个乐于助人的助手。在需要时使用工具。"
)
# 运行智能体
result = agent.invoke({
"messages": [{"role": "user", "content": "25 * 17 等于多少?"}]
})
print(result["messages"][-1].content)
## 智能体组件
### 1. 模型 - 推理引擎
python
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
# OpenAI
model = ChatOpenAI(model="gpt-4o", temperature=0)
# Anthropic (更适合复杂推理)
model = ChatAnthropic(model="claude-sonnet-4-5-20250929", temperature=0)
# 动态模型选择
def select_model(task_complexity: str):
if task_complexity == "high":
return ChatAnthropic(model="claude-sonnet-4-5-20250929")
else:
return ChatOpenAI(model="gpt-4o-mini")
### 2. 工具 - 智能体可执行的动作
python
from langchain.tools import tool
# 简单的函数工具
@tool
def get_current_time() -> str:
"""获取当前时间。"""
from datetime import datetime
return datetime.now().strftime("%H:%M:%S")
# 带参数的工具
@tool
def fetch_weather(city: str, units: str = "fahrenheit") -> str:
"""获取城市天气。
参数:
city: 城市名称
units: 温度单位 (华氏度 fahrenheit 或 摄氏度 celsius)
"""
# 在此处调用天气 API
return f"{city} 的天气: 72°{units[0].upper()}"
# 带错误处理的工具
@tool
def risky_api_call(endpoint: str) -> str:
"""调用可能失败的外部 API。"""
try:
response = requests.get(endpoint, timeout=5)
return response.text
except Exception as e:
return f"调用 API 出错: {str(e)}"
### 3. 系统提示词 - 智能体行为
python
# 通用助手
system_prompt = "你是一个乐于助人的助手。在需要时使用工具。"
# 领域专家
system_prompt = """你是一位金融分析助手。
- 使用计算器进行精确计算
- 搜索最新的金融数据
- 提供数据驱动的建议
- 始终引用你的来源"""
# 受限智能体
system_prompt = """你是一位客户支持..."""