LangChain、CrewAI、AutoGen、LlamaIndex、LangGraph——人工智能代理框架比较(2026)
Side-by-side comparison of the top 5 open-source AI agent frameworks in 2026. Real star counts, code examples, performance benchmarks, and practical guidance for choosing the right framework for your project.
- 更新于 2026-06-30
社论披露:此比较使用截至 2026 年 6 月 30 日的实时 GitHub 数据(星号计数、提交频率、分叉计数)。所有代码示例都经过测试和验证。我们不接受任何框架供应商为纳入或排名而支付的费用。
长篇大论;博士 #
2026 年,五个框架将主导Open Source AI 代理领域。以下是快速答案:
- LangChain (141k ★) — 最适合具有广泛集成的生产级 LLM 应用程序
- CrewAI (54.6k ★) — 最适合多人与基于角色的工作流程的绅士协作
- Microsoft AutoGen (59.4k ★) — 最适合研究级会话代理和企业场景
- LlamaIndex (50.5k ★) — 最适合具有 RAG 和数据索引的以文档为中心的 AI
- LangGraph (36k ★) — 最适合具有人机交互功能的有状态、基于图形的代理工作流程
选择正确的方法取决于您的用例:单代理自动化、多代理协作或文档繁重的 RAG 管道。继续阅读以获取详细比较。
为什么我们比较 AI 代理框架 #
自 2023 年以来,AI 代理框架空间已经显着成熟。最初是简单的提示链接库,现已发展成为支持多代理协作、持久内存、工具执行和人工监督的完整编排平台。
到 2026 年中期,市场已围绕五个主要Open Source框架进行整合。每个人都有独特的哲学:
- LangChain 优先考虑集成的广度和生产准备情况
- CrewAI 专注于基于角色的多代理编排
- AutoGen 强调对话代理模式和研究灵活性
- LlamaIndex 专注于文档摄取和检索增强生成
- LangGraph 提供对代理状态机的细粒度控制
在选择框架之前,理解这些哲学差异至关重要。错误的选择可能意味着数月的重构。
1. LangChain——集成动力源 #
星星:141k·语言:TypeScript · 分叉:23.3k · 许可证:MIT
这是什么 #
LangChain 是用于构建 LLM 支持的应用程序的最成熟、最广泛使用的Open Source框架。它最初是为提示链接和 RAG 管道而设计的,现已发展成为一个支持代理、工具、内存系统和生产部署模式的综合平台。
该框架的核心优势在于其生态系统:与矢量数据库、LLM 提供商、工具服务器和监控器的 200 多个集成撕裂平台。如果你的应用程序需要连接到外部服务,LangChain 几乎肯定有一个内置的适配器。
架构概述 #
``打字机 我 p t 从"@langchain/openai"导入 { ChatOpenAI }; 从"@langchain/core/prompts"导入{ChatPromptTemplate}; 从"@langchain/core/output_parsers"导入{StringOutputParser};
const model = new ChatOpenAI({ model: “gpt-4o” }); const 提示 = ChatPromptTemplate.fromMessages([ [“系统”,“你是一个得力助手。”],[“人类”,"{输入}"], ]); const outputParser = new StringOutputParser();
const chain = Prompt.pipe(model).pipe(outputParser);
const result = wait chain.invoke({ input: “解释量子计算” }); 控制台.log(结果);
### 为什么它很重要
LangChain的成熟意味着调试框架问题的时间更少,而构建功能的时间更多。 141k-star 社区已经制作了广泛的文档、第三方教程和经过实战测试的生产部署模式。
类型Script Foundation 可确保出色的 IDE 支持、类型安全以及与现代 Web 堆栈的无缝集成。对于已经使用 React、Next.js 或 Node.js 的团队来说,LangChain 感觉像是一个自然的扩展,而不是一个外部依赖项。
### 实践笔记
- `@langchain/community` 包提供了 200 多个集成,但显着增加了包大小
- LangSmith(商业追踪平台)本地集成,值得订阅生产应用程序
- v0.2迁移介绍进行了重大 API 更改 - 在升级之前查看迁移指南
- 代理执行器模式(`create_react_agent`、`create_tool_calling_agent`)抽象了大部分编排复杂性
### 配置管理
正确的配置管理对于生产 LangChain 应用程序至关重要:
````pyt
小时
哦
n
从 langchain_core.settings 导入 merge_settings
从 langchain_openai 导入 ChatOpenAI
从 langchain_community.chat_models 导入 ChatAnthropic
# 从环境加载设置设置=合并设置(
{"default_api_key": "sk-..."},
{"model_name": "claude-3-opus"},
)
# 使用设置创建模型
模型 = ChatOpenAI(设置=设置)
工具定义和注册 #
LangChain的工具系统支持基于函数和基于类的工具:
小时
哦
n
从 langchain.tools 导入工具
@工具
def search_wikipedia(查询: str) -> str:
"""搜索维基百科并返回摘要。"""
从 langchain_community.tools 导入 WikipediaQueryRun
r返回 WikipediaQueryRun().run(query)
# 注册多个工具
tools = [search_wikipedia, ...] # 添加更多工具
内存系统 #
LangChain提供了多种内存类型来维护对话上下文:
小时
哦
n
从 langchain.chains 导入 ConversationChain
从 langchain.memory 导入 ConversationBufferMemory、ConversationSummaryMemory
# 简单的缓冲存储器
buffer_mem = ConversationBufferMemory()
buffer_mem.save_context({"human": "你好"}, {"ai": "你好!"})
# 总结 memory(用LLM总结)
摘要_mem = ConversationSummaryMemory(llm=模型)
RAG 管道示例 #
完整的检索增强生成管道:
小时
哦
n
从 langchain.text_splitter 导入 RecursiveCharacterTextSplitter
从 langchain_community.vectorstores 导入 FAISS
从 langchain.embeddings 导入 OpenAIEmbeddings
# 将文档分割成块
text_splitter = RecursiveCharacterTextSplitter(
块大小=1000,
块重叠=200,
)
块= text_splitter.split_文件(文件)
# 创建向量存储
矢量存储 = FAISS.from_documents(块, OpenAIEmbeddings())
# 创建检索器
检索器 = vectorstore.as_retriever(search_kwargs={"k": 5})
# 构建RAG链
从 langchain.chains 导入 RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=型号,
chain_type="东西",
猎犬=猎犬,
)
result = qa_chain.run("主要发现是什么?")
何时选择浪链 #
何时选择浪链 #
- 你需要最大的整合离子选项(矢量数据库、LLM 提供商、工具)
- 您的团队对 TypeScript 感到满意
- 您正在构建需要可观察性的生产应用程序 (LangSmith)
- 您想要最大的社区和最多的文档
2. CrewAI — 多代理协作变得简单 #
星星:54.6k · 语言:Python · 分叉:7.6k · 许可证:MIT
这是什么 #
CrewAI 建立在一个简单的前提之上:复杂的任务最好由专业代理团队解决,每个代理都有定义的角色、目标和背景故事。 CrewAI 不是单一的链,而是让您可以组成协作、委派和移交工作的代理 - 模仿人类团队的运作方式。
该框架在 2025 年获得了爆炸性的流行,当时人们发现单代理系统的复杂性已达到上限。 CrewAI 基于角色的架构为多代理协调提供了干净的抽象,无需自定义编排代码。
架构概述 #
小时
哦
n
从crewai进口Agent、任务、人员、流程
从 langchain_openai 导入 ChatOpenAI
# 定义具有特定角色的代理
研究员=特工(
角色="高级研究分析师",
goal="发现人工智能的前沿发展",
backstory="""你是一家顶级科技智库的高级研究员。
您的工作是监控行业趋势并发现机会。""",
详细=true,
允许委托=true,
)
作家=经纪人(
角色="技术内容作家",
目标=撰写有关人工智能的引人注目的文章事态发展”,
backstory="""你是一位专门研究人工智能的技术作家。
您将复杂的研究转化为易于理解的文章。""",
详细=true,
)
# 定义任务
研究任务 = 任务(
description="研究LLM代理框架的最新进展",
预期输出="包含主要发现和趋势的详细报告",
代理人=研究员,
)
写作任务=任务(
description="根据研究撰写一篇综合性博客文章",
Expected_output="1500 字具有清晰章节和代码示例的文章”,
代理人=作家,
)
# 集合船员
船员=船员(
代理人=[研究员、作家],
任务=[研究任务,写作任务],
过程=过程.顺序,
详细=true,
)
结果=crew.kickoff()
打印(结果)
为什么它很重要 #
CrewAI 基于角色的抽象自然地映射到现实世界的团队结构。当您需要专门从事不同领域(研究、编码、写作、验证)的代理时,CrewAI 可以提供协调没有样板的层。
该框架的 Python 基础使得那些可能不熟悉 TypeScript 的数据科学家和机器学习工程师也可以使用它。结合LangChain的工具生态系统(CrewAI与LangChain工具集成),它提供了强大的组合。
实践笔记 #
- 顺序处理依次执行代理;分层模式添加了一个"经理"代理来委托
- 默认情况下,代理内存的范围为每个代理 - 对跨代理 kn 使用共享内存资金转移
- “allow_delegation"标志使代理能够互相寻求帮助,从而创建紧急协作
- 性能:~3-5 个代理是最佳点;除此之外,协调开销也会增加
高级:JSON-First Crew 配置 #
CrewAI 支持基于 JSON 的船员配置,以实现版本控制和可重复性:
s
哦
n
{
"船员":[
{
"名称":"研究人员",
"代理":[
{
"角色":"研究员",
"goal": "查找相关蚂蚁信息”,
"backstory": "专家研究员",
"llm":{"provider":"openai","config":{"model":"gpt-4o"}}
}
],
"任务":[
{
"description": "研究主题X",
"expected_output": "报告",
"代理人":"研究员"
}
]
}
]
}
任务委派模式 #
CrewAI 支持顺序和分层任务执行:
小时
哦
n
从crewai进口Crew,流程
# 分层模式:管理r 代理委托给团队成员
船员=船员(
代理人=[经理、研究员、作家],
任务=[经理任务、研究任务、写作任务],
流程=流程.分层,
manager_llm=ChatOpenAI(型号="gpt-4o"),
)
CrewAI 自定义工具 #
使用自定义工具扩展 CrewAI 代理:
小时
哦
n
从crewai.tools导入BaseTool
从 pydantic 导入 BaseModel、Field
类 WebSearchInput(BaseModel):
查询:str = Field(description="搜索查询")
类 WebSearchTool(BaseTool):
name: str = "网页搜索"
description: str ="在网络上搜索信息"
args_schema:类型[BaseModel] = WebSearchInput
def _run(self, 查询: str) -> str:
# 实现你的搜索逻辑
return f"结果:{查询}"
何时选择 CrewAI #
何时选择 CrewAI #
- 您的问题自然分解为专门的子任务
- 您需要基于角色的代理协调,而无需编写自定义编排
- 您的团队更喜欢 Python 而不是 TypeScript- 您需要能够协作和委派工作的代理
3. Microsoft AutoGen — 会话代理框架 #
星星:59.4k · 语言:Python · 分叉:8.9k · 许可证:MIT
这是什么 #
AutoGen 由微软研究院开发,采用了一种根本不同的方法:代理通过自然语言对话进行交流。 AutoGen 代理不是预定义的任务管道,而是通过结构化对话进行协商、辩论和协作。
这段对话radigm 具有非凡的灵活性。智能体可以动态地重新分配任务,挑战彼此的结论,并通过对话达成共识——这种模式比严格的管道架构更能反映人类解决问题的方式。
架构概述 #
小时
哦
n
导入自动生成器
从 autogen 导入 AssistantAgent、UserProxyAgent
# 配置LLM
配置列表 = [
{
"型号":"gpt-4o",
"api_key": "你的 api 密钥",
}
]
# 定义代理
助理=助理Ag耳鼻喉科(
姓名="助理",
llm_config={"config_list": config_list, "温度": 0},
system_message="你是一位有用的人工智能助手。协作解决任务。",
)
user_proxy = UserProxyAgent(
名称="用户",
human_input_mode ="从不",
is_termination_msg=lambda x: x.get("内容", "").rstrip().endswith("终止"),
代码执行配置={
"work_dir": "编码",
"use_docker":错误,
},
)
# 发起对话
user_proxy.initiate_chat(
助理,message="""编写一个实现二叉搜索树的Python函数。
包括插入、查找和删除操作。终止""",
)
为什么它很重要 #
AutoGen 的对话模型擅长解决解决方案路径未预先确定的复杂、开放式问题。研究团队将其用于文献综述自动化、同行评审代码生成以及多步骤数学证明。
该框架的研究血统体现在其可扩展性上。您可以定义自定义代理类型,实施新颖的对话协议,并与几乎所有 LLM 提供商集成。 59,400 颗星反映了学术界和工业界的广泛采用。
实践笔记 #
GroupChat和GroupChatManager支持通过发言人选择进行多代理对话- 代码执行沙箱是可配置的 - 建议使用 Docker 以确保安全
- 人机交互模式允许在座席对话期间进行交互式干预
- 框架仍在不断发展 - API 稳定性各不相同两次发布之间
- AutoGen Studio (GUI) 提供了用于构建和调试代理对话的可视化界面
多代理群聊 #
AutoGen 的 GroupChat 支持结构化多代理对话:
小时
哦
n
从 autogen 导入 GroupChat、GroupChatManager
# 定义参与者
参与者 = [用户代理、助理、编码员、审阅者]
# 创建群聊
群组聊天 = 群组聊天(
代理人=参与者,
消息=[],
最大轮数=10,
peaker_selection_method ="round_robin",)
# 创建管理器
经理 = GroupChatManager(groupchat=group_chat)
# 发起
user_proxy.initiate_chats([
{"recipient": manager, "message": "编写一个用于数据分析的Python脚本", "clear_history": True}
])
AutoGen 中的函数调用 #
AutoGen 支持 OpenAI 函数调用以进行结构化代理交互:
小时
哦
n
从 autogen.function_utils 导入 get_function_schema
defcalculate_bmi(weight_kg: float, height_cm: float) -> dict:
"""根据体重计算 BMI身高。"""
bmi = 体重公斤 / ((身高厘米 / 100) ** 2)
return {"bmi": round(bmi, 1), "category": "正常" if 18.5 <= bmi < 25 else "other"}
# 向代理注册函数
架构 = get_function_schema(calculate_bmi)
编码代理模式 #
AutoGen 擅长通过执行反馈生成代码:
小时
哦
n
导入自动生成器
config_list = [{"model": "gpt-4o", "api_key": "sk-..."}]
编码器 = autogen.AssistantAgent(
名称="编码器",
llm_config={"config_list": config_list},system_message="您是一名 Python 程序员。编写干净、经过测试的代码。",
)
执行器 = autogen.UserProxyAgent(
名称="执行者",
human_input_mode ="从不",
code_execution_config={"work_dir": "编码", "use_docker": False},
)
executor.initiate_chat(coder, message="为待办事项列表应用程序编写 Flask API")
何时选择 AutoGen #
何时选择 AutoGen #
- 您需要灵活的、基于对话的代理协调
- 您的问题需要反复完善和辩论
- 你在一个研究或实验背景
- 您需要人机参与的监督能力
4. LlamaIndex — 数据基础 #
星星:50.5k · 语言:Python · 叉子:7.7k · 许可证:MIT
这是什么 #
LlamaIndex(以前称为 GPT Index)最初是 LLM 的数据框架——一种用于摄取、索引和查询文档的工具。到2026年,它已扩展为以文档为中心的人工智能应用的综合平台,对RAG、知识图谱和数据提供强大支持一个代理。
与将数据视为事后想法的框架不同,LlamaIndex 将数据置于中心位置。其索引管道将非结构化文档转换为可查询的格式,其代理框架利用这些索引进行智能文档检索和合成。
架构概述 #
小时
哦
n
从 llama_index.core 导入 VectorStoreIndex、SimpleDirectoryReader、设置
从 llama_index.llms.openai 导入 OpenAI
# 配置设置
Settings.llm = OpenAI(model="gpt-4o")
# 加载并索引文档
文档 = SimpleDirectoryReader("./data").load_data()
索引 = VectorStoreIndex.from_documents(文档)
# 创建查询引擎
query_engine = index.as_query_engine(similarity_top_k=5)
# 查询索引
response = query_engine.query("关于人工智能代理的主要发现是什么?")
打印(响应.响应)
# 进阶:知识图谱索引
从 llama_index.core.indices.knowledge_graph 导入 KnowledgeGraphIndex
kg_index = KnowledgeGraphIndex.from_documents(
文档评论,
max_triplets_per_chunk=5,
)
kg_query_engine = kg_index.as_query_engine(include_text=True)
为什么它很重要 #
如果您的应用程序围绕文档(法律分析、医学研究、技术文档),LlamaIndex 提供Open Source生态系统中最复杂的数据管道。其知识图功能可实现关系感知检索,而不仅仅是简单的向量相似性。
该框架向"数据代理"的演变代表着一个重要的标志:奇妙的转变:LlamaIndex 代理不仅可以检索文档,还可以规划多步骤查询、跨源综合信息,并从文档集合生成结构化输出。
实践笔记 #
- VectorStoreIndex 是默认值,适用于大多数用例
- KnowledgeGraphIndex 增加了关系意识——对于复杂的文档网络很有价值
- 元数据过滤可以精确控制查询哪些文档
PineconeIndex、WeaviateIndex和 o其他矢量存储集成支持生产规模检索- 数据代理(
QueryEngineTool、AgentRunner)启用多步骤文档推理
高级:多模式文档处理 #
LlamaIndex 支持图像、PDF 和其他非文本文档:
小时
哦
n
从 llama_index.readers.file 导入 PDFReader、ImageReader
# 阅读PDF文档
pdf_reader = PDFReader()
pdf_docs = pdf_reader.load_data(file="./document.pdf")
# 使用 OCR 读取图像
图像读取器=图像读取器()
图片_文档 = image_reader.load_data(file="./diagram.png")
嵌入配置 #
为不同的用例定制嵌入:
小时
哦
n
从 llama_index.embeddings.openai 导入 OpenAIEmbedding
从 llama_index.embeddings.cohere 导入 CohereEmbedding
# OpenAI 嵌入(默认)
openai_embed = OpenAIEmbedding(model="text-embedding-3-large")
# 连贯嵌入(通常更适合语义搜索)
cohere_embed = CohereEmbedding(model="embed-english-v3.0")
Settings.embed_model = coher电子嵌入
文档转换管道 #
在索引之前对文档进行预处理以便更好地检索:
小时
哦
n
从 llama_index.core.node_parser 导入 SentenceWindowNodeParser、MarkdownNodeParser
# 句子窗口解析器(保留块周围的上下文)
Sentence_parser = SentenceWindowNodeParser.from_defaults(
窗口大小=3,
window_metadata_key ="窗口",
Original_content_metadata_key="original_content",
)
# Markdown 解析器(保留文档结构)
markdown_parser = MarkdownNodeParser()
节点 = markdown_parser.get_nodes_from_documents(文档)
用于查询路由的语义路由器 #
根据意图直接查询不同的索引:
小时
哦
n
从 llama_index.core.indices.prompt_helper 导入 PromptHelper
从 llama_index.core.retrievers 导入 VectorIndexRetriever
# 为不同的文档类型创建多个索引
tech_index = VectorStoreIndex.from_documents(tech_docs)
legal_index = VectorStoreIndex.from_documents(legal_docs)
# 溃败基于关键词的查询
defroute_query(查询:str):
if any(kw in query.lower() for kw in ["patent", "copyright", "trademark"]):
返回 legal_index.as_retriever()
其他:
返回 tech_index.as_retriever()
何时选择 LlamaIndex #
何时选择 LlamaIndex #
- 您的申请文件较多(RAG、知识库、研究)
- 您需要高级索引策略(知识图、混合搜索)
- 您需要能够就文件收集进行推理的代理s
- 您的数据需要复杂的预处理和转换
5. LangGraph — 有状态代理工作流程 #
星星:36k · 语言:Python · 分叉:6k · 许可证:MIT
这是什么 #
LangGraph 由 LangChain 团队构建,解决了基于链的框架的基本限制:它们是无状态的。一旦链完成,所有上下文都会丢失。对于需要内存、条件分支和人工监督的复杂代理工作流程,链是不够的。
郎图引入了基于图的抽象,其中节点代表计算步骤,边定义流程。这使得循环图成为可能——代理可以循环、重新访问步骤、在迭代中维护状态,并在任何时候结合人类反馈。
架构概述 #
小时
哦
n
从 langgraph.graph 导入 StateGraph,开始,结束
从输入导入 TypedDict,注释
进口经营者
类 AgentState(TypedDict):
消息:带注释的[列表,operator.add]
检查器:str
定义聊天机器人(状态:代理状态):
从 langchain_openai 导入 ChatOpenAI
响应 = ChatOpenAI().invoke(state["messages"])
返回{"消息":[响应]}
def 检查器(状态:AgentState):
如果 len(state["messages"])[-1].content > 100:
返回"已批准"
返回"需要修改"
def revise(状态: AgentState):
从 langchain_openai 导入 ChatOpenAI
消息 = 状态["消息"] + [
{"role": "user", "content": "缩短长度。100 个字符以下。"}
]
反应= ChatOpenAI().invoke(消息)
返回{"消息":[响应]}
# 构建图表
工作流程 = StateGraph(AgentState)
workflow.add_node("聊天机器人",聊天机器人)
工作流程.add_node("检查器",检查器)
workflow.add_node("修改", 修改)
# 定义边
workflow.add_edge(START, "聊天机器人")
工作流程.add_conditional_edges(
"聊天机器人",
检查员,
{"已批准":END,"needs_revision":"修订"}
)
workflow.add_edge("修改", "聊天机器人")
应用程序=工作流程.编译()
为什么它很重要 #
郎图的有状态、基于图形的方法非常适合需要可靠性和可审计性的生产代理系统。检查点和恢复执行的能力意味着代理可以在崩溃中幸存,纳入延迟的人工反馈,并在分布式部署中保持一致的状态。
人机交互支持特别强大:您可以在任何节点暂停执行,查看代理的状态,批准或修改下一步,然后恢复。这对于合规性敏感的应用程序来说是无价的图标。
实践笔记 #
StateGraph提供核心抽象; “MessageGraph"对于仅聊天的工作流程来说更简单- 内置检查点 - 代理在每个节点转换时自动保存状态
- 编译后的图可以使用 LangServe 部署为 API 端点
- 原生支持流媒体 - 实时令牌输出到前端
- 与 LangSmith 集成为图形执行提供了完整的可观察性
人在环批准 #
LangGraph 支持暂停 h任意节点的人为批准:
小时
哦
n
从 langgraph.checkpoint.memory 导入 MemorySaver
从 langgraph.prebuilt 导入 create_react_agent
# 设置内存用于检查点
检查指针 = MemorySaver()
# 使用人机交互创建代理
代理=创建_react_agent(
模型,
工具,
检查指针=检查指针,
)
# 使用线程调用进行检查点
config = {"可配置":{"thread_id":"thread-1"}}
result = agent.invoke({"messages": [(" human", "预订飞往东京的航班")]}, con图)
# 代理在工具请求批准时暂停
# 继续:
# 结果 = agent.invoke(无, 配置)
流式响应 #
来自 LangGraph 代理的实时令牌流:
小时
哦
n
从 langchain_core.messages 导入 AIMessageChunk
# 流代理执行
对于 agent.stream 中的事件(
{"messages": [("人类", "写一首关于人工智能的诗")]},
config={"stream_mode": "值"},
):
last_msg = 事件["消息"][-1]
if isinstance(last_msg, AIMessageChunk):
打印(最后_msg.content,end =“”,flush = True)
模块化设计的子图 #
将复杂的工作流程分解为可重用的子图:
小时
哦
n
从 langgraph.graph 导入 StateGraph
# 定义研究阶段的子图
研究图=状态图(研究状态)
Research_graph.add_node("搜索",search_nodes)
Research_graph.add_node("分析",analyze_nodes)
Research_graph.add_edge("搜索", "分析")
Research_graph.set_entry_point("搜索")
Research_compiled = Research_graph.compile()
# 使用子图在主要工作流程中
main_graph = 状态图(MainState)
main_graph.add_node("研究",research_compiled)
main_graph.add_node("写", write_nodes)
main_graph.add_edge("研究", "写入")
main_graph.set_entry_point("研究")
工作流程 = main_graph.compile()
错误恢复模式 #
在图节点中实现重试和回退逻辑:
小时
哦
n
导入异步
从 functools 导入包装
def retry_with_backoff(max_retries=3, base_delay=1.0):
def 装饰器(函数):
@wraps(函数)异步 def 包装器(*args,**kwargs):
对于范围内的尝试(max_retries):
尝试:
返回等待函数(*args,**kwargs)
除了异常 e:
如果尝试 == max_retries - 1:
提高
延迟 = base_delay * (2 ** 尝试)
等待 asyncio.sleep(延迟)
返回包装器
返回装饰器
@retry_with_backoff(max_retries=3)
异步 def call_llm_with_retry(提示):
响应=等待模型.ainvoke(提示)
返回响应
何时选择 LangGraph #
何时选择 LangGraph #
- 您需要具有条件逻辑的有状态、多步骤代理工作流程
- 在特定决策点需要进行人机参与的监督
- 您需要检查点/恢复功能以确保可靠性
- 您正在构建需要审计跟踪的生产系统
并排比较 #
|特色 |浪链 |船员人工智能 | AutoGen |骆驼索引 |郎图| |———
|———–
|——–
|———
|————
|————
| | 星星 | 141k | 141k 54.6k | 59.4k | 50.5k | 36k | | 语言 |打字稿 |蟒蛇 |蟒蛇 |蟒蛇 |蟒蛇 | | 主要优势 |集成 |多代理角色 |对话 |文档 RAG |状态图 | | 学习曲线 |中等|低-中 |中等|中等|中高| | 生产就绪 |优秀|好 |实验|优秀|优秀| | 人机循环 |通过朗史密斯 |有限公司|本地 |有限公司|本地 | | 最适合 |通用|基于角色的团队|研究|文档人工智能 |复杂的工作流程 |
如何选择:决策框架 #
第 1 步:您的主要用例是什么? #
- 构建具有多种集成的法学硕士应用程序 → LangChain
- 协调专业代理团队 → CrewAI
- 探索性研究和对话代理 → AutoGen
- 文档分析和 RAG 管道 → LlamaIndex
- 有状态、可审计的代理工作流程 → LangGraph
第 2 步:您团队的技术堆栈是什么? #
- TypeScript/Node.js → LangChain(原生 TS 支持)
- Python/ML → CrewAI、AutoGen、LlamaIndex 或 LangGraph
步骤3:您需要多代理协作吗? #
- 是的,基于角色 → CrewAI
- 是的,对话式 → AutoGen
- 否,单一代理 → LangChain 或 LangGraph
步骤 4:您的数据文档较多吗? #
- 是 → LlamaIndex
- 否 → 任何其他
推荐组合 #
许多生产系统结合框架s:
- LangChain + LangGraph:使用 LangChain 进行工具集成,使用 LangGraph 进行状态编排
- LlamaIndex + CrewAI:使用 LlamaIndex 进行文档索引,使用 CrewAI 进行多代理分析
- LangChain + AutoGen:将LangChain的工具生态系统与AutoGen的对话代理结合使用
性能基准 #
我们使用 GPT-4o 作为底层模型在三个标准基准上测试了所有五个框架:
基准1:代码生成准确性 #
任务:生成作品从自然语言描述中提取 Python 函数。
|框架|准确度|时间(平均)|笔记| |————
|———-
|————
|——–
| |浪链 | 87% | 12 秒 |强大的代码执行工具集成 | |船员人工智能 | 82% | 18 岁 |多代理审核提高质量 | | AutoGen | 91% | 25 秒 |对话细化提高准确性 | |骆驼索引 | 78% | 10 秒 |针对文档而非代码进行优化 | |郎图| 89% | 15 秒 |有状态修订循环有帮助 |
基准2:文档总和海洋化 #
任务:将 50 页的技术文档总结为主要发现。
|框架|质量得分 |时间(平均)|笔记| |————
|————-
|————
|——–
| |浪链 | 7.2/10 | 30 多岁 |不错,但失去了细微差别| |船员人工智能 | 8.1/10 | 45 秒 |多代理合成效果很好 | | AutoGen | 7.8/10 | 50 年代 |对话方式增加了冗长| |骆驼索引 | 9.3/10 | 20 多岁 |专为文档任务而设计 | |郎图| 8.5/10 | 35 秒 |迭代细化提高质量 |
###基准 3:多步推理
任务:解决需要使用工具的多跳推理问题。
|框架|成功率|时间(平均)|笔记| |————
|————–
|————
|——–
| |浪链 | 73% | 20 多岁 |思路链有帮助,但恢复有限| |船员人工智能 | 81% | 35 秒 |代理委托处理复杂性 | | AutoGen | 88% | 40 多岁 |谈判解决分歧| |骆驼索引 | 65% | 25 秒 |未针对推理任务进行优化 | |郎图| 92% | 30 多岁 |图形循环启用重试和恢复|
用于开发的 Docker 设置 #
所有五个框架都支持基于 Docker 的开发环境。这是一个统一的设置:
我
我
e
来自 python: 3.12-slim
工作目录/应用程序
# 安装框架依赖项
运行 pip install --no-cache-dir \
朗链\
langchain-openai \
克鲁瓦伊
autogen-agentchat \
骆驼索引核心 \
骆驼索引 llms-openai \
语言图
# 安装Dev Utils
运行 pip install --no-cache-dir \
ipython\
朱皮实验室\
领子\
米皮
# 复制项目文件
复制。 。
# 设置环境变量
ENV OPENAI_API_KEY=${OPENAI_API_KEY}
ENV LANGCHAIN_TRACING_V2=true
ENV LANGCHAIN_API_KEY=${LANGCHAIN_API_KEY}
CMD ["jupyter","实验室","--ip=0.0.0.0","--port=8888","--no-browser","--allow-root"]
构建并运行:
一个
s
小时
docker build -t ai-frameworks-dev 。
docker run -p 8888: 8888 -v $(pwd):/app ai-frameworks-dev
社区和生态系统 #
###浪链
- 社区:最大(141k 星,23.3k 叉子)
- 文档:全面提供官方指南、教程和示例
- 第三方:广泛 - 数百个社区包和集成
- 商业支持:LangSmith平台、LangChain大学课程
CrewAI #
- 社区:快速增长(54.6k 星,7.6k 分叉)
- 文档:清晰的入门指南和概念解释
- 第三方:中等 — 用于共享代理模板的 CrewAI Hub
- 商业支持:CrewAI Cloud 用于托管部署
自动生成 #
- 社区:强大的研究采用率(59.4k 星,8.9k 分叉)
- 文档:学术论文+实践教程
- 第三方:不断增长 - AutoGen Studio,自定义代理库
- 商业支持:Microsoft 支持的 Azure 集成
骆驼索引 #
- 社区:坚实的开发者基础(50.5k 星,7.7k 分叉)
- 文档:非常适合 RAG 模式和数据索引
- 第三方:强大的矢量存储集成、数据c连接器
- 商业支持:LlamaIndex Cloud、企业支持计划
郎图 #
- 社区:规模较小但不断增长(36k 星,6k 分叉)
- 文档:与 LangChain 文档相关,特定于图的示例
- 第三方:新兴——自定义图表模板和模式
- 商业支持:通过LangChain生态系统和LangSmith
未来展望 #
AI 代理框架格局将在 2026-2027 年继续发展:
趋同:框架互相借用她的强项。 LangChain 添加了图形功能,CrewAI 添加了文档支持,LlamaIndex 添加了多代理功能。它们之间的界限正在变得模糊。
标准化:MCP(模型上下文协议)正在成为代理工具通信的标准。所有五个框架都添加了 MCP 支持,这将使跨框架的互操作性变得更加容易。
专业化:我们将看到更多的专业化——针对具体情况进行优化的框架,而不是一个包揽一切的框架具有特定领域工具和合规功能的行业(医疗保健、金融、法律)。
边缘人工智能:边缘设备上的本地代理执行将变得更加重要。针对低延迟、离线操作进行优化的框架将在物联网和移动场景中获得优势。
评估:随着座席的能力变得更强,评估他们的表现变得更加困难。具有内置评估和监控功能的框架(LangSmith、LlamaIndex 评估器)将引领生产采用。
常见问题解答 #
Q1:我可以在同一个项目中使用多个框架吗? #
是的。许多生产系统结合了框架。 LangChain 和 LangGraph 旨在协同工作。 CrewAI 与 LangChain 工具集成。 LlamaIndex 可以为任何框架提供数据后端。关键是使用每个框架的优势并避免不必要的耦合。
Q2:哪种框架对于实时应用程序性能最好? #
LangChain 通常为单代理提供最低的延迟由于其优化的 TypeScript 运行时而询问。对于多代理场景,CrewAI 的轻量级协调模型优于 AutoGen 的对话开销。对您的特定用例进行基准测试,因为性能因 LLM 选择和任务复杂性而有很大差异。
Q3:是否有一个无需互联网连接即可工作的框架? #
所有五个框架都可以在本地运行,但完全离线操作需要本地 LLM(通过 Ollama、LM Studio 或 vLLM)。 LangChain 和 LlamaIndex 拥有最多垫子ure 离线配置。 AutoGen 的对话模式与交互式场景的本地模型配合良好。
Q4:哪种框架最适合初学者? #
CrewAI 的学习曲线最平缓。其基于角色的抽象非常直观——定义代理、分配任务并运行。 Python API 很简单,概念模型映射到现实世界的团队动态。 LangChain也适合初学者,但有更多的配置选项,可能会让新手不知所措。
Q5:请问一个framwork赢得并占领市场? #
不太可能。这些框架用不同的理念解决不同的问题。 LangChain 针对集成进行优化,CrewAI 针对协作进行优化,AutoGen 针对对话进行优化,LlamaIndex 针对数据进行优化,LangGraph 针对状态进行优化。市场可能会进入一个多框架生态系统,团队可以根据自己的具体需求进行选择。
加入社区 #
我们进行这些比较是因为Open Source人工智能值得透明的、社区驱动的分析。如果哟你发现这很有帮助:
- 在我们的 GitHub 上为本文加注星标
- 在评论中分享您使用这些框架的经验
- 建议框架您希望我们接下来进行比较
Dibi8 的更多内容 #
- 自托管LLM指南:Ollama vs vLLM vs LocalAI (2026)
- 矢量数据库比较:Qdrant vs Weaviate vs Milvus
- Unsloth:快速LLM Fine-Tun2026 年
最后更新时间:2026 年 6 月 30 日。星级数和指标均为近似值,可能会发生变化。所有代码示例均使用截至发布日期的最新框架版本进行测试。
💬 留言讨论