国外Python程序员分享:如何用Python构建一个多代理AI应用

393 阅读13分钟

图片创作不易,方便的话点点关注,谢谢

文章结尾有最新热度的文章,感兴趣的可以去看看。

本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身

文章有点长(7200字阅读时长:15分),期望您能坚持看完,并有所收获。

多代理服务有助于解决复杂问题,并在各个领域完成任务。你可以开发AI代理来发送电子邮件、搜索出版物、执行数学计算或读写CSV文件。

代理是由大型语言模型(LLMs)支持的AI辅助系统,可以完成人们在数字生活中日常遇到的任务。多代理AI系统包括多个可以独立做出决策、采取行动和完成任务的代理。根据设计,一些代理可以在多代理系统中协调并转交对话给其他代理。

目标和先决条件

图片

在本文中,我们将使用Python构建一个简单的双成员AI代理应用。我们将使用xAI的Grok模型来增强代理的任务完成能力,并使用Phidata Python框架来构建功能和特性。应用的前端将使用Phidata的Agent UI Playground。使用Cursor AI Code Editor来开发项目。你可以从GitHub获取项目的源代码,并按照本文的逐步指导安装必要的依赖项来运行和测试代理系统。

多代理AI概述

多代理系统由两个或更多的代理和一个协调器组成,协调器负责管理交互和任务流程。多代理AI系统可以是通用的,适用于客户服务领域。它也可以被设计来解决特定问题,比如为买家推荐系统,这也是本文的目标。例如,你可以在SaaS应用中集成代理来处理客户问题、支付和账单。要构建一个通用的多代理AI应用,可以查看微软的Magnetic One。要管理和保护代理团队,可以查看AI Agents Moderation。

代理可以为更广泛的用例开发,包括:

一个可以使用像Slack这样的团队消息应用来向聊天频道发送消息、列出所有频道/群组,并获取它们的信息历史的多代理系统。使用MLX Whisper实时转录语音/视频通话中的音频文件。一个开发用来访问实时视频会议应用的字幕和元数据的代理。xAI:入门 xAI API允许开发者基于其Grok基础模型构建AI系统、自动化和应用。在撰写本文时,API为开发者提供免费的程序访问权限。本文将创建一个使用Grok模型的示例AI项目。Grok是一个具有聊天、编码和思考能力的最先进的模型。要按照本教程运行示例项目,你需要一个xAI账户和API密钥。按照以下步骤获取新账户(如果你还没有),并生成和配置你的xAI的API密钥。

1、创建一个新的xAI账户

图片xAI API与OpenAI类似。你应该有一个账户和API密钥来访问像Grok这样的语言模型。要创建一个新账户,请访问xAI Console。你也可以使用你的X或Google账户登录。

2、生成和导出你的API密钥

创建账户后,访问API密钥页面,通过输入名称来生成一个新的API密钥。接下来,在终端或你最喜欢的命令行工具中运行此命令来导出你的API密钥。

export XAI_API_KEY="your_api_key_here"

运行上述命令将在命令行工具中将API密钥导出为环境变量。如果你在macOS上工作,另一种存储API密钥的方法是将其保存在你的机器的.zshrc文件中。

注意:.zshrc文件在Mac上是隐藏的。要显示它,请使用键盘快捷键shift + cmd + .,即shift、command和句点的组合。

创建一个新的Python项目并安装依赖项

请导航到你的机器上的一个位置,创建一个新文件夹,并按你喜欢的方式命名。

mkdir xai_python_multi_agent

在Cursor中打开新创建的项目文件夹,创建一个虚拟环境,并安装所有所需的依赖项。

1、创建Python虚拟环境

在终端中运行以下命令以创建和激活一个新的虚拟环境。

python3 -m venv .venv 
source .venv/bin/activate

2、安装所有所需的依赖项

要成功构建和运行项目,需要以下依赖项。

# 安装OpenAI API包和Phidata以创建代理
pip install -U phidata openai

# 安装DuckDuckGo搜索(用于网络搜索)
pip install duckduckgo-search

# 安装YFinance以获取财务数据工具
pip install yfinance

尽管我们将使用xAI的grok-beta模型来增强代理,但我们安装了Phidata和OpenAI,以便你可以轻松地将grok模型与任何OpenAI模型互换。我们还安装了DuckDuckGo和Yahoo Finance Python包。生成OpenAI API密钥后,请确保像之前描述的xAI一样将其导出到你的机器上。

如何使用Phidata创建AI代理

图片Phidata是一个基于Python的开源AI自动化和代理开发框架。它提供了工具、后端基础设施、管理和与AI代理交互的漂亮UI。使用Phidata,你可以构建你的AI代理,并为它们提供工具、存储聊天和对话历史的内存以及与代理交互的用户界面。Phidata使用FastAPI为基于代理的项目提供一个直观的Web UI游乐场,类似于OpenAI的。你可以使用Phidata构建具有推理内存等的代理。使用Phidada构建代理不需要账户。然而,通过Web游乐场运行和测试代理需要创建账户和生成API密钥。

创建Phidata账户

如果你还没有,访问Phidata Playground并创建一个新账户。接下来,从你的仪表板生成一个API密钥,并使用终端命令导出它。

export PHI_API_KEY=phi-***

或者,你可以在终端运行phi auth来使用Phidata认证你的API密钥。

接下来,你应该安装依赖项来在Phidata Playground中运行代理。

pip install 'fastapi[standard]' sqlalchemy

这里,我们安装了fastapi包和sqlalchemy SQL工具包。

使用Grok和Phidata创建AI代理团队

图片我们的代理系统将有两个主要目的:搜索网络信息,以特定格式向用户展示,以及使用Grok模型显示公司的财务摘要。我们应该通过指定完成任务的指令、工具和代理的模型来创建每个代理。

步骤1:添加所需的导入

在项目的根文件夹xai_python_multi_agent中,在Cursor中创建一个新的Python文件,并添加以下所需的导入。

from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
from phi.tools.yfinance import YFinanceTools
from phi.model.xai import xAI
from phi.playground import Playground, serve_playground_app
from fastapi import FastAPI

步骤2:创建网络搜索代理

图片在导入下方添加以下代码片段。

# 创建网络搜索代理
web_search_agent =Agent(
    name="Web Search Agent",
    role="Search the web for accurate and up-to-date information",
    model=xAI(id="grok-beta"),
    tools=[DuckDuckGo()],
    instructions=[
"Always include sources and citations",
"Verify information from multiple sources when possible",
"Present information in a clear, structured format",
],
    show_tool_calls=True,
    markdown=True,
    monitoring=True,# 启用监控以更好地调试
)

网络代理的作用是搜索互联网并向用户提供准确和最新的信息。由于我们之前导出了xAI API密钥,我们可以指定网络代理使用它model=xAI(id="grok-beta")作为其语言模型。我们还安装了openai Python包,所以将grok-beta模型替换为OpenAI的任何模型都可以立即工作,无需进一步配置。你注意到我们给了代理DuckDuckGo搜索工具来在线查找信息。最后,我们指定markdown=True以从选定的模型获得格式良好的Markdown响应。上图显示了Agent类有多个属性,你可以为不同的代理实现。

步骤3:创建财务代理

图片

在网络搜索代理下方添加此代码片段。

# 创建具有增强能力的财务代理
finance_agent =Agent(
    name="Finance Agent",
    role="Analyze and present financial data",
    model=xAI(id="grok-beta"),
    tools=[
YFinanceTools(
            stock_price=True,
            analyst_recommendations=True,
            company_info=True,
            company_news=True,# 添加新闻功能
)
],
    instructions=[
"Use tables to display numerical data",
"Include key financial metrics and trends",
"Provide context for financial recommendations",
],
    show_tool_calls=True,
    markdown=True,
    monitoring=True,
)

财务代理与网络搜索代理类似,只是它们拥有不同的工具。在上图中,我们使用Yahoo Finance工具来选择我们希望代理显示的财务信息类型。

步骤4:创建代理协调器

在步骤2和3中,我们创建了我们的网络搜索和财务代理。我们现在需要一个协调器来管理和协调这些代理,以便它们可以作为一个团队一起工作。总之,多代理协调器负责处理成员代理的工作流程,确保它们无缝地协同工作。

在财务代理下方复制并粘贴此代码片段。

# 创建具有改进协调的多代理团队
multi_ai_agent =Agent(
    name="Multi AI Team",
    team=[web_search_agent, finance_agent],
    model=xAI(id="grok-beta"),
    instructions=[
"Always include sources and citations",
"Use tables
 to display structured data",
"Combine financial data with relevant market news",
"Provide comprehensive analysis using both agents' capabilities",
],
    show_tool_calls=True,
    markdown=True,
    monitoring=True,
)

代理团队协调器的结构与其他的类似。然而,我们给它分配了一个包含之前成员的Python列表。team=[web_search_agent, finance_agent]

组装所有让我们将所有代码片段结合起来,然后运行文件。

# python3 multi_ai_agent.py

from phi.agent importAgent from phi.model.openai importOpenAIChat from phi.tools.duckduckgo importDuckDuckGo from phi.tools.yfinance importYFinanceTools from phi.model.xai import xAI from phi.playground importPlayground, serve_playground_app from fastapi importFastAPI

# 创建网络搜索代理 web_search_agent =Agent(     name="Web Search Agent",     role="Search the web for accurate and up-to-date information",     model=xAI(id="grok-beta"),     tools=[DuckDuckGo()],     instructions=[ "Always include sources and citations", "Verify information from multiple sources when possible", "Present information in a clear, structured format", ],     show_tool_calls=True,     markdown=True,     monitoring=True,# 启用监控以更好地调试 )

# 创建财务代理 finance_agent =Agent(     name="Finance Agent",     role="Analyze and present financial data",     model=xAI(id="grok-beta"),     tools=[ YFinanceTools(             stock_price=True,             analyst_recommendations=True,             company_info=True,             company_news=True,# 添加新闻功能 ) ],     instructions=[ "Use tables to display numerical data", "Include key financial metrics and trends", "Provide context for financial recommendations", ],     show_tool_calls=True,     markdown=True,     monitoring=True, )

# 创建具有改进协调的多代理团队 multi_ai_agent =Agent(     name="Multi AI Team",     team=[web_search_agent, finance_agent],     model=xAI(id="grok-beta"),     instructions=[ "Always include sources and citations", "Use tables to display structured data", "Combine financial data with relevant market news", "Provide comprehensive analysis using both agents' capabilities", ],     show_tool_calls=True,     markdown=True,     monitoring=True, )

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


如果你现在在Cursor或VS Code中打开终端(使用control + \`),运行Python文件:

python3 multi_ai_agent.py


你应该看到一个来自Grok模型的响应,格式良好的Markdown输出,类似于下面的预览。

已关注

关注

重播 分享 赞

关闭

**观看更多**

更多

_退出全屏_

_切换到竖屏全屏__退出全屏_

讳疾忌医-note已关注

分享视频

,时长00:11

0/0

00:00/00:11

切换到横屏模式

继续播放

进度条,百分之0

[播放](javascript:;)

00:00

/

00:11

00:11

_全屏_

倍速播放中

[0.5倍](javascript:;) [0.75倍](javascript:;) [1.0倍](javascript:;) [1.5倍](javascript:;) [2.0倍](javascript:;)

[超清](javascript:;) [流畅](javascript:;)

您的浏览器不支持 video 标签

继续观看

国外Python程序员分享:如何用Python构建一个多代理AI应用

观看更多

原创

,

国外Python程序员分享:如何用Python构建一个多代理AI应用

讳疾忌医-note已关注

分享点赞在看

已同步到看一看[写下你的评论](javascript:;)

[视频详情](javascript:;)

步骤5:如何创建代理UI
============

恭喜!🎉 你已经使用GrokPhidata创建了你的第一个AI代理团队应用。我们可以通过命令行成功运行代理。然而,构建一个更具互动性和视觉吸引力的代理交互和监控体验岂不是更好?让我们只用三行代码实现这样的体验。

首先,从之前的代码中删除这个代码片段。

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


然后,在相同的位置添加以下内容。

# 创建包含两个代理的游乐场 app = Playground(agents=[multi_ai_agent]).get_app()

if name == "main":     serve_playground_app("multi_ai_agent:app", reload=True, port=7777)


上述代码片段在Phidata中创建了一个美观的代理游乐场,你可以在其中与代理互动、操纵和测试你的代理。你可能已经注意到,该应用运行在端口7777。

步骤5:运行和测试你的代理
=============

要运行和测试游乐场中的应用程序,你应该使用以下命令进行认证:

phi auth


你现在将看到一个提示,要求登录到你的Phidata仪表板。

接下来,用以下命令重新运行Python文件:

python3 multi_ai_agent.py


如果你按照本教程中描述的配置一切,你将看到关于服务器和你的应用正在运行的端口的成功信息。![图片](https://mmbiz.qpic.cn/mmbiz_png/CibM5VmPwqwBNpS6CORmCpiaAKIXxRXS7PwCFZQABX023xopzdQuHRQYCwPYibk2dPiaA9ybqSR7BENHmjiam6tGbtA/640?wx_fmt=png&from=appmsg)

再次访问你的Phidata仪表板,并切换到PLAYGROUND![图片](https://mmbiz.qpic.cn/mmbiz_png/CibM5VmPwqwBNpS6CORmCpiaAKIXxRXS7PbxkJ7ibtiaYicakPIdYRguetwibpIx655qMGUrpncxKcOibibLI2bcJVFDWQ/640?wx_fmt=png&from=appmsg)

你现在可以提示多代理总结任何公司的分析师推荐,并在漂亮的UI中与之互动。

![图片](https://mmbiz.qpic.cn/mmbiz_gif/CibM5VmPwqwBNpS6CORmCpiaAKIXxRXS7PoKwsUq8dv9k3eOBBAS6HscBDODLAjxFHZgPeq9gLx2CRUsiaLcJ6Low/640?wx_fmt=gif&from=appmsg)

监控你的代理
======

![图片](https://mmbiz.qpic.cn/mmbiz_png/CibM5VmPwqwBNpS6CORmCpiaAKIXxRXS7Pj07qYroIAMNddr1dQ82aHYBR7NHO3Nqo94a5Dczz5gs82NtiaK7S9Qw/640?wx_fmt=png&from=appmsg)从你的Phidata仪表板,你可以看到模型使用情况的详细分解。这些信息有助于优化你的代理性能。

**总结:**在本文中,我们构建了一个简单的代理团队,使用xAI的Grok模型搜索网络并提供财务建议。你可以使用这些技术为许多用例创建一个复杂的代理团队,比如一个实时转录直播媒体流的代理。

  

最新热门文章推荐:[](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485788&idx=1&sn=77e8feae61345b275e8e5a8ee400b2bb&scene=21#wechat_redirect)

[国外CUDA程序员分享:2024年GPU编程CUDA C++(从环境安装到进阶技巧)](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485788&idx=1&sn=77e8feae61345b275e8e5a8ee400b2bb&scene=21#wechat_redirect)

[我卸载了VSCode,我的生产力大幅提升](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485827&idx=1&sn=5e9f02fdd3959cb427f15c70d9203122&scene=21#wechat_redirect)

[国外Python程序员分享:2024年使用Cython加速 Python完整过程](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485741&idx=1&sn=8f2c1602c37c829a6e53bf98f494cf17&scene=21#wechat_redirect)

[国外Python程序员分享:2024年NumPy高性能计算库(高级技巧)](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485735&idx=1&sn=99586afdf165f53caeb4cf7a9062cfde&scene=21#wechat_redirect)

[国外程序员问题:C/C++最佳用途是什么能干什么?请留下您的最佳答案](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485700&idx=1&sn=ed5f458e3ecb6b1102f6d85b07ac679d&scene=21#wechat_redirect)

[国外C++程序员分享:2024年为了性能将 Python 与 C/C++ 接口(多个例子分析)](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485713&idx=1&sn=8bc533342e4ca9e22de36d90b88ee3b9&scene=21#wechat_redirect)

[外国人眼中的程明明:从“电脑小白”到CV领域领军者](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485725&idx=1&sn=1a74cb4c9ea6f868ff5a88d91338718d&scene=21#wechat_redirect)

[外国人眼中的周志华:人工智能奖获得者、人工智能学院院长](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485669&idx=1&sn=85842c2b4802ecc9dc988bab8394772f&scene=21#wechat_redirect)

[国外C++程序员分享:C++多线程实战掌握图像处理高级技巧](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485687&idx=1&sn=6e1634cea46c7aacf3759d77a2d64338&scene=21#wechat_redirect)

[2024年国外程序员分享:C++50道经典面试题](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485655&idx=1&sn=9f75ed5dba67649354e2908cdc00547a&scene=21#wechat_redirect)

[外国人眼中的卢湖川:从大连理工到全球舞台,他的科研成果震撼世界!](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485650&idx=1&sn=396801f5408a194aee956a3acd30129b&scene=21#wechat_redirect)

[外国人眼中的张祥雨:交大90后男神博士,3年看1800篇论文,还入选福布斯精英榜](https://mp.weixin.qq.com/s?__biz=MzkzNjI3ODkyNQ==&mid=2247485593&idx=1&sn=cba8bf9d52b4a63321cd07afd88efa43&scene=21#wechat_redirect)

  

> 参考文献:《图片来源网络》

> 本文使用 [文章同步助手](https://juejin.cn/post/6940875049587097631) 同步