一、为什么需要 Agent 框架
从零构建 Agent 需要处理大量基础设施:LLM 调用管理、工具注册、记忆系统、规划引擎、错误处理等。Agent 框架封装了这些通用能力,让开发者能专注于业务逻辑。
二、主流框架全景
| 框架 | 维护方 | 语言 | 定位 | 开源 |
|---|---|---|---|---|
| LangChain / LangGraph | LangChain | Python/JS | 通用 Agent 框架 | ✅ |
| OpenAI Assistants API | OpenAI | Python/JS | 托管 Agent 服务 | ❌ |
| AutoGen | Microsoft | Python | 多 Agent 对话 | ✅ |
| CrewAI | CrewAI | Python | 角色协作 | ✅ |
| Dify | 腾讯系 | Python | 可视化 Agent 构建 | ✅ |
| Coze | 字节跳动 | Web | 零代码 Agent | ❌ |
| Semantic Kernel | Microsoft | Python/C# | 企业级 AI 编排 | ✅ |
三、LangChain / LangGraph
3.1 概述
LangChain 是最成熟的 Agent 开发框架,LangGraph 是其升级版,支持有向图定义 Agent 工作流。
3.2 核心能力
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
# 定义工具
tools = [
Tool(
name="search",
func=search_function,
description="搜索互联网获取最新信息"
),
Tool(
name="calculator",
func=calculate,
description="执行精确数学运算"
)
]
# 带记忆的 Agent
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
llm = ChatOpenAI(model="gpt-4")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
memory=memory,
max_iterations=10,
handle_parsing_errors=True
)
# LangGraph:定义有向图工作流
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node("reason", reasoning_node)
graph.add_node("action", action_node)
graph.add_node("reflect", reflection_node)
graph.add_edge("reason", "action")
graph.add_conditional_edges(
"action",
should_continue,
{"continue": "reflect", "end": END}
)
graph.add_edge("reflect", "reason")
app = graph.compile()3.3 优点与缺点
| ✅ 优点 | ❌ 缺点 |
|---|---|
| 生态最丰富,集成数百种工具 | 学习曲线陡峭 |
| 灵活的链式/图式工作流 | 抽象层次多,调试复杂 |
| 企业级监控(LangSmith) | 小项目过度设计 |
3.4 适用场景
复杂业务逻辑、需要精细控制工作流、企业级应用。
四、OpenAI Assistants API
4.1 概述
OpenAI 托管的 Agent 服务,无需自建基础设施。
4.2 快速上手
from openai import OpenAI
client = OpenAI()
# 创建助手
assistant = client.beta.assistants.create(
name="数据分析师",
instructions="你是数据分析专家,擅长 CSV 和 Excel 数据处理",
model="gpt-4-turbo",
tools=[
{"type": "code_interpreter"},
{"type": "file_search"},
{
"type": "function",
"function": {
"name": "query_database",
"description": "查询数据库",
"parameters": {
"type": "object",
"properties": {
"sql": {"type": "string"}
},
"required": ["sql"]
}
}
}
]
)
# 创建对话线程
thread = client.beta.threads.create()
# 发送消息
client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="分析这份销售数据,按月份统计增长率"
)
# 运行助手
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)
# 轮询等待结果
import time
while run.status in ["queued", "in_progress", "requires_action"]:
time.sleep(1)
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
if run.status == "requires_action":
# 处理工具调用
for tool_call in run.required_action.submit_tool_outputs.tool_calls:
result = execute_tool(tool_call)
# 提交结果
client.beta.threads.runs.submit_tool_outputs(
thread_id=thread.id,
run_id=run.id,
tool_outputs=[{
"tool_call_id": tool_call.id,
"output": json.dumps(result)
}]
)
# 获取最终消息
messages = client.beta.threads.messages.list(thread_id=thread.id)4.3 优点与缺点
| ✅ 优点 | ❌ 缺点 |
|---|---|
| 零基础设施,开箱即用 | 仅支持 OpenAI 模型 |
| 内置代码解释器和文件检索 | 定制化程度低 |
| 自动处理上下文管理 | 成本较高 |
4.4 适用场景
快速原型验证、不需要深度定制的 Agent 应用。
五、AutoGen(Microsoft)
5.1 概述
专注于多 Agent 对话的框架,支持 Agent 之间自由对话和协作。
5.2 核心用法
import autogen
# 配置 LLM
llm_config = {
"config_list": [{
"model": "gpt-4",
"api_key": "..."
}]
}
# 定义多个 Agent
assistant = autogen.AssistantAgent(
name="工程师",
llm_config=llm_config,
system_message="你是一名资深 Python 工程师,擅长编写高质量代码。"
)
critic = autogen.AssistantAgent(
name="评审员",
llm_config=llm_config,
system_message="你是一名严谨的代码评审员,找出所有潜在问题。"
)
user_proxy = autogen.UserProxyAgent(
name="用户",
human_input_mode="NEVER",
code_execution_config={
"work_dir": "coding",
"use_docker": False
}
)
# 启动群组对话
groupchat = autogen.GroupChat(
agents=[user_proxy, assistant, critic],
messages=[],
max_round=12
)
manager = autogen.GroupChatManager(
groupchat=groupchat,
llm_config=llm_config
)
user_proxy.initiate_chat(
manager,
message="写一个股票数据爬虫"
)5.3 优点与缺点
| ✅ 优点 | ❌ 缺点 |
|---|---|
| 多 Agent 对话能力强大 | 单 Agent 场景优势不大 |
| Agent 间自动协商 | 调试多 Agent 对话困难 |
| 代码执行沙箱 | 文档不够完善 |
5.4 适用场景
需要多个角色协作、辩论、互相审核的复杂场景。
六、CrewAI
6.1 概述
轻量级多 Agent 协作框架,以"角色"为核心抽象。
6.2 快速上手
from crewai import Agent, Task, Crew, Process
# 定义角色
researcher = Agent(
role="市场研究员",
goal="收集并分析市场趋势",
backstory="经验丰富的市场分析师,擅长数据驱动决策",
tools=[search_tool, web_scraper],
verbose=True,
allow_delegation=False
)
writer = Agent(
role="内容写手",
goal="撰写高质量的行业报告",
backstory="资深科技编辑,擅长将复杂概念通俗化",
verbose=True,
allow_delegation=False
)
# 定义任务
research_task = Task(
description="研究 2024 年 AI Agent 市场趋势,"
"包括市场规模、主要玩家和技术方向",
agent=researcher,
expected_output="包含数据来源的市场分析报告"
)
write_task = Task(
description="基于研究结果撰写 2000 字行业报告",
agent=writer,
expected_output="可直接发布的 Markdown 报告",
context=[research_task] # 依赖前置任务
)
# 组建团队
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential, # 顺序执行
verbose=True
)
# 执行
result = crew.kickoff()6.3 优点与缺点
| ✅ 优点 | ❌ 缺点 |
|---|---|
| API 简洁,上手快 | 复杂场景灵活性不足 |
| 内置角色和任务抽象 | 工具集成不如 LangChain 丰富 |
| 支持顺序/层级流程 | 大规模任务性能一般 |
6.4 适用场景
内容生成、报告撰写、市场调研等流程清晰的任务。
七、框架选型指南
7.1 决策树
你需要什么类型的 Agent?
├── 单 Agent + 工具调用 → LangChain
├── 多 Agent 协作
│ ├── 角色分工明确 → CrewAI
│ └── 自由对话协商 → AutoGen
├── 快速原型验证 → OpenAI Assistants
└── 可视化/低代码 → Dify / Coze7.2 综合对比矩阵
| 维度 | LangChain | Assistants | AutoGen | CrewAI |
|---|---|---|---|---|
| 上手难度 | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 灵活性 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 工具生态 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 多 Agent | ⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 企业支持 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 学习资源 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
八、总结
没有"最好"的框架,只有"最适合"的框架:
- 需要最大灵活性 → LangChain / LangGraph
- 快速上线托管方案 → OpenAI Assistants API
- 多 Agent 深度对话 → AutoGen
- 角色化任务流水线 → CrewAI
- 零代码/低代码 → Dify / Coze
建议从 LangChain 入门掌握 Agent 核心概念,再根据实际需求选择最适配的框架。
下一篇将讲解多 Agent 协作与生产部署。