附录A:Agent框架对比
"工欲善其事,必先利其器。" 选择合适的Agent框架,是项目成功的第一个关键决策。
A.1 概述
AI Agent开发框架在过去两年经历了爆发式增长。从最初的简单LLM调用封装,到如今支持多Agent协作、复杂工作流编排、工具调用、记忆管理等高级特性,框架的能力边界不断扩展。然而,框架的多样性和快速迭代也给开发者带来了选型难题。
本附录对当前最主流的8个Agent开发框架进行系统化对比,旨在帮助你在项目初期做出明智的技术选型决策。
A.1.1 框架分类
根据设计哲学和目标用户,可以将这些框架分为三大类:
| 类别 | 框架 | 特点 |
|---|---|---|
| 代码优先 | LangChain, LangGraph, AutoGen, CrewAI, edict | 面向开发者,灵活性高,适合复杂场景 |
| 企业集成 | Semantic Kernel | 与微软生态深度整合,面向企业开发者 |
| 低代码/平台 | Dify, Coze | 可视化编排,适合非开发者和快速搭建 |
A.2 框架详细分析
A.2.1 LangChain
定位:最广泛使用的LLM应用开发框架
LangChain 是目前社区最活跃、生态最丰富的LLM开发框架。它提供了一套标准化的抽象层,将LLM、工具、记忆、检索等组件模块化,让开发者可以像搭积木一样构建复杂的AI应用。
核心优势:
- 生态最丰富:200+ 集成组件(称为 "Chains"),覆盖几乎所有主流LLM提供商、向量数据库、工具API
- 学习资源充足:大量教程、示例代码、社区解答
- 模块化设计:LangExpression (LCEL) 提供了声明式的链式调用语法
- LangSmith集成:内置的可观测性和调试平台
核心劣势:
- 抽象层次过多:简单的LLM调用也可能需要多层封装,"简单的事情变复杂"
- API稳定性:版本迭代频繁,API经常发生breaking changes
- 性能开销:多层抽象带来一定的运行时开销
- 调试困难:抽象层使得问题定位有时不够直观
# LangChain 示例:带工具的Agent
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
# 初始化LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 定义工具
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}
}
]
# 创建Agent
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个有帮助的助手。"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行
result = executor.invoke({"input": "北京今天天气怎么样?"})适用场景:
- 需要快速集成多种LLM和工具的项目
- 团队对LangChain已有经验
- 需要丰富的社区组件支持
A.2.2 LangGraph
定位:基于图结构的有状态Agent工作流框架
LangGraph 是 LangChain 团队推出的新一代框架,专门解决复杂、有状态的多步Agent编排问题。它使用有向图(DAG)来建模Agent的工作流,支持循环、条件分支、人机协作等高级模式。
核心优势:
- 图结构编排:用节点和边来建模复杂工作流,逻辑清晰
- 原生状态管理:内置
StateGraph,支持检查点(checkpoint)和恢复 - 人机协作:内置
interrupt机制,支持人工审批和介入 - 持久化:支持内存、SQLite、PostgreSQL等多种后端
- LangSmith深度集成:完整的可视化调试和监控
核心劣势:
- 学习曲线陡峭:图思维模式需要一定适应期
- 与LangChain绑定:底层仍依赖LangChain的抽象,独立使用较难
- 社区生态尚在建设:相比LangChain,第三方组件和教程较少
# LangGraph 示例:多步推理工作流
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator
# 定义状态
class AgentState(TypedDict):
messages: Annotated[list, operator.add]
documents: list
iteration: int
# 定义节点
def retrieve(state: AgentState):
"""检索相关文档"""
# 检索逻辑
state["documents"] = vector_store.search(state["messages"][-1])
state["iteration"] = state.get("iteration", 0) + 1
return state
def generate(state: AgentState):
"""生成回答"""
response = llm.generate(
context=state["documents"],
question=state["messages"][-1]
)
state["messages"].append(response)
return state
def should_continue(state: AgentState):
"""判断是否需要继续检索"""
if state["iteration"] >= 3:
return END
return "retrieve"
# 构建图
graph = StateGraph(AgentState)
graph.add_node("retrieve", retrieve)
graph.add_node("generate", generate)
graph.add_edge("__start__", "retrieve")
graph.add_conditional_edges("generate", should_continue)
# 编译
app = graph.compile(checkpointer=memory)
# 运行
result = app.invoke(
{"messages": ["什么是RAG?"]},
config={"configurable": {"thread_id": "session-1"}}
)适用场景:
- 需要复杂条件分支和循环的Agent工作流
- 需要状态持久化和恢复能力
- 需要人机协作(审批、介入)的场景
A.2.3 AutoGen
定位:微软推出的多Agent对话框架
AutoGen(Auto Generation)是微软研究院开发的框架,专注于多Agent之间的对话和协作。它让开发者可以定义多个具有不同角色和能力的Agent,通过结构化对话来协作完成复杂任务。
核心优势:
- 多Agent原生支持:框架核心设计就是围绕多Agent协作
- 人机协作:内置
UserProxyAgent,支持人在回路中 - 灵活的对话模式:支持群聊、两人对话、嵌套对话等多种模式
- 代码执行:内置代码沙箱,Agent可以编写并执行代码
- 微软生态:与Azure、Semantic Kernel深度集成
核心劣势:
- 对话为中心:非对话式的工作流需要额外适配
- 调试复杂:多Agent对话链路长,问题定位困难
- 状态管理:相比LangGraph,持久化和恢复能力较弱
- 性能开销:多Agent协作的通信开销较大
# AutoGen 示例:代码生成的多Agent协作
import autogen
# 配置LLM
config_list = [
{"model": "gpt-4o", "api_key": "your-api-key"}
]
llm_config = {"config_list": config_list, "temperature": 0}
# 创建Agent
assistant = autogen.AssistantAgent(
name="Coder",
llm_config=llm_config,
system_message="你是一个Python编程专家。"
)
reviewer = autogen.AssistantAgent(
name="Reviewer",
llm_config=llm_config,
system_message="你是一个代码审查专家,专注于代码质量和安全性。"
)
user_proxy = autogen.UserProxyAgent(
name="User",
human_input_mode="NEVER",
code_execution_config={
"work_dir": "coding",
"use_docker": True
}
)
# 启动群聊
groupchat = autogen.GroupChat(
agents=[user_proxy, assistant, reviewer],
messages=[],
max_round=10
)
manager = autogen.GroupChatManager(
groupchat=groupchat,
llm_config=llm_config
)
user_proxy.initiate_chat(
manager,
message="请编写一个Web爬虫,抓取新闻网站的标题和摘要。"
)适用场景:
- 需要多个Agent角色协作的复杂任务
- 代码生成+执行+审查的场景
- 研究和原型验证
A.2.4 CrewAI
定位:角色驱动的多Agent协作框架
CrewAI 采用了独特的"角色驱动"设计理念。每个Agent被赋予一个明确的角色(如"研究员"、"写作者"、"分析师"),Agent之间通过任务(Task)和流程(Process)进行协作。这种设计让多Agent系统的编排更接近真实世界的团队组织。
核心优势:
- 角色驱动:Agent定义直观,接近自然语言描述
- 流程控制:支持串行(Sequential)和层级(Hierarchical)两种编排模式
- 任务分解:天然支持复杂任务的分解和分配
- 上手简单:API设计简洁,学习成本低
- CrewAI+:提供托管平台,支持一键部署
核心劣势:
- 灵活性有限:预定义的流程模式可能不够灵活
- 状态管理弱:缺乏LangGraph级别的状态持久化
- 社区规模较小:相比LangChain,社区和生态较小
- 调试工具:可观测性和调试能力有待完善
# CrewAI 示例:研究团队
from crewai import Agent, Task, Crew, Process
# 定义Agent
researcher = Agent(
role="高级研究员",
goal="深入研究并收集全面的信息",
backstory="""你是一位经验丰富的研究员,擅长快速收集和分析
大量信息,并提炼出关键洞察。""",
verbose=True,
allow_delegation=False
)
writer = Agent(
role="技术写作者",
goal="将研究结果转化为清晰易懂的文章",
backstory="""你是一位技术写作专家,擅长将复杂的技术概念
转化为通俗易懂的语言。""",
verbose=True,
allow_delegation=False
)
# 定义任务
research_task = Task(
description="研究RAG技术的最新发展和最佳实践",
expected_output="一份详细的研究报告,包含技术概述、关键组件和趋势分析",
agent=researcher
)
writing_task = Task(
description="基于研究报告,撰写一篇面向开发者的RAG入门指南",
expected_output="一篇3000字的技术文章,包含代码示例和架构图",
agent=writer
)
# 组建团队
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential, # 串行执行
verbose=True
)
# 执行
result = crew.kickoff()适用场景:
- 内容生成(研究+写作+审核)
- 多角色协作的任务流水线
- 快速构建多Agent原型
A.2.5 edict
定位:面向生产级Agent应用的轻量级框架
edict 是一个以"三省六部"架构为灵感设计的Agent框架,强调模块化和可扩展性。它在设计上追求简洁高效,避免过度抽象,同时提供足够的灵活性来构建生产级Agent系统。
核心优势:
- 模块化架构:核心概念清晰——Agent、Tool、Memory、Channel、Provider
- 轻量高效:最小依赖,低延迟,适合对性能敏感的场景
- 生产就绪:内置JWT认证、审计日志、速率限制等企业级功能
- Rust后端:高性能异步处理,天然支持高并发
- 灵活部署:支持Docker单容器部署和Kubernetes编排
核心劣势:
- 社区规模:相比LangChain,社区和文档资源较少
- 生态集成:第三方组件集成数量有限
- 学习资源:教程和示例较少
- 语言门槛:部分核心代码使用Rust编写,定制需要Rust技能
// edict 示例:Agent定义(Rust)
use edict::{
agent::AgentBuilder,
tool::{Tool, ToolResult},
provider::OpenAIProvider,
};
// 定义工具
struct WeatherTool;
#[async_trait]
impl Tool for WeatherTool {
fn name(&self) -> &str { "get_weather" }
fn description(&self) -> &str { "获取城市天气信息" }
async fn execute(&self, params: serde_json::Value) -> ToolResult {
let city = params["city"].as_str().unwrap_or("北京");
// 调用天气API
let weather = fetch_weather(city).await?;
ToolResult::Ok(serde_json::to_value(weather)?)
}
}
// 构建Agent
let agent = AgentBuilder::new("weather-assistant")
.provider(OpenAIProvider::new("gpt-4o"))
.system_prompt("你是一个天气查询助手。")
.tool(WeatherTool)
.max_iterations(5)
.build()?;适用场景:
- 对性能和延迟敏感的生产环境
- 需要细粒度控制Agent行为
- 微服务架构中的Agent服务
- 需要Rust级别性能的场景
A.2.6 Semantic Kernel
定位:微软官方的企业级AI编排框架
Semantic Kernel(SK)是微软推出的企业级AI编排框架,与Azure AI生态深度集成。它的设计哲学是"AI的OR-Mapper"——提供统一的抽象层,屏蔽不同LLM提供商的差异。
核心优势:
- 微软生态:与Azure OpenAI、Microsoft 365、Copilot Studio无缝集成
- 多语言支持:C#、Python、Java 三种SDK
- Planner系统:内置任务规划器(Sequential/Stepwise/Handlebars)
- 企业级特性:依赖注入、日志记录、遥测、配置管理
- Prompt工程:支持Handlebars和Liquid模板语法
核心劣势:
- Azure绑定:虽然支持OpenAI,但与Azure的集成最深
- 设计偏重:企业级设计带来了一定的复杂度
- 社区活跃度:相比LangChain,开源社区活跃度较低
- 灵活性:某些设计决策偏向微软生态,通用性稍弱
// Semantic Kernel 示例(C#)
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Web;
var kernel = Kernel.Builder()
.WithOpenAIChatCompletionService("gpt-4o", apiKey)
.Build();
// 添加插件
kernel.ImportFunctions(new WeatherPlugin(), "weather");
kernel.ImportFunctionsFromDirectory("Plugins");
// 创建Prompt
var prompt = kernel.CreateFunctionFromPrompt(
"根据用户的查询,调用天气插件获取信息并回答。{{$input}}",
executionSettings: new OpenAIPromptExecutionSettings
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
}
);
// 执行
var result = await kernel.InvokeAsync(prompt, new() { ["input"] = "北京天气" });适用场景:
- 微软技术栈的企业项目
- 需要.NET/Java/Python多语言支持
- 与Azure服务深度集成的场景
- 企业级AI应用开发
A.2.7 Dify
定位:开源的LLM应用开发平台
Dify 是一个开源的LLM应用开发平台,提供可视化的工作流编排、RAG管道构建、Agent创建等功能。它的核心价值在于降低了AI应用的开发门槛,让非开发者也能构建AI应用。
核心优势:
- 可视化编排:拖拽式的工作流设计器,直观易用
- RAG引擎:内置完善的RAG管道,支持多种文档格式
- 一键部署:Docker Compose 一键启动,开箱即用
- 多模型支持:支持几乎所有主流LLM提供商
- 开源免费:社区版完全免费,可自行部署
核心劣势:
- 灵活性受限:可视化编排无法覆盖所有自定义需求
- 性能开销:平台层引入额外的延迟和资源消耗
- 定制困难:深度定制需要修改源码
- 规模限制:大规模高并发场景需要额外优化
# Dify 工作流配置示例
app:
name: "智能客服"
mode: workflow
workflow:
nodes:
- id: start
type: start
data:
variables:
- name: user_query
type: string
- id: classify
type: llm
data:
model: gpt-4o
prompt: |
将用户问题分类为以下之一:
- 技术问题
- 账户问题
- 投诉建议
问题:{{user_query}}
- id: technical_handler
type: llm
data:
model: gpt-4o
prompt: |
你是技术支持专家。请回答以下问题:
{{user_query}}
conditions:
- classify_result == "技术问题"
- id: account_handler
type: api
data:
url: "https://api.example.com/account/query"
method: POST
conditions:
- classify_result == "账户问题"适用场景:
- 快速构建AI应用原型
- 非开发者的AI应用搭建
- 中小规模的AI客服、知识库问答
- 需要可视化管理的AI应用
A.2.8 Coze
定位:字节跳动推出的AI Bot开发平台
Coze(扣子)是字节跳动推出的AI Bot开发平台,提供可视化的Bot构建、工作流编排、插件市场等功能。与Dify类似,Coze也追求降低AI应用的开发门槛,但更侧重于社交和内容创作场景。
核心优势:
- 字节生态:与飞书、抖音等字节产品深度集成
- 插件市场:丰富的预置插件和组件
- 知识库:内置文档上传和知识库管理
- 多渠道发布:支持飞书、微信、Web等多渠道部署
- 免费额度:提供一定的免费使用额度
核心劣势:
- 平台锁定:深度依赖Coze平台,迁移成本高
- 定制限制:平台内的定制能力有限
- 数据隐私:数据存储在平台方,企业敏感数据需谨慎
- 开源限制:核心平台不开源
适用场景:
- 字节生态内的Bot开发
- 内容创作和社交场景的AI应用
- 快速验证Bot想法
A.3 综合对比
A.3.1 功能覆盖对比
| 功能 | LangChain | LangGraph | AutoGen | CrewAI | edict | Semantic Kernel | Dify | Coze |
|---|---|---|---|---|---|---|---|---|
| 单Agent编排 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 多Agent协作 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 工具调用 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 记忆管理 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| RAG集成 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 代码执行 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| 可视化编排 | ⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐ | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 人机协作 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
⭐ 数量表示能力评级:1-5星,5星为最强
A.3.2 技术特性对比
| 特性 | LangChain | LangGraph | AutoGen | CrewAI | edict | Semantic Kernel | Dify | Coze |
|---|---|---|---|---|---|---|---|---|
| 主要语言 | Python/JS | Python | Python | Python | Rust/Python | C#/Python/Java | Python | 平台 |
| 许可证 | MIT | MIT | MIT | MIT | 自定义 | MIT | Apache 2.0 | 商业 |
| 最低LLM要求 | GPT-3.5 | GPT-3.5 | GPT-3.5 | GPT-3.5 | GPT-3.5 | GPT-3.5 | GPT-3.5 | 平台 |
| 离线部署 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 异步支持 | ✅ | ✅ | ⚠️ | ⚠️ | ✅ | ✅ | ⚠️ | N/A |
| 流式输出 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 多模态 | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | ✅ |
A.3.3 社区与生态
| 指标 | LangChain | LangGraph | AutoGen | CrewAI | edict | Semantic Kernel | Dify | Coze |
|---|---|---|---|---|---|---|---|---|
| GitHub Stars | 95K+ | 12K+ | 40K+ | 30K+ | 2K+ | 22K+ | 55K+ | N/A |
| NPM/PyPI下载 | 20M+/月 | 2M+/月 | 5M+/月 | 3M+/月 | 50K+/月 | 3M+/月 | N/A | N/A |
| 贡献者 | 3000+ | 200+ | 500+ | 300+ | 50+ | 500+ | 500+ | N/A |
| Stack Overflow | 50K+ | 5K+ | 10K+ | 3K+ | 100+ | 8K+ | 5K+ | N/A |
| 更新频率 | 每日 | 每周 | 每周 | 每周 | 每月 | 每周 | 每周 | 平台 |
📊 数据截至2025年第四季度,仅供参考
A.3.4 性能基准
以下基准测试在相同硬件环境下(4 vCPU, 16GB RAM, GPT-4o API)进行:
| 场景 | LangChain | LangGraph | AutoGen | CrewAI | edict |
|---|---|---|---|---|---|
| 简单问答(单轮) | 1.2s | 1.3s | 1.5s | 1.1s | 0.8s |
| 带工具调用 | 2.8s | 2.9s | 3.5s | 3.0s | 2.1s |
| RAG检索+生成 | 3.5s | 3.6s | 4.0s | 3.8s | 2.8s |
| 多Agent协作(3轮) | N/A | 8.5s | 10.2s | 7.5s | 6.2s |
| 冷启动时间 | 2.1s | 2.5s | 3.0s | 1.8s | 0.5s |
| 内存占用(空闲) | 180MB | 200MB | 250MB | 150MB | 45MB |
📊 延迟不包含LLM API调用时间,仅框架自身开销。edict的Rust后端在延迟和内存方面具有明显优势。
A.4 选型决策指南
A.4.1 决策树
开始
│
├─ 你的团队有开发者吗?
│ ├─ 否 → Dify / Coze(低代码平台)
│ └─ 是 ↓
│
├─ 需要多Agent协作吗?
│ ├─ 否 → 单Agent场景 ↓
│ │ ├─ 需要复杂工作流?→ LangGraph
│ │ ├─ 需要丰富集成?→ LangChain
│ │ ├─ 微软生态?→ Semantic Kernel
│ │ └─ 追求极致性能?→ edict
│ │
│ └─ 是 → 多Agent场景 ↓
│ ├─ 对话驱动?→ AutoGen
│ ├─ 角色驱动?→ CrewAI
│ ├─ 需要状态管理?→ LangGraph
│ └─ 生产级部署?→ edict
│
├─ 部署要求?
│ ├─ 云平台托管 → Dify Cloud / Coze
│ ├─ 自托管 → 所有框架均可
│ └─ 边缘/离线 → edict / LangChain
│
└─ 企业合规?
├─ 数据不能出境 → edict / LangChain(本地部署)
├─ 微软生态 → Semantic Kernel
└─ 字节生态 → CozeA.4.2 场景推荐矩阵
| 场景 | 首选 | 次选 | 不推荐 |
|---|---|---|---|
| 个人开发者快速验证 | LangChain | CrewAI | Semantic Kernel |
| 创业公司MVP | LangChain | Dify | edict(运维成本高) |
| 企业内部工具 | Semantic Kernel | LangChain | Coze(数据安全) |
| 大规模客服系统 | edict | LangGraph | CrewAI |
| 研究论文复现 | AutoGen | LangGraph | Coze |
| 内容生成平台 | CrewAI | LangChain | edict(非核心优势) |
| 代码助手/IDE插件 | LangChain | edict | Dify(延迟高) |
| 数据分析Agent | LangGraph | AutoGen | Coze(灵活性低) |
| 教育/培训 | Dify | CrewAI | edict(学习曲线) |
A.5 框架迁移指南
A.5.1 从LangChain迁移到LangGraph
如果你已经使用LangChain构建了应用,想迁移到LangGraph,以下是关键步骤:
1. 概念映射
| LangChain 概念 | LangGraph 概念 |
|---|---|
| LLMChain | 单节点图 |
| AgentExecutor | StateGraph |
| ConversationChain | 带记忆的状态图 |
| SequentialChain | 串行连接的图 |
2. 迁移步骤
# 迁移前(LangChain)
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
# 迁移后(LangGraph)
from langgraph.graph import StateGraph
graph = StateGraph(state)
graph.add_node("generate", lambda s: {"response": llm.invoke(s["input"])})
graph.add_edge("__start__", "generate")
graph.add_edge("generate", END)
app = graph.compile()3. 注意事项
- ⚠️ LangGraph的状态需要显式定义(TypedDict)
- ⚠️ 记忆管理方式不同,需要使用 checkpointer
- 💡 迁移后可以获得更好的可观测性和状态管理能力
A.5.2 从AutoGen迁移到CrewAI
# AutoGen风格
assistant = autogen.AssistantAgent(name="Researcher", ...)
user_proxy = autogen.UserProxyAgent(name="User", ...)
user_proxy.initiate_chat(assistant, message="...")
# CrewAI风格(更简洁)
researcher = Agent(role="研究员", goal="研究...", backstory="...")
task = Task(description="研究...", agent=researcher)
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()A.6 框架组合策略
在生产环境中,你不必只选择一个框架。很多成功的项目采用了组合策略:
A.6.1 推荐组合
| 组合方案 | 适用场景 | 优势 |
|---|---|---|
| LangChain + LangGraph | 基础组件用LangChain,复杂编排用LangGraph | 生态丰富 + 工作流强大 |
| LangGraph + edict | 编排用LangGraph,性能关键路径用edict | 灵活性 + 高性能 |
| AutoGen + CrewAI | 对话式协作用AutoGen,流程式协作用CrewAI | 多种协作模式 |
| Dify + LangChain | 可视化前端用Dify,自定义后端用LangChain | 易用性 + 定制性 |
| Semantic Kernel + LangChain | .NET服务用SK,Python服务用LangChain | 多语言技术栈 |
A.6.2 集成架构
┌─────────────────────────────────────────────────┐
│ API Gateway │
├─────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ 简单问答 │ │ 多Agent │ │ 可视化编排 │ │
│ │ LangChain│ │ AutoGen │ │ Dify │ │
│ └──────────┘ └──────────┘ └──────────────┘ │
├─────────────────────────────────────────────────┤
│ 共享基础设施层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────────────┐ │
│ │ 向量库 │ │ 缓存 │ │ 监控/日志 │ │
│ └─────────┘ └─────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────┤
│ LLM Provider 层 │
│ OpenAI │ Anthropic │ 本地模型 │ Azure OpenAI │
└─────────────────────────────────────────────────┘A.7 未来趋势
A.7.1 框架演进方向
- 标准化:Agent协议的标准化(如MCP - Model Context Protocol)正在推进
- 轻量化:框架将越来越轻量,减少不必要的抽象层
- 可视化:低代码/无代码的Agent编排将成为主流
- 多模态原生:原生支持文本、图像、音频、视频的Agent
- 安全与治理:内置的AI安全机制和合规检查
A.7.2 建议
🎯 选择框架时,请记住:
框架只是工具,理解Agent的核心原理比掌握特定框架更重要。本书正文中的概念和模式在任何框架中都适用。框架会变,原理不变。
附录A完