AI Agent技术综述:LangChain、AutoGen与国产Agent框架深度对比
city: str"""查询指定城市的当前天气情况。Args:city: 城市名称,如"北京"、"上海"Returns:天气情况描述"""api_key = "your_api_key" # 实际使用时请使用环境变量try:return f"查询指定城市的当前天气情况。Args:city: 城市名称,如"北京"、"上海"Returns:天气情况描述。
·
AI Agent技术综述:LangChain、AutoGen与国产Agent框架深度对比
前言
AI Agent(智能体)是2024-2025年AI领域最火热的方向之一。与单一任务的AI助手不同,Agent能够自主规划、工具调用、多步骤推理并完成复杂任务。本文将系统介绍Agent的核心组件和主流框架。
一、AI Agent核心架构
1.1 四大核心组件
┌─────────────────────────────────────────────────┐
│ AI Agent │
├─────────────────────────────────────────────────┤
│ 🔍 Perception(感知层) │
│ - 多模态输入处理 │
│ - 环境状态监测 │
├─────────────────────────────────────────────────┤
│ 🧠 Brain(推理层) │
│ - LLM大模型核心 │
│ - 任务规划与拆解 │
│ - 短期/长期记忆 │
├─────────────────────────────────────────────────┤
│ 🔧 Tools(工具层) │
│ - 搜索引擎/知识库 │
│ - API调用/代码执行 │
│ - 文件读写/数据处理 │
├─────────────────────────────────────────────────┤
│ 🎯 Action(执行层) │
│ - 任务执行与反馈 │
│ - 自我反思与优化 │
│ - 多Agent协作 │
└─────────────────────────────────────────────────┘
1.2 ReAct范式
# ReAct(Reasoning + Acting)模式示例
def react_agent(query, tools, llm):
"""
思想链推理 + 工具调用的经典范式
"""
history = []
while not is_complete(query):
# Step 1: 推理
thought = llm.reason(f"""
当前任务: {query}
历史步骤: {history}
请分析当前状态,决定下一步行动。
""")
# Step 2: 决定是否调用工具
if should_use_tool(thought):
action, tool_name, tool_args = parse_action(thought)
result = tools[tool_name](**tool_args)
history.append({
"thought": thought,
"action": action,
"observation": result
})
else:
# 直接输出答案
return format_answer(thought)
return final_answer
二、主流Agent框架对比
2.1 LangChain / LangGraph
# LangGraph构建多步骤Agent
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
@tool
def search_web(query: str) -> str:
"""搜索互联网获取最新信息"""
# 搜索实现
return search(query)
@tool
def calculator(expression: str) -> str:
"""执行数学计算"""
return str(eval(expression))
# 创建Agent
model = ChatOpenAI(model="gpt-4-turbo")
tools = [search_web, calculator]
# 使用LangGraph的预建Agent
agent = create_react_agent(model, tools)
# 执行任务
result = agent.invoke({
"messages": [{"role": "user", "content": "查询2024年诺贝尔物理学奖得主,并计算他们年龄之和"}]
})
for message in result["messages"]:
print(f"{message.type}: {message.content}")
特点:
- 生态最完善
- 文档丰富
- 学习曲线平缓
2.2 AutoGen(微软)
# AutoGen多Agent对话
from autogen import ConversableAgent, GroupChat, GroupChatManager
# 定义助手Agent
assistant = ConversableAgent(
name="assistant",
system_message="你是一个专业的Python程序员,帮助用户编写高质量代码。",
llm_config={"model": "gpt-4"}
)
# 定义Critic Agent
critic = ConversableAgent(
name="critic",
system_message="你是一个代码审查专家,检查代码质量和潜在问题。",
llm_config={"model": "gpt-4"}
)
# 定义用户Agent(模拟用户)
user_proxy = ConversableAgent(
name="user",
is_cadical_proxy=True, # 自动代表用户回复
system_message="用户代表,接收结果并确认需求。"
)
# 启动群聊
group_chat = GroupChat(
agents=[assistant, critic, user_proxy],
messages=[],
max_round=10
)
manager = GroupChatManager(groupchat=group_chat)
# 启动对话
user_proxy.initiate_chat(
manager,
message="请用Python实现一个快速排序算法,并确保代码质量"
)
2.3 国产框架
2.3.1 百度AgentBuilder
# 百度千帆Agent开发
from qianfan import Qianfan
# 创建自定义工具
tools = [
{
"name": "weather_query",
"description": "查询城市天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
}
}
}
]
# 构建Agent
agent = Qianfan.build_agent(
model="ernie-4.0",
tools=tools,
system_prompt="你是天气助手,可以查询各城市天气情况。"
)
response = agent.run("北京今天天气怎么样?")
2.3.2 字节Coze
字节的Coze平台提供低代码Agent开发,支持快速构建和部署。
三、Tool工具开发实战
3.1 定义自定义工具
from langchain_core.tools import tool
import requests
from pydantic import BaseModel
class WeatherInput(BaseModel):
city: str
@tool(parse_docstring=True, args_schema=WeatherInput)
def get_weather(city: str) -> str:
"""
查询指定城市的当前天气情况。
Args:
city: 城市名称,如"北京"、"上海"
Returns:
天气情况描述
"""
api_key = "your_api_key" # 实际使用时请使用环境变量
url = f"https://api.weather.com/v3/wx/conditions/current"
try:
response = requests.get(url, params={"city": city, "key": api_key}, timeout=5)
data = response.json()
return f"{city}当前天气:{data['temp']}°C,{data['condition']},湿度{data['humidity']}%"
except Exception as e:
return f"查询失败:{str(e)}"
# 将工具注册到Agent
tools = [get_weather]
3.2 RAG工具集成
from langchain_community.retrievers import TavilySearchAPIRetriever
from langchain.tools.retriever_tool import create_retriever_tool
# 创建知识库检索工具
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
retriever_tool = create_retriever_tool(
retriever,
name="knowledge_base",
description="检索企业内部知识库,回答关于公司政策、流程等问题"
)
# 添加工具到Agent
agent = create_react_agent(model, [search_tool, retriever_tool, calculator])
四、Multi-Agent协作模式
4.1 平行竞争模式
用户任务
↓
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Agent A │ │ Agent B │ │ Agent C │
│ (方案1) │ │ (方案2) │ │ (方案3) │
└────┬────┘ └────┬────┘ └────┬────┘
↓ ↓ ↓
方案A 方案B 方案C
↓ ↓ ↓
└────────────┼────────────┘
↓
Judge Agent
↓
最佳方案
4.2 串行协作模式
# 串行协作:规划→执行→验证
planning_agent = ConversableAgent(name="planner", ...)
execution_agent = ConversableAgent(name="executor", ...)
verification_agent = ConversableAgent(name="verifier", ...)
# 规划Agent输出任务清单
tasks = planning_agent.generate_reply([
"用户需求:自动化部署Django应用到AWS"
])
# 执行Agent逐个完成任务
for task in tasks:
result = execution_agent.execute(task)
# 验证Agent检查结果
verification_agent.verify(result)
五、Memory记忆机制
5.1 记忆类型
| 类型 | 容量 | 用途 | 实现方式 |
|---|---|---|---|
| 短期记忆 | 单次对话 | 当前任务上下文 | Message History |
| 长期记忆 | 全会话 | 跨任务学习 | Vector Store |
| 情景记忆 | 关键事件 | 经验总结 | Summary + Embedding |
5.2 实现示例
from langchain.memory import ConversationSummaryMemory
from langchain_core.messages import HumanMessage, AIMessage
# 创建总结记忆
memory = ConversationSummaryMemory(
llm=model,
memory_key="chat_history",
return_messages=True
)
# 在Agent中使用记忆
agent = create_react_agent(
model,
tools,
memory=memory
)
# Agent自动管理和使用记忆
result = agent.invoke({"messages": [HumanMessage(content="用户请求")]})
六、总结与展望
AI Agent代表了从"工具"到"助手"的跃迁。主流框架LangChain和AutoGen各有优势,国产框架也在快速发展。未来Agent将向自主学习、长期记忆、多模态交互方向持续进化,逐渐成为数字世界的真正参与者。
推荐资源:
- LangChain文档:python.langchain.com
- AutoGen:microsoft.github.io/autogen
- 斯坦福AI Agent论文:Standing on the Shoulders of Giant Agents
更多推荐




所有评论(0)