使用Python构建多智能体系统
TL;DR · AI 摘要
本文介绍了如何使用Python构建一个基于多智能体系统的旅行规划系统,展示了多智能体协作解决复杂问题的实践方法。
核心要点
- 多智能体系统(MAS)通过多个AI代理协作完成复杂任务,如旅行规划。
- 构建MAS时,每个代理有明确角色,如研究、活动规划、预算管理等。
- 使用Python和PyCharm可以实现多智能体系统的开发,适合中级开发者。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 多智能体系统
- 旅行规划系统
- 旅行研究代理
- 活动规划代理
- 预算代理
- 最终旅行助手
- 开发工具
- Python
- PyCharm
金句 / Highlights
值得收藏与分享的关键句。
多智能体系统(MAS)通过多个AI代理协作完成复杂任务,如旅行规划。
每个代理有明确角色,如研究、活动规划、预算管理等。
使用Python和PyCharm可以实现多智能体系统的开发,适合中级开发者。
在 Python 中构建多智能体系统 | Towards Data Science
智能体 AI
在 Python 中构建多智能体系统
多智能体系统的简介
Mahnoor Javed
2026 年 6 月 7 日
13 分钟阅读
分享
图片由 Mohamen Nohassi 通过 Unsplash 提供
AI 智能体是当前的热门话题。我们在日常生活中随处可见它们,甚至被用于手机上最简单的任务。它们便捷、快速且相当可靠,帮助我们应对日常生活。如果你想轻松了解一个科学概念,你会向 ChatGPT 询问。如果你想为挑食的幼儿制定饮食计划,你会向 AI 询问。甚至规划完整的旅行行程也可以委托给 AI。而这正是我们在本教程中要做的(敬请期待!)。
我们了解 AI 智能体,但如果在更大的项目中,我们可以构建并使用不同角色的 AI 智能体,会怎样呢?这正是多智能体系统概念的用武之地。随着 AI 应用的不断进步,我们正在从能够回答简单问题并执行简单任务的单个 AI 模型,转向由多个 AI 智能体协作解决复杂问题的系统。多智能体系统(MAS)是一个概念,其中多个 AI 智能体相互协作,以实现更大的目标。每个智能体都有特定的角色,通过相互协作,共同实现最终目标。
多智能体旅行规划系统
在这个项目中,我们将构建一个“多智能体旅行规划系统”。换句话说,我们将拥有一组 AI 智能体,每个智能体都有一个特定的角色,它们将协同工作,为我们制定完美的旅行计划!
我们可以将多智能体旅行规划系统想象成一个真正的旅行社。不是由一个人处理所有事务,而是由不同领域的专家根据各自的专长处理不同任务,并协同工作。对于我们的 AI 旅行规划器,我们将有以下智能体:
项目中的 AI 智能体(图片由作者提供)
- 旅行研究智能体:该智能体将执行研究任务。它将探索客户想去的目的地,寻找景点、隐藏地点、本地体验、旅行建议等。它将收集规划旅行所需的基本信息。
- 活动规划智能体:该智能体将根据研究智能体的研究结果来规划活动。它将决定参观哪些地方、何时参观、进行哪些活动,以及如何组织整个旅行!
- 预算智能体:该智能体负责合理的预算管理。它将分析活动规划智能体提供的计划,并分享预期费用、可负担选项、省钱技巧,并帮助根据客户的预算定制旅行。
- 最终旅行助手:最后,最终旅行助手将整合来自其他三个智能体的输出:研究结果、活动计划和预算,并创建一个简单的个性化旅行行程!
整个项目的总体工作流程如下所示:
项目工作流程(图片由作者提供)
我们将使用 Python 和 PyCharm IDE 来构建这个项目。这是一个中级 Python 项目,需要对 Python 中的 AI 智能体有基本的了解,同时还需要对面向对象编程有初步的了解,因为我们将在项目中创建类。如果你是 Python 和智能体 AI 的新手,可以通过以下链接访问我为初学者准备的 AI 智能体教程:
构建 Python AI 代理的终极初学者指南
如果你想学习 Python 面向对象编程(OOP),可以阅读以下文章,我在其中创建了一个 Python 咖啡机,并在下一篇文章中使用 OOP 的概念来优化代码:
[在 Python 中实现咖啡机](链接)
[使用面向对象编程在 Python 中实现咖啡机项目](链接)
这些文章将为你提供对 Python 代码的基本理解,并帮助你理解这个有趣项目中的代码。让我们开始编写代码!
创建项目
第一步是在 PyCharm(或你选择的 IDE)中创建项目文件夹,并将项目命名为“多代理系统”(或你选择的任何名称)。
创建项目(作者提供的图片)
安装和导入 Python 包
创建项目文件夹后,继续创建一个“main.py”文件,我们将在其中进行编码。在终端中安装 OpenAI,然后将其导入到你的代码文件中。
pip install openai创建文件夹、Python 文件、安装和导入 OpenAI(作者提供的图片)
from openai import OpenAI将 Python 与 AI 模型连接
为了让我们的程序与 OpenAI 通信并处理代码,我们需要将其连接到 AI 平台。在我们的情况下,我们将使用 OpenRouter.ai 并添加其 URL。我们还将把 API 密钥添加到代码中,并将其保存在 api_key 变量中。这个 API 密钥将为我们的程序提供使用 AI 模型所需的权限。我们将创建一个客户端,使用我们创建的 API 密钥与 AI 模型进行通信:
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="YOUR API KEY"
)一旦你在 OpenRouter.ai 创建了 API 密钥,请不要与任何人分享该密钥。只需将其替换为“YOUR API KEY”。
创建代理类
现在是编写 AI 代理代码的部分。由于我们不是只创建一两个代理,我们不会直接进行编码。相反,我们将使用 OOP 的概念,创建一个代理类(或简单地说,一个蓝图),然后使用这个蓝图来创建每个单独的代理。代理将存储标识代理的名称,以及告诉 AI 代理应该如何行为的角色。此外,我们还将创建一个 run 函数,使我们的 AI 代理能够工作,即向 AI 模型发送任务。
class Agent:
def __init__(self, name, role):
self.name = name
self.role = role
def run(self, task):
print(f"{self.name} is working...")
response = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[
{
"role": "system",
"content": self.role
},
{
"role": "user",
"content": task
}
],
max_tokens=1200
)
return response.choices[0].message.content上面的代码将向 AI 模型发送以下两个内容(我们还指定了 AI 模型):
- 相应代理的职责/角色
- 从用户输入中获取的用户消息(你稍后会看到)
我们将使用以下代码从代码块中获取 AI 响应:return response.choices[0].message.content。这个返回语句将提取代理生成的答案(如果你发现这段代码难以理解,请参考本文开头链接的我的 AI Agent 入门指南文章)。
创建代理对象
现在我们已经创建了代理类,接下来将使用这个蓝图来创建我们自己的 AI 代理。以下代码使用面向对象编程的概念来创建代理对象,具体包括:
- 研究代理
- 活动代理
- 预算代理
- 最终代理
research_agent = Agent(
"Research Agent",
"""
你是一位专业的旅行研究员。
你的任务:
- 寻找热门景点
- 寻找隐藏的宝藏
- 推荐本地体验
- 推荐最佳地点
"""
)
activity_agent = Agent(
"Activity Planner Agent",
"""
你是一位专业的旅行规划师。
你的任务:
- 制定每日活动
- 规划观光
- 推荐美食体验
- 合理安排活动
"""
)
budget_agent = Agent(
"Budget Agent",
"""
你是一位旅行预算专家。
计算:
- 预计航班费用
- 签证要求
- 如有必要,签证费用
- 酒店费用
- 餐饮费用
- 交通费用
- 活动费用
制作一个大致的总旅行预算。
保持回答简短。
"""
)
final_agent = Agent(
"Final Travel Assistant",
"""
你是一位专业的旅行规划师。
制作最终行程。
包括:
1. 简短的旅行概述
2. 签证信息
3. 预计航班费用
4. 每日计划
5. 餐饮建议
6. 总预算估算
保持内容在 700 字以内。
"""
)这段代码将根据代码中提到的具体角色创建独立的 AI 代理。角色告诉 AI 模型它应该如何表现以及应该专注于什么任务。
用户输入
下一步任务是从用户那里获取输入。我们将向用户提出以下问题:
- 他们从哪里出发
- 他们要飞往哪里
- 旅行天数
- 旅行人数
- 兴趣
# 获取用户旅行详情
starting_location = input(
"你从哪里出发? "
)
destination = input(
"你想去哪旅行? "
)
days = input(
"你的旅行有多少天? "
)
travelers = input(
"有多少位旅行者? "
)
budget = input(
"你的预算是多少?(低/中/高) "
)
interests = input(
"你的兴趣是什么? "
)创建用户请求
在通过输入语句从用户那里收集信息后,我们将所有信息合并成一个提示,并将其传递给 AI 代理。
# 为 AI 代理创建请求
user_request = f"""
根据以下信息创建旅行计划:
出发地:
{starting_location}
目的地:
{destination}
旅行时长:
{days} 天
旅行人数:
{travelers}
预算等级:
{budget}
兴趣:
{interests}
包括:
- 签证要求
- 预计航班费用
- 可参观的地点
- 活动
- 餐饮推荐
- 总预算估算
"""
print("\n正在创建你的 AI 旅行计划...\n")当 AI 在后台运行时,我们将打印“正在创建你的 AI 旅行计划”,这样用户就能知道流程正在进行,代理已经开始工作。
多代理工作流程
现在我们已经创建了用户请求,并将所有从用户那里获取的详细信息都包含在内,现在让我们启动多代理系统。每个代理完成一个任务,并将结果传递给下一个代理。
用户的旅行详情首先发送给研究代理。该代理要求AI模型寻找最佳的旅游景点、当地体验和旅行信息。结果存储在research中。研究的输出成为活动代理的输入。它将旅行信息转换为每日活动、观光计划和餐饮建议。结果保存在activities中。接下来是预算代理,它接收计划的活动并估算航班、签证、酒店、交通等的费用。结果存储在budget中。最终旅行代理接收来自所有先前代理的信息,并将所有内容整合成一个完整的旅行行程,然后输出给用户。
#多代理工作流程
#代理1研究目的地
research = research_agent.run(
user_request
)
print("\n--- 研究完成 ---")
#代理2创建活动
activities = activity_agent.run(
research
)
print("\n--- 活动计划完成 ---")
#代理3计算预算
budget = budget_agent.run(
activities
)
print("\n--- 预算创建完成 ---")
#代理4创建最终行程
final_plan = final_agent.run(
f"""
研究:
{research}
活动:
{activities}
预算:
{budget}
创建最终的旅行计划。
"""
)
print("\n==========================")
print(" 最终旅行计划")
print("==========================\n")
print(final_plan)运行代码
通过运行代码,你可以看到程序请求用户输入。你可以添加自己的具体信息,回答问题。AI代理团队将基于这些答案为你创建旅行行程。
运行代码(图片由作者提供)
"C:\Users\Mahnoor Javed\PycharmProjects\Multi Agent System\.venv\Scripts\python.exe" "C:\Users\Mahnoor Javed\PycharmProjects\Multi Agent System\main.py"
你从哪里出发?islamabad
你想去哪里旅行?istanbul
你的旅行有多少天?3
有多少位旅行者?4
你的预算是多少?(低/中/高)$4k
你的兴趣是什么?kid frinedly
正在创建你的AI旅行计划...
研究代理正在工作...
--- 研究完成 ---
活动规划代理正在工作...
--- 活动计划完成 ---
预算代理正在工作...
--- 预算创建完成 ---
最终旅行助手正在工作...
==========================
最终旅行计划
==========================
### 3天家庭友好行程:从伊斯兰堡到伊斯坦布尔
---
#### 旅行概览
在这次从伊斯兰堡出发的3天伊斯坦布尔之旅中,探索伊斯坦布尔令人着迷的历史、文化和适合家庭的娱乐。参观 Hagia Sophia 和 Topkapi Palace 等标志性景点,体验伊斯坦布尔水族馆和 KidZania 的互动体验,并在美丽的公园和熙熙攘攘的集市中放松身心。这个行程将文化探索与适合孩子的活动完美结合,确保整个家庭都能留下难忘的回忆。
---
#### 签证信息
- **对于巴基斯坦公民:** 需要土耳其电子签证
- **申请:** 在旅行前通过 [e-Visa Turkey 官方网站] 在线申请
- **费用:** 每人约50美元
- **处理时间:** 通常为24-48小时
- **提示:** 旅行时携带电子签证的打印件或电子副本。
#### 预计飞行费用
- **路线:** 伊斯兰堡 (ISB) – 伊斯坦布尔 (IST) 往返
- **费用:** 经济舱每人 $350 - $450
- **4人同行:** 总计约 $1,400 - $1,800
- **小贴士:** 提前 2-3 个月预订以获得更优惠的价格。
---
### 按天安排的行程
**第1天:历史与标志性景点**
- **上午:**
- 抵达伊斯坦布尔,前往苏丹艾哈迈德附近一家适合家庭的酒店入住。
- 参观 **圣索菲亚大教堂**,沉浸在这座标志性建筑的壮丽之中。
- 步行至 **托普卡帕宫**,探索广阔的花园和适合孩子的区域。
- **下午:**
- 在 **苏丹艾哈迈德广场** 放松并玩耍;孩子们可以享受宽敞的开放空间。
- 乘坐怀旧的 **苏丹艾哈迈德电车**,在历史区域进行一次迷人的环游。
- **晚上:**
- 享用 **博斯普鲁斯海峡晚餐游船**,在品尝美味土耳其美食的同时,还有家庭娱乐和儿童活动。
---
**第2天:互动乐趣与探索**
- **上午:**
- 参观 **伊斯坦布尔水族馆(弗洛里亚)**,欣赏多样的海洋生物、触摸池和主题区域。
- 在水族馆的亲子友好咖啡馆或附近的 **Forum Istanbul 商场** 享用午餐。
- **下午:**
- 在商场内的 **KidZania 伊斯坦布尔** 互动玩耍,孩子们可以扮演各种职业并通过趣味学习。
- 享受商场的游乐场和零食休息时间。
- **晚上:**
- 尝试著名的 **Maraş 冰激凌**,并欣赏有趣的摊贩表演。
- 在返回酒店前,悠闲地在商场或公园散步。
---
**第3天:公园、博物馆、市场与本地风味**
- **上午:**
- 在 ** Gülhane 公园** 野餐并玩耍,孩子们可以体验骑小马。
- 参观 **Rahmi M. Koç 博物馆**,探索互动展览,包括车辆、玩具和潜水艇。
- **下午:**
- 短暂参观 **大巴扎**,重点探访适合孩子的纪念品商店。
- 尝试当地街头美食:**simit**(芝麻面包卷)和 **gözleme**(咸味薄饼)。
- **晚上:**
- 在 **Çiya Sofrası** 享用温和的传统菜肴,或尝试 **Saray Muhallebicisi**,品尝正宗的土耳其甜点如 **sütlaç**(布丁)。
---
### 餐饮推荐
- **Çiya Sofrası (Kadıköy):** 真正的土耳其风味,提供适合儿童的选项
- **Saray Muhallebicisi:** 传统甜点,非常适合家庭享用
- **Midpoint/Cookshop:** 非正式用餐,提供适合儿童的国际和本地菜单
- **街头美食:** 尝试当地摊贩的 simit、lahmacun(土耳其披萨)和 borek 甜点
---
### 预计预算(4人)
| 项目 | 预计费用(美元) |
|-----------------------|---------------------------|
| 航班(往返) | $1,400 - $1,800 |
| 签证费用 | $200 |
| 住宿(3晚) | $600 - $800 |
| 餐饮 | $300 - $400 |
| 交通(Istanbulkart、出租车) | $100 |
| 入场费与活动 | $300 |
| 其他杂费 | $200 |
| **总预算估计** | **~$3,100 - $3,800** |
*备注:预算会根据酒店选择和用餐偏好有所不同。*
### 其他提示
- 提前在线预订热门景点门票,以避开排队。
- 购买 **Istanbulkart**,以便在公共交通上享受便捷和折扣。
- 为孩子准备舒适的鞋子和防晒用品。
- 选择提供家庭设施并靠近有轨电车或地铁站的住宿,如苏莱曼尼耶或贝伊奥卢区。
- 许多餐厅提供儿童菜单和高脚椅,请提前询问。
---
您是否需要个性化的酒店推荐和预订航班的帮助?此外,我还可以协助您了解当地的交通信息或预订餐厅。只需告诉我即可!
Process finished with exit code 0以上是代码的输出结果。您可以看到旅行计划是如何个性化的!
结论
在本项目中,我们成功地利用了在 Python 中构建 AI 代理的知识,构建了一个具有实际应用价值的系统。现实世界的问题通常就是这样:我们已经有了一个正在运行的系统,但需要对其进行优化,使其更加高效,而这些都可以通过实现一些基本概念轻松完成。
我们本可以使用一个 AI 代理来构建这个旅行计划器,并让它处理所有任务。然而,通过创建一个多代理系统,我们将工作分配给了专门的代理,每个代理专注于一个特定的任务。这种方法使系统更加有条理、高效,并且更接近现实世界团队解决问题的方式。与其让一个 AI 去做所有事情,不如让多个 AI 代理协作,为用户提供更好的个性化结果。
通过添加记忆、外部工具、API 和实时数据,这些代理可以变得更加强大,解决复杂的现实问题;这将是下一次项目的任务!
撰写人
查看 Mahnoor Javed 的所有文章
AI 代理
,
人工智能
多代理系统
Pycharm
Python
分享本文
- 在 Facebook 上分享
- 在 LinkedIn 上分享
- 在 X 上分享
Towards Data Science 是一个社区出版物。提交您的见解,以触及全球受众,并通过 TDS 作者支付计划获得报酬。
更新 href 为您的实际提交 URL
为 TDS 写作
✦ 结束 CTA ✦