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 颗星反映了学术界和工业界的广泛采用。

实践笔记 #

  • GroupChatGroupChatManager 支持通过发言人选择进行多代理对话
  • 代码执行沙箱是可配置的 - 建议使用 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 增加了关系意识——对于复杂的文档网络很有价值
  • 元数据过滤可以精确控制查询哪些文档
  • PineconeIndexWeaviateIndex 和 o其他矢量存储集成支持生产规模检索
  • 数据代理(QueryEngineToolAgentRunner)启用多步骤文档推理

高级:多模式文档处理 #

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 年继续发展:

  1. 趋同:框架互相借用她的强项。 LangChain 添加了图形功能,CrewAI 添加了文档支持,LlamaIndex 添加了多代理功能。它们之间的界限正在变得模糊。

  2. 标准化:MCP(模型上下文协议)正在成为代理工具通信的标准。所有五个框架都添加了 MCP 支持,这将使跨框架的互操作性变得更加容易。

  3. 专业化:我们将看到更多的专业化——针对具体情况进行优化的框架,而不是一个包揽一切的框架具有特定领域工具和合规功能的行业(医疗保健、金融、法律)。

  4. 边缘人工智能:边缘设备上的本地代理执行将变得更加重要。针对低延迟、离线操作进行优化的框架将在物联网和移动场景中获得优势。

  5. 评估:随着座席的能力变得更强,评估他们的表现变得更加困难。具有内置评估和监控功能的框架(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 的更多内容 #


最后更新时间:2026 年 6 月 30 日。星级数和指标均为近似值,可能会发生变化。所有代码示例均使用截至发布日期的最新框架版本进行测试。

💬 留言讨论