T
traeai
登录
返回首页
Towards Data Science

使用Python构建多智能体系统

8.5Score

TL;DR · AI 摘要

本文介绍了如何使用Python构建一个基于多智能体系统的旅行规划系统,展示了多智能体协作解决复杂问题的实践方法。

核心要点

  • 多智能体系统(MAS)通过多个AI代理协作完成复杂任务,如旅行规划。
  • 构建MAS时,每个代理有明确角色,如研究、活动规划、预算管理等。
  • 使用Python和PyCharm可以实现多智能体系统的开发,适合中级开发者。

结构提纲

按章节快速跳转。

  1. 介绍了AI代理的广泛应用及其在多智能体系统中的潜力。

  2. 解释了多智能体系统的基本概念及其在解决复杂问题中的优势。

  3. 介绍了旅行规划系统中各代理的角色和协作方式。

  4. 负责研究目的地并收集旅行相关信息。

  5. 根据研究结果制定活动计划并安排行程。

  6. 分析活动计划并制定符合客户预算的旅行方案。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 多智能体系统
    • 旅行规划系统
      • 旅行研究代理
      • 活动规划代理
      • 预算代理
      • 最终旅行助手
    • 开发工具
      • Python
      • PyCharm

金句 / Highlights

值得收藏与分享的关键句。

#Python#多智能体系统#AI代理#旅行规划#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,然后将其导入到你的代码文件中。

code
pip install openai

创建文件夹、Python 文件、安装和导入 OpenAI(作者提供的图片)

code
from openai import OpenAI

将 Python 与 AI 模型连接

为了让我们的程序与 OpenAI 通信并处理代码,我们需要将其连接到 AI 平台。在我们的情况下,我们将使用 OpenRouter.ai 并添加其 URL。我们还将把 API 密钥添加到代码中,并将其保存在 api_key 变量中。这个 API 密钥将为我们的程序提供使用 AI 模型所需的权限。我们将创建一个客户端,使用我们创建的 API 密钥与 AI 模型进行通信:

code
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 模型发送任务。

code
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 代理。以下代码使用面向对象编程的概念来创建代理对象,具体包括:

  • 研究代理
  • 活动代理
  • 预算代理
  • 最终代理
python
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 模型它应该如何表现以及应该专注于什么任务。

用户输入

下一步任务是从用户那里获取输入。我们将向用户提出以下问题:

  • 他们从哪里出发
  • 他们要飞往哪里
  • 旅行天数
  • 旅行人数
  • 兴趣
python
# 获取用户旅行详情

starting_location = input(
    "你从哪里出发? "
)

destination = input(
    "你想去哪旅行? "
)

days = input(
    "你的旅行有多少天? "
)

travelers = input(
    "有多少位旅行者? "
)

budget = input(
    "你的预算是多少?(低/中/高) "
)

interests = input(
    "你的兴趣是什么? "
)

创建用户请求

在通过输入语句从用户那里收集信息后,我们将所有信息合并成一个提示,并将其传递给 AI 代理。

python
# 为 AI 代理创建请求

user_request = f"""

根据以下信息创建旅行计划:

出发地:
{starting_location}

目的地:
{destination}

旅行时长:
{days}

旅行人数:
{travelers}

预算等级:
{budget}

兴趣:
{interests}

包括:
- 签证要求
- 预计航班费用
- 可参观的地点
- 活动
- 餐饮推荐
- 总预算估算

"""

print("\n正在创建你的 AI 旅行计划...\n")

当 AI 在后台运行时,我们将打印“正在创建你的 AI 旅行计划”,这样用户就能知道流程正在进行,代理已经开始工作。

多代理工作流程

现在我们已经创建了用户请求,并将所有从用户那里获取的详细信息都包含在内,现在让我们启动多代理系统。每个代理完成一个任务,并将结果传递给下一个代理。

用户的旅行详情首先发送给研究代理。该代理要求AI模型寻找最佳的旅游景点、当地体验和旅行信息。结果存储在research中。研究的输出成为活动代理的输入。它将旅行信息转换为每日活动、观光计划和餐饮建议。结果保存在activities中。接下来是预算代理,它接收计划的活动并估算航班、签证、酒店、交通等的费用。结果存储在budget中。最终旅行代理接收来自所有先前代理的信息,并将所有内容整合成一个完整的旅行行程,然后输出给用户。

code
#多代理工作流程

#代理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代理团队将基于这些答案为你创建旅行行程。

运行代码(图片由作者提供)

code
"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 ✦

AI 可能会生成不准确的信息,请核实重要内容