
一、前言
LangChain功能大而全,做了很多封装和抽象,由此也带来了限制;AutoGen具备LLM的基本功能,同时有支持Multi-Agent的特长;LlamaIndex就是一个纯粹的数据交互框架。
二、LangChain
LangChain 是一个基于大型语言模型(LLM)开发应用程序的框架。
LangChain 简化了LLM应用程序生命周期的每个阶段:
-
开发:使用 LangChain 的开源构建模块和组件构建应用程序。使用第三方集成(opens in a new tab)和模板(opens in a new tab)快速上手。 -
生产化:使用LangSmith检查、监控和评估你的链条,以便你可以持续优化和自信地部署。 -
部署:使用LangServe(opens in a new tab)将任何链条转变为 API。
//图图图
具体而言,该框架由以下开源库组成:
-
langchain-core:基本抽象和 LangChain 表达式语言。 -
langchain-community:第三方集成。 合作伙伴包(例如 langchain-openai,langchain-anthropic 等):某些集成已进一步拆分为仅依赖于 langchain-core 的轻量级包。 -
langchain:构成应用程序认知架构的链条、代理和检索策略。 -
langgraph(opens in a new tab):通过将步骤建模为图中的边缘和节点,使用LLMs构建强大且有状态的多角色应用程序。 -
langserve(opens in a new tab):将 LangChain 链条部署为 REST API。
2.1 LangChain的优点和限制
LangChain 引入了三个新的抽象:
-
提示模板:为 LLM 提供提示 -
输出解析器:处理 LLM 的输出 -
Chains:LangChain 的“LCEL 语法”覆盖了 Python 的 |运算符 这三点,既是强大的功能,也是巨大的限制。 一句话总结:受益于 LangChain 也受限于 LangChain,还是根据自己的场景谨慎使用!
三、AutoGen
AutoGen 是一个框架,它支持使用多个可以相互交流以解决任务的代理来开发 LLM 应用程序。AutoGen 代理可自定义、可通信,并可无缝允许人类参与。它们可以采用多种模式运行,这些模式结合了 LLM、人类输入和工具。
//图图图
-
AutoGen能够以最小的努力构建基于多代理对话的下一代 LLM 应用程序。它简化了复杂 LLM 工作流程的编排、自动化和优化。它最大限度地提高了 LLM 模型的性能并克服了它们的弱点。 -
它支持复杂工作流的多种对话模式。借助可自定义且可对话的代理,开发人员可以使用 AutoGen 构建有关对话自主性、代理数量和代理对话拓扑的各种对话模式。 -
它提供了一系列复杂程度不同的工作系统。这些系统涵盖了来自不同领域和复杂程度的广泛应用。这展示了 AutoGen 如何轻松支持多种对话模式。 -
AutoGen 提供增强的 LLM 推理。它提供 API 统一和缓存等实用程序,以及错误处理、多配置推理、上下文编程等高级使用模式。
3.1 多代理对话框架
Autogen 为下一代 LLM 应用程序提供了通用的多代理对话框架。它提供可定制且可对话的代理,将 LLM、工具和人员集成在一起。通过自动在多个有能力的代理之间进行聊天,可以轻松地让他们集体自主执行任务或在人工反馈下执行任务,包括需要通过代码使用工具的任务。
此用例的特点包括:
-
多代理对话:AutoGen 代理可以相互通信以解决任务。与单个 LLM 相比,这可以实现更复杂、更精密的应用程序。 -
定制:AutoGen 代理可以定制以满足应用程序的特定需求。这包括选择要使用的 LLM、允许的人工输入类型以及要使用的工具。 -
人工参与:AutoGen 无缝允许人工参与。这意味着人类可以根据需要向代理提供输入和反馈。
四、llama_index
LlamaIndex 是 LLM 应用程序的数据框架。使用 LlamaIndex 进行构建通常涉及使用 LlamaIndex 核心和一组选定的集成(或插件)。 有两种方法可以开始使用 Python 中的 LlamaIndex 进行构建:
-
Starter:llama-index(https://pypi.org/project/llama-index/)。入门级 Python 包,包括核心 LlamaIndex 以及一系列集成。
-
Customized:llama-index-core(https://pypi.org/project/llama-index-core/)。安装核心 LlamaIndex 并在LlamaHub上添加您选择 的应用程序所需的 LlamaIndex 集成包。有超过 300 个 LlamaIndex 集成包可与核心无缝协作,让您可以使用您喜欢的 LLM、嵌入和向量存储提供程序进行构建。
LlamaIndex Python 库具有命名空间,因此包含 import 语句core意味着正在使用核心包。相反,不包含 import 语句core意味着正在使用集成包。
# typical pattern
from llama_index.core.xxx import ClassABC # core submodule xxx
from llama_index.xxx.yyy import (
SubclassABC,
) # integration yyy for submodule xxx
# concrete example
from llama_index.core.llms import LLM
from llama_index.llms.openai import OpenAI
4.1 最佳实践
这就是LlamaIndex 的作用所在。LlamaIndex 是一个“数据框架”,可帮助您构建 LLM 应用程序。它提供以下工具:
-
提供数据连接器来获取您现有的数据源和数据格式(API、PDF、文档、SQL 等)。 -
提供构建数据(索引、图表)的方法,以便这些数据可以轻松地与 LLM 一起使用。 -
为您的数据提供高级检索/查询接口:输入任何 LLM 输入提示,获取检索到的上下文和知识增强输出。 -
允许轻松与外部应用程序框架集成(例如 LangChain、Flask、Docker、ChatGPT 等)。
-LlamaIndex 为初学者和高级用户提供了工具。我们的高级 API 允许初学者使用 LlamaIndex 以 5 行代码提取和查询他们的数据。我们的低级 API 允许高级用户自定义和扩展任何模块(数据连接器、索引、检索器、查询引擎、重新排名模块),以满足他们的需求。
五、总结
尽管,将LangChain、AutoGen、LlamaIndex列为了Ai Agent三雄,实际上它们还是有非常大的区别。
-
LangChain可以看作是一个大而全的框架,而且提供了开发、部署、上线生产的全流程的解决方案,封装的程度更深。更像一个封闭的Web框架。 -
AutoGen作为微软引领的LLM开发框架,除了一些Ai Agent基本功能之外,主打的就是多Agent的交互,如果项目中有这类需求,则非常合适。 -
LlamaIndex仅仅是一个数据框架,用来与各种模型数据库打交道,功能还是非常的单一的。它更像一个ORM框架。
一句话,如果是开发比较标准的Ai Agent用LangChain可以大幅提高开发效率,但是如果要开发交互流程独特或需求特别的Agent,LangChain就成啦一种限制。还是那句话,适合自己业务场景的方案才是最好的方案。
如果本文对您有帮助的话,欢迎 点赞&在看&分享,这对我继续分享和创作优质内容是莫大的鼓励,再次感谢?


