AI Agent框架如何选择?LangGraph vs CrewAI vs OpenAI Swarm

介绍

由 LLMs经历了起起落落。从 2023 年 AutoGPT 和 BabyAGI 的病毒式演示到今天更精致的框架,AI Agent的概念——LLMs自主执行端到端任务的 LLM——既引起了人们的想象力,也引起了怀疑。

为什么重新引起人们的兴趣?LLMs 在过去 9 个月中进行了重大升级:更长的上下文窗口、结构化的输出、更好的推理和简单的工具集成。这些进步使构建可靠的AI Agent应用程序比以往任何时候都更加可行。

在这篇博客中,我们将探讨用于构建代理应用程序的三个流行框架:LangGraph、CrewAI 和 OpenAI Swarm。通过使用 Agentic Finance Assistant 的动手示例,我们将重点介绍每个框架的优势、劣势和实际用例。

什么是AI Agent

AI Agent是由大型语言模型 (LLMs,可以独立地与其环境交互并实时做出决策。与传统的 LLM的结构是刚性的预定义管道(例如 A → B → C),AI Agent工作流引入了一种动态和自适应的方法。AI Agent利用工具(支持与环境交互的功能或 API)根据上下文和目标决定下一步。这种灵活性使代理能够偏离固定序列,从而实现更自主、更高效的工作流程,以适应复杂和不断发展的任务。

但是,这种灵活性也带来了一系列挑战:
跨任务管理状态和内存。
编排多个子AI Agent及其通信架构。
确保工具调用可靠,并在出现复杂错误情况时进行处理。
大规模处理推理和决策。

为什么我们需要AI Agent 框架

从头开始构建AI Agent并非易事。LangGraph、CrewAI 和 OpenAI Swarm 等框架简化了流程,使开发人员能够专注于他们的应用程序逻辑,而不是重新发明状态管理、编排和工具集成的轮子。

在其核心,代理框架提供

  • 定义代理和工具的简单方法
  • 编排机制
  • 状态管理
  • 支持更复杂应用程序的其他工具,例如:持久层(内存)、中断等
    我们将在以下部分中逐一介绍这些。

代理框架简介

我们选择了 LangGraph、CrewAI 和 OpenAI Swarm,因为它们代表了代理开发的最新思想流派。下面是一个快速概述:

LangGraph

LangGraph :顾名思义,LangGraph 将图形架构视为定义和编排代理工作流的最佳方式。与早期版本的 LangChain 不同,LangGraph 是一个设计精良的框架,具有许多为生产环境构建的健壮且可定制的功能。但是,对于某些使用案例,它有时比所需的要复杂得多,并且可能会产生额外的开销。

CrewAI

相比之下,CrewAI 的入门要简单得多。它带有直观的抽象,可帮助您专注于任务设计,而不是编写复杂的编排和状态管理逻辑。但是,权衡是它是一个高度固执己见的框架,并且以后更难定制。

OpenAI Swarm

OpenAI 将一个轻量级、极简主义框架描述为“教育性”而不是“生产就绪”。OpenAI Swarm 几乎代表了一个“反框架”——将许多功能留给开发人员来实现,或者让强大的 LLMs 自己弄清楚。我们相信,它可能非常适合那些目前使用案例简单的人,或者那些希望将灵活的代理工作流程集成到现有 LLM。

其他值得注意的框架

LlamaIndex 工作流

一个事件驱动框架,在概念上非常适合许多代理工作流。但是,就目前而言,我们发现它仍然需要开发人员编写大量样板代码才能使其正常工作。LlamaIndex 团队正在积极改进 Workflow 框架,我们希望他们尽快创建更多高级抽象。

AutoGen

AutoGen 是 Microsoft 为多代理对话编排开发的框架,已被用于各种代理用例。从早期版本的错误和反馈中吸取教训,AutoGen 团队正在将 v0.2 完全重写(从 v0.2 重写到 v0.4)到事件驱动的编排框架。

构建财务助理 AI Agent

为了对这些框架进行基准测试,我们利用每个框架构建了相同的代理财务助手。此处提供了所构建应用程序的完整代码:Relari 代理示例。

我们希望AI Agent处理复杂的查询,例如:

  • Spirit Airlines 的财务状况与竞争对手相比如何?
  • 从财务角度来看,Apple 表现最好的产品线是什么?他们在他们的网站上营销什么?
  • 找到一些市值低于 50 亿美元但收入同比增长超过 20% 的消费类股票

为了实现这些目标,我们通过 FMP API 为AI Agent系统提供对金融数据库的访问,并为研究 Internet 内容提供 Internet 访问。

在构建AI Agent 应用程序时,我们首先需要采取的选择之一是架构。有几种架构,每种架构都有其优点和缺点。在下图中,LangGraph 总结了一些流行的架构(您可以在此处阅读有关架构选择的更多信息:多代理架构)。
在这里插入图片描述
我们为此应用程序选择了 Supervisor 架构,用于教育目的。因此,我们将创建一个 Supervisor Agent,其任务是决定将哪个子代理委派给任务,以及三个具有工具访问权限的子AI Agent:一个金融数据AI Agent、一个 Web 研究AI Agent和一个摘要AI Agent。
在这里插入图片描述

让我们探讨一下每个框架如何处理AI Agent创建、工具集成、编排、内存和人机交互。

1. 定义代理和工具

我们首先看看如何定义常规AI Agent,如 Financial Data Agent、Web Research Agent 和 Output Summarizing Agent,并在每个框架中声明其相关工具。Supervisor Agent 是一个扮演编排角色的特殊代理,因此我们将在 Orchestration 部分中介绍。

LangGraph

创建简单的工具调用Agent的最简单方法是使用预构建的 create_react_agent 函数,如下所示,我们可以在其中提供我们希望此代理操作的工具和提示。

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool

# Below is one example of a tool definition
@tool
def get_stock_price(symbol: str) -> dict:
    """Fetch the current stock price for a given symbol.
    Args:
        symbol (str): The stock ticker symbol (e.g., "AAPL" for Apple Inc.).
    Returns:
        dict: A dictionary containing the stock price or an error message.
    """
    base_url = "https://financialmodelingprep.com/api/v3/quote-short"
    params = {
   
   "symbol": symbol, "apikey": os.getenv("FMP_API_KEY")}

    response = requests.get(base_url, params=params)
    if response.status_code == 200:
        data = response.json()
        if data:
            return {
   
   "price": data[0]["price"]}
    return {
   
   "error": "Unable to fetch stock price."}

# Below is one example of a simple react agent
financial_data_agent = create_react_agent(
    ChatOpenAI(model="gpt-4o-mini"),
    tools=[get_stock_price, get_company_profile, ...],
    state_modifier="You are a financial data agent responsible for retrieving financial data using the provided API tools ...",
)

在 LangGraph 中,一切都被结构化为一个图形。实用程序函数create_react_agent创建一个简单的可执行图形,其中包含 agent 节点和 tool 节点。

在这里插入图片描述
代理充当决策者,动态确定要调用哪些工具,并评估它是否有足够的信息来转换为 end 状态。
在图中,实线表示确定性边缘(Tool 节点必须始终返回到代理),而虚线表示条件边缘,其中 LLM 驱动的Agent正在决定下一步的去向。
节点和边是图的基础构建块。我们稍后将在编排部分看到,此图可以表示为更大、更复杂的图中的节点。

</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添财小哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值