5个最佳多代理AI开发框架

LIBRARY Dec 5, 2024

大型语言模型 (LLM) 可以自动执行复杂且连续的工作流程和任务。例如,你可以使用 LLM 构建助手,这些助手可以代表你自动订购在线产品并在市场应用中安排送货。这些基于 LLM 的助手称为代理(Agent)。代理是一个由 LLM 驱动的助手,被分配了特定的任务和工具来完成这些任务。在其基本形式中,典型的 AI 代理可能配备内存来存储和管理用户交互、与外部数据源通信以及使用函数执行其任务。

代理可以做什么的常见示例包括以下内容。

  • 餐厅预订:例如,餐厅系统中的应用内 AI 代理可以设计为帮助用户进行在线预订、比较不同的餐厅以及通过实时语音交互呼叫用户喜欢的餐厅。
  • 资深同事:代理可以充当副驾驶,与用户合作完成特定项目。
  • 自动化操作:代理有助于执行需要几个甚至数百个步骤的任务,例如日常使用计算机。例如,Replit Agent(实验项目)通过执行开发人员在集成开发环境 (IDE) 中执行的相同操作,提供了一种构建事物的好方法。代理可以像开发人员一样安装项目依赖项并编辑代码。Anthropic 的 Computer Use(公开测试版)代理可以指示 Claude 以人们使用计算机的方式在计算机上执行任务。Computer Use 代理可以查看计算机屏幕并在其中导航。它可以移动鼠标光标、单击按钮和输入文本。

从头开始构建这些代理助手需要大量的团队努力和其他考虑因素,例如管理用户代理聊天记录、与其他系统集成等。以下部分探讨了用于构建和向应用程序添加 AI 代理的前五大平台。我们将探讨这些框架的主要功能和优势,并演示使用其中一些构建代理的代码示例。

1、Phidata

Phidata 是一个基于 Python 的框架,用于将大型语言模型转换为 AI 产品的代理。它与 OpenAI、Anthropic、Cohere、Ollama、Together AI 等知名提供商的封闭和开放 LLM 兼容。借助其数据库和向量存储支持,你可以轻松地将你的 AI 系统与 Postgres、PgVector、Pinecone、LanceDb 等连接起来。使用 Phidata,你可以使用函数调用、结构化输出和微调来构建基本 AI 代理和高级代理。Phidata 还提供免费、专业和企业定价。查看他们的网站以了解更多信息并开始使用。

Phidata 的主要功能:

  • 内置代理 UI:Phidata 有一个现成的 UI,用于在本地和云中运行代理项目,并在后台管理会话。
  • 部署:你可以将代理发布到 GitHub 或任何云服务,也可以连接你的 AWS 帐户以将它们部署到生产中。
  • 监控关键指标:获取会话、API 调用、令牌的快照,调整设置并改进你的代理。
  • 模板:使用预配置的代码库加快 AI 代理的开发和生产。
  • 亚马逊 Web 服务 (AWS) 支持:Phidata 与 AWS 无缝集成,因此您可以在 AWS 帐户上运行整个应用程序。
  • 模型独立性:你可以将来自 OpenAI、Anthropic、Groq 和 Mistral 等领先提供商的模型和 API 密钥带入 Phidata。
  • 构建多代理:你可以使用 Phidata 构建一个代理团队,这些代理可以相互转移任务并协作执行复杂任务。Phidata 将无缝处理后端代理的编排。

1.1 使用 Phidata 和 OpenAI 构建基本 AI 代理

本节演示如何用 Python 构建一个基本 AI 代理来查询 Yahoo Finance 的财务数据。代理将使用 Phidata 框架和来自 OpenAI 的大型语言模型构建。它旨在通过 Yahoo Finance 总结分析师对各种公司的建议。

步骤1:为你的 Python项目设置虚拟环境

Python 虚拟环境将确保此项目的代理依赖项不会干扰设备上其他 Python 项目的依赖项。虚拟环境将使你的项目依赖项井然有序,并防止全局 Python 安装中出现冲突和问题。要了解更多信息,请参阅设置你的编码环境

在此示例中,我们将在 Cursor AI 代码编辑器中创建 Python 项目。但是,你可以使用任何你喜欢的 IDE。创建一个空文件夹并在 Cursor 中打开它。添加一个新的 Python 文件 financial_agent.py。使用以下终端命令设置你的虚拟环境。

# Create a venv in the current directory
python -m venv venv

source venv/bin/activate
步骤2:安装依赖项

在终端中运行以下命令以添加 Phidata 和 OpenAI 作为依赖项。我们还安装了 Yahoo Finance 和 python-dotenv 包。

pip install -U phidata openai

# Loads environment variables from a .env 
pip install python-dotenv

#  Fetch financial data from Yahoo Finance

pip install yfinance
步骤3:创建财务 AI 代理

创建一个新文件 financial_ai_agent.py 并将其内容替换为以下内容。

import openai
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.yfinance import YFinanceTools
from dotenv import load_dotenv
import os

# Load environment variables from .env file
load_dotenv()

# Get API key from environment
openai.api_key = os.getenv("OPENAI_API_KEY")

# Initialize the agent
finance_agent = Agent(
    name="Finance AI Agent",
    model=OpenAIChat(id="gpt-4o"),
    tools=[
        YFinanceTools(
            stock_price=True,
            analyst_recommendations=True,
            company_info=True,
            company_news=True,
        )
    ],
    instructions=["Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)
finance_agent.print_response("Summarize analyst recommendations for NVDA", stream=True)

让我们总结一下我们的基本 AI 代理的示例代码。首先,我们导入所需的模块和包,并从 .env 文件加载 OpenAI API 密钥。加载 API 密钥的工作方式与使用其他模型提供程序(如 Anthropic、Mistral 和 Groq)类似。

接下来,我们使用 Phidata 的 Agent 类创建一个新代理,并指定其独特的特性和功能。这些包括模型、工具、代理说明等。最后,我们打印出代理的响应并说明答案是否应该流式传输 stream=true

使用以下命令运行代理:

python3 financial_agent.py

恭喜!👏 你现在已经构建了第一个 AI 代理,它以表格形式为指定公司提供财务见解和摘要。

1.2 使用 Phidata 构建高级/多 AI 代理

上一节向你展示了如何使用 Phidata 和 OpenAI 以及使用来自 Yahoo Finance 的财务数据构建基本 AI 代理。本节将基于前一个代理并将其扩展为多代理(代理团队)。我们的最后一个代理示例解决了一个特定问题。我们现在可以利用多代理的功能来创建一个由个人贡献代理组成的团队来解决复杂问题。

代理团队将由两名成员组成,他们共同在网络上搜索信息并分享指定公司财务数据的摘要。

步骤1:安装其他依赖项

由于此示例使用 DucDucGo 搜索从网络获取信息,因此我们应该安装其软件包。为你的项目创建一个新的 Python 文件 multi_ai_agent.py,并运行以下命令以将 DucDucGo 添加为依赖项。

pip install duckduckgo-search

使用下面的示例代码填写 multi_ai_agent.py 的内容。

from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
from phi.tools.yfinance import YFinanceTools

web_search_agent = Agent(
    name="Web Search Agent",
    role="Search the web for information",
    model=OpenAIChat(id="gpt-4o"),
    tools=[DuckDuckGo()],
    instructions=["Always include sources"],
    show_tool_calls=True,
    markdown=True,
)

finance_agent = Agent(
    name="Finance Agent",
    role="Get financial data",
    model=OpenAIChat(id="gpt-4o"),
    tools=[
        YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)
    ],
    instructions=["Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

multi_ai_agent = Agent(
    team=[web_search_agent, finance_agent],
    instructions=["Always include sources", "Use tables to display data"],
    show_tool_calls=True,
    markdown=True,
)

multi_ai_agent.print_response(
    "Summarize analyst recommendations and share the latest news for NVDA", stream=True
)

由于本节中的示例代理扩展了前一个代理,我们添加了 DuckDuckGo 的导入 from phi.tools.duckduckgo import DuckDuckGo。然后,我们创建单独的贡献代理 web_search_agentfinance_agent,为他们分配不同的角色,并为他们配备完成任务所需的工具和说明。

使用 python3 multi_ai_agent.py 运行多代理文件 multi_ai_agent.py。现在你将看到类似于以下预览的输出:

从上面的示例代码中, multi_ai_agent 由两个团队成员 team=[web_search_agent, finance_agent] 组成。 web_search_agent 链接财务信息, finance_agent 的作用与上一节相同。

1.3 Phidata:构建推理 AI 代理

借助 Phidata 的易用性和简单性,我们可以构建一个功能齐全的代理,该代理在回答之前会思考,并且代码要短得多。例如,如果我们指示我们的思考代理使用指定的编程语言编写代码,代理将开始思考并实施分步指南以解决问题,然后再做出响应。创建一个新文件 reasoning_ai_agent.py,并使用此示例代码填充其内容。

from phi.agent import Agent
from phi.model.openai import OpenAIChat

task = "Create a SwiftUI view that allows users to switch between the tab bar and sidebar views using TabView and .tabView(.sidebarAdaptable) modifier. Put the content in TabSidebar.swift"

reasoning_agent = Agent(
    model=OpenAIChat(id="gpt-4o-mini"),
    reasoning=True,
    markdown=True,
    structured_outputs=True,
)
reasoning_agent.print_response(task, stream=True, show_full_reasoning=True)

在此示例中,我们指定提示任务,如代码所示。然后,我们创建一个新的代理,其中 reasoning=True,使其成为一个思考代理。当你运行 reasoning_ai_agent.py时,应该会看到类似于以下预览的结果。

2、OpenAI Swarm

Swarm 是 OpenAI 最近发布的开源实验性代理框架。它是一个轻量级的多代理编排框架。

注意:撰写本文时,Swarm 处于实验阶段。它可用于开发和教育目的,但不应在生产中使用。此阶段可能会发生变化,因此请查看上面的 GitHub 存储库以获取更多更新。

Swarm 使用代理和切换作为代理编排和协调的抽象。它是一个轻量级框架,可以进行有效的测试和管理。Swarm 的代理组件可以配备工具、指令和其他参数来执行特定任务。

除了 Sawarm 的轻量级和简单架构外,它还具有以下主要功能。

  • 切换对话:使用 Swarm 构建多代理系统为一个代理在任何时候将对话转移或切换给其他代理提供了一种极好的方式。
  • 可扩展性:Swarm 的简单性和切换架构使构建可扩展到数百万用户的代理系统变得容易。
  • 可扩展性:它在设计上易于高度定制。您可以使用它来创建完全定制的代理体验。
  • 它具有内置检索系统和内存处理。
  • 隐私:Swarm 主要在客户端运行,不会在调用之间保留状态。完全在客户端运行有助于确保数据隐私。
  • 教育资源:Swarm 有鼓舞人心的代理示例用例,您可以将其作为起点运行和测试。这些示例包括从基本到高级的多代理应用程序。

2.1 构建基本 Swarm 代理

要开始使用 Swarm,请访问其 GitHub 存储库并运行这些命令来安装它。安装需要 Python 3.10+。

pip install git+ssh://git@github.com/openai/swarm.git

或:

pip install git+https://github.com/openai/swarm.git

注意:如果在运行上述任何命令后遇到错误,则应通过附加 --upgrade 来升级它们。因此,它们变为:

pip install --upgrade git+ssh://git@github.com/openai/swarm.git
pip install --upgrade git+https://github.com/openai/swarm.git

以下多代理示例使用 OpenAI 的 gpt-4o-mini 模型构建一个支持任务交接的基本双团队代理系统。

from swarm import Swarm, Agent

client = Swarm()
mini_model = "gpt-4o-mini"

# Coordinator function
def transfer_to_agent_b():
    return agent_b

# Agent A
agent_a = Agent(
    name="Agent A",
    instructions="You are a helpful assistant.",
    functions=[transfer_to_agent_b],
)

# Agent B
agent_b = Agent(
    name="Agent B",
    model=mini_model,
    instructions="You speak only in Finnish.",
)

response = client.run(
    agent=agent_a,
    messages=[{"role": "user", "content": "I want to talk to Agent B."}],
    debug=False,
)

print(response.messages[-1]["content"])

在上面的例子中,  编排器  transfer_to_agent_b 负责将对话从 agent_a 移交给 agent_b 用指定语言编写响应并跟踪其进度。如果你将 agent_b 指令的语言更改为不同的语言(例如英语、瑞典语、芬兰语),将看到类似于下图的输出。

Swarm 的企业就绪性

从其 GitHub 存储库中,你会将请注意,它仍在开发中,将来可能会发生变化。你可以开始将其用于实验目的。有关高级 Swarm 代理用例,请查看 OpenAI 的这些 GitHub 示例。

3、CrewAI

CrewAI 是最流行的基于代理的 AI 框架之一。它允许你快速构建 AI 代理并将其与最新的 LLM 和你的代码库集成。Oracle、Deloitte、Accenture 等大型公司都在使用和信任它。

CrewAI 的优势和主要功能:

  • 与其他基于代理的框架相比,CrewAI 的功能和功能更加丰富。
  • 可扩展性:它与 700 多个应用程序集成,包括 Notion、Zoom、Stripe、Mailchimp、Airtable 等。
  • 工具:开发人员可以利用 CrewAI 的框架从头开始构建多代理自动化。设计人员可以使用其 UI Studio 和模板工具在无代码环境中创建功能齐全的代理。
  • 部署:你可以使用你喜欢的部署类型快速将你构建的代理从开发移至生产。
  • 代理监控:与 Phidata 一样,CreawAI 提供了一个直观的仪表板,用于监控你构建的代理的进度和性能。
  • 现成的训练工具:使用 CrewAI 的内置训练和测试工具来提高代理的性能和效率,并确保其响应质量。

3.1 使用 CrewAI 创建您的第一个 AI 代理团队

你应该安装 Python 包和工具来在 CrewAI 中构建代理团队。

在终端中运行以下命令:

pip install crewai
pip install 'crewai[tools]'
pip freeze | grep crewai

在这里,我们安装 CrewAI 和代理工具并验证安装。验证安装成功后,你可以通过运行此命令创建一个新的 CrewAI 项目。

crewai create crew your_project_name

运行上述命令时,系统会提示你从模型提供商列表中进行选择,例如 OpenAI、Anthropic、xAI、Mistral 等。选择提供商后,你还可以从列表中选择一个模型。例如,你可以选择 gpt-4o-mini。

让我们通过运行以下命令使用 CrewAI 创建我们的第一个多 AI 代理系统:

crewai create crew multi_agent_crew

完整的 CrewAI 应用程序位于我们的 GitHub 存储库中。下载并运行它:

crewai run

你将看到类似于下图的响应:

要使用 CrewAI 启动你的代理创建项目,请查看入门指南和操作方法指南。

4、Autogen

Autogen 是一个用于构建代理系统的开源框架。你可以使用此框架构建多代理协作和 LLM 工作流。

Autogen 的主要功能包括以下内容:

  • 跨语言支持:使用 Python 和 .NET 等编程语言构建你的代理。
  • 本地代理:在本地试验并运行你的代理以确保更高的隐私性。
  • 它使用异步消息传递进行通信。
  • 可扩展性:它允许开发人员跨不同组织构建分布式代理网络。
  • 可扩展性:自定义其可插拔组件以构建完全定制的代理系统体验。

4.1 Autogen:安装和快速入门

要开始使用 Autogen 构建代理,你应该使用此命令安装它:

pip install 'autogen-agentchat==0.4.0.dev6' 'autogen-ext[openai]==0.4.0.dev6'

安装 Autogen 后,你可以复制并运行以下代码以使用 Autogen 体验基本的 AI 天气代理系统:

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.task import Console, TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models import OpenAIChatCompletionClient

import os
from dotenv import load_dotenv

load_dotenv()

# Define a tool
async def get_weather(city: str) -> str:
    return f"The weather in {city} is 73 degrees and Sunny."

async def main() -> None:
    # Define an agent
    weather_agent = AssistantAgent(
        name="weather_agent",
        model_client=OpenAIChatCompletionClient(
            model="gpt-4o-mini",
            api_key=os.getenv("OPENAI_API_KEY"),
        ),
        tools=[get_weather],
    )

    # Define termination condition
    termination = TextMentionTermination("TERMINATE")

    # Define a team
    agent_team = RoundRobinGroupChat([weather_agent], termination_condition=termination)

    # Run the team and stream messages to the console
    stream = agent_team.run_stream(task="What is the weather in New York?")
    await Console(stream)

asyncio.run(main())

上面的示例 Autogen 代理需要 OpenAI API 密钥。你已经注意到我们从 .env 文件中加载 API 密钥。运行示例代码将显示类似于下图的输出:

注意:与 Phidata 和 CrewAI 不同,Autogen 缺乏与其他框架和数据源的集成。它还有少量内置代理。要了解更多信息,请参阅 Autogen 的 GitHub repo

5、LangGraph

LangGraph 是一个基于节点的、构建多代理来处理复杂任务的最流行的 AI 框架之一。它作为基于图的代理框架存在于 LangChain 生态系统中。使用 LangGraph,你可以使用节点和边为线性、分层和顺序工作流构建代理。代理操作称为节点,这些操作之间的转换称为边。状态是 LangGraph 代理的另一个组件。

LangGraph 的优势和主要功能:

  • 免费和开源:LangGraph 是 MIT 许可下的免费库。
  • 流支持:LangGraph 提供逐个令牌的流支持,以显示代理的中间步骤和思考过程。
  • 部署:你可以使用多种选项大规模部署代理,并使用 LangSmith 监控其性能。借助其自托管企业选项,你可以完全在你的基础设施上部署 LangGraph 代理。
  • 企业就绪:Replit 使用 LangGraph 作为其 AI 编码代理。这证明了 LangGraph 对企业用例的实用性。
  • 性能:它不会为你的复杂代理工作流增加代码开销。
  • 循环和可控性:轻松定义涉及循环的多代理工作流,并完全控制代理的状态。
  • 持久性:LangGraph 会在图表中的每个步骤后自动保存代理的状态。它还允许你随时暂停和恢复代理的图表执行。

5.1 LangGraph 安装和快速入门

使用 LangGraph 创建代理需要几个步骤。首先,你应该初始化语言模型、工具、图表和状态。然后,指定图表节点、入口点和边。最后,编译并执行图表。

要安装 LangGraph,你应该运行:

pip install -U langgraph

接下来,你应该获取并存储您首选的 AI 模型提供商的 API 密钥。在这里,我们将使用来自 Anthropic 的 API 密钥。但是,该过程的工作方式与其他提供商相同:

pip install langchain-anthropic
export ANTHROPIC_API_KEY="YOUR_API_KEY"

存储 API 密钥的另一种方法是复制导出命令,将其粘贴到 .zshrc 文件中,然后保存。

要尝试基本的 LangGraph 代理,请复制 langgraph_agent.py 的内容并在您最喜欢的 Python 编辑器中运行它。我们对 LangGraph GitHub repo 使用相同的示例。

注意:在运行 Python 代码之前,你应该添加你的账单信息以开始使用 Anthropic API。

6、下一步是什么?

本文概述了用于构建解决复杂任务和工作流程的复杂 AI 代理的最佳框架。我们还讨论了准备你的编码环境,检查这些代理平台的主要优势和功能,并使用基本示例解释如何开始使用它们。

你可以使用其他多代理平台(例如 LlamaIndex、Multi-Agent Orchestrator、LangFlow、Semantic Kernel 和 Vertex AI)来构建你的代理。创建这些代理和工作流程后,你可以对其进行审核以保护你的用户。


原文链接:Best 5 Frameworks To Build Multi-Agent AI Applications

汇智网翻译整理,转载请标明出处

Tags