本文基于开源项目进行解读与拓展
- 官方项目地址:GitHub – microsoft/ai-agents-for-beginners
- 项目许可证:MIT License
多代理设计模式
- 大型工作负载 :大型工作负载可以划分为较小的任务并分配给不同的代理,从而实现并行处理和更快地完成。这方面的一个例子是在大型数据处理任务的情况下。
- 复杂任务 :复杂任务(如大型工作负载)可以分解为较小的子任务,并分配给不同的代理,每个代理都专注于任务的特定方面。一个很好的例子是自动驾驶汽车,不同的代理管理导航、障碍物检测以及与其他车辆的通信。
- 不同的专业知识 : 不同的代理可以具有不同的专业知识,使他们能够比单个代理更有效地处理任务的不同方面。对于这种情况,一个很好的例子是医疗保健,代理人可以管理诊断、治疗计划和患者监测。
单个代理系统可以很好地用于简单的任务,但对于更复杂的任务,使用多个代理可以提供以下几个优势:
- 专业化 :每个代理都可以专门用于特定任务。单个代理缺乏专业化意味着您有一个可以做任何事情的代理,但在面对复杂任务时可能会对该怎么做感到困惑。例如,它最终可能会执行一项它不适合的任务。
- 可扩展性 :通过添加更多代理而不是使单个代理过载,可以更轻松地扩展系统。
- 容错 :如果一个代理发生故障,其他代理可以继续运行,从而确保系统可靠性。
举个例子,为用户预订一次旅行。单一代理系统必须处理行程预订流程的所有方面,从查找航班到预订酒店和租车。要使用单个代理实现此目的,代理需要具有处理所有这些任务的工具。这可能会导致一个复杂的整体式系统,难以维护和扩展。另一方面,多代理系统可能有不同的代理专门负责查找航班、预订酒店和租车。这将使系统更加模块化、更易于维护和可扩展。
将此与作为夫妻店运营的旅行社与作为特许经营权运营的旅行社进行比较。夫妻店将由一名代理人处理旅行预订流程的所有方面,而特许经营店将由不同的代理人处理旅行预订流程的不同方面。
在实施多代理设计模式之前,需要了解构成该模式的构建块。
让我们通过再次查看为用户预订行程的示例来更具体地说明这一点。在这种情况下,构建块将包括:
- 代理通信 :用于查找航班、预订酒店和租赁汽车的代理需要传达和共享有关用户首选项和限制的信息。需要决定此通信的协议和方法。具体来说,就是找航班的代理需要和预订酒店的代理沟通,确保酒店预订的日期与航班的日期相同。这意味着代理需要共享有关用户旅行日期的信息,这意味着您需要决定哪些代理共享信息以及他们如何共享信息 。
- 协调机制 :代理需要协调他们的动作,以确保满足用户的首选项和约束。用户偏好可能是他们希望在机场附近找到一家酒店,而限制可能是租车只能在机场提供。这意味着预订酒店的代理需要与预订租车的代理协调,以确保满足用户的偏好和约束。这意味着您需要决定代理如何协调他们的动作 。
- 代理架构 :代理需要有内部结构来做出决策,并从与用户的交互中学习。这意味着查找航班的代理需要有内部结构来决定向用户推荐哪些航班。这意味着您需要确定代理如何做出决策并从与用户的交互中学习。智能体如何学习和改进的例子可以是,查找航班的智能体可以使用机器学习模型根据用户过去的偏好向用户推荐航班。
- 多代理交互的可见性 :您需要了解多个代理是如何相互交互的。这意味着您需要有跟踪代理活动和交互的工具和技术。这可以是日志记录和监视工具、可视化工具和性能指标的形式。
- 多代理模式 :实施多代理系统有不同的模式,例如集中式、分散式和混合架构。您需要决定最适合您的使用案例的模式。
- 人机交互:在大多数情况下,您将有一个人工参与,您需要指示代理何时请求人工干预。这可能表现为用户询问代理未推荐的特定酒店或航班,或者在预订航班或酒店之前要求确认。
Agent 智能体
了解多个代理如何相互交互非常重要。这种可见性对于调试、优化和确保整个系统的有效性至关重要。为此,您需要拥有用于跟踪代理活动和交互的工具和技术。这可以是日志记录和监控工具、可视化工具和性能指标的形式。
例如,在为用户预订行程的情况下,您可以有一个控制面板来显示每个座席的状态、用户的首选项和约束以及座席之间的交互。此仪表板可以显示用户的旅行日期、航班代理推荐的航班、酒店代理推荐的酒店以及租车代理推荐的租车。这将使您清楚地了解代理如何相互交互,以及是否满足用户的首选项和约束。
- 日志记录和监控工具 :您希望对代理执行的每个动作进行日志记录。日志条目可以存储有关执行动作的代理、执行的动作、执行动作的时间以及动作结果的信息。然后,此信息可用于调试、优化等。
- 可视化工具 :可视化工具可以帮助您以更直观的方式查看代理之间的交互。例如,您可以有一个图表来显示代理之间的信息流。这可以帮助您识别系统中的瓶颈、效率低下和其他问题。
- 性能指标 :性能指标可以帮助您跟踪多代理系统的有效性。例如,您可以跟踪完成任务所花费的时间、每单位时间完成的任务数以及代理所提建议的准确性。此信息可以帮助您确定需要改进的领域并优化系统。
让我们深入研究一些可用于创建多代理应用程序的具体模式。以下是一些值得考虑的有趣模式:
1)Group chat 群聊
当您想要创建多个代理可以相互通信的群聊应用程序时,此模式非常有用。此 Code Pattern 的典型使用案例包括团队协作、客户支持和社交网络。
在此模式中,每个代理都代表群聊中的一个用户,并使用消息传递协议在代理之间交换消息。代理可以向群聊发送消息,接收来自群聊的消息,以及回复来自其他代理的消息。
这种模式可以使用集中式架构来实现,其中所有消息都通过中央服务器路由,或者使用分散式架构来实现,其中消息直接交换。

2)Hand-off 移交
当您想要创建多个代理可以相互移交任务的应用程序时,此模式非常有用。
此模式的典型使用案例包括客户支持、任务管理和工作流自动化。
在这种模式中,每个代理都代表工作流中的一个任务或一个步骤,代理可以根据预定义的规则将任务移交给其他代理。

3)Collaborative filtering 协同过滤
当您想要创建一个应用程序,多个代理可以协作向用户提供建议时,此模式非常有用。
为什么您希望多个代理进行协作,是因为每个代理可能具有不同的专业知识,并且可以以不同的方式为推荐流程做出贡献。
让我们举一个例子,用户希望获得有关股票市场上最适合购买的股票的推荐。
- Industry expert 行业专家 :一个代理可以是特定行业的专家。
- Technical analysis 技术分析 :另一个代理可能是技术分析方面的专家。
- Fundamental analysis 基本面分析: 另一个代理可能是基本面分析的专家。通过协作,这些代理可以为用户提供更全面的建议。

考虑这样一个场景:客户试图获得产品的退款,此流程可能涉及相当多的代理,但让我们将其划分为特定于此流程的代理和可用于其他流程的一般代理。
1)Agents specific for the refund process 特定于退款流程的代理 :
- Customer agent 买家代理 :此代理代表买家并负责启动退款流程。
- Seller agent 卖家代理 : 此代理代表卖家并负责处理退款。
- Payment agent 付款代理 :此代理代表付款流程,负责为客户的付款退款。
- Resolution agent 解决代理 : 此代理代表解决流程,并负责解决退款过程中出现的任何问题。
- Compliance agent 合规代理 : 此代理代表合规流程,负责确保退款流程符合法规和政策。
2)General agents 总代理 :
- Shipping agent 配送代理 : 该代理代表配送流程,负责将商品配送回给卖家。例如,该代理既可用于退款流程,也可用于通过购买进行产品的一般运输。
- Feedback agent 反馈代理 :此代理代表反馈流程,负责收集买家的反馈。您可以随时获得反馈,而不仅仅是在退款过程中。
- Escalation agent 升级代理 :此代理代表 Escalation 流程,负责将问题上报到更高级别的支持。您可以将这种类型的代理用于需要上报问题的任何流程。
- Notification agent 通知代理 : 此代理代表通知流程,并负责在退款流程的各个阶段向买家发送通知。
- Analytics agent 分析代理 :此代理代表分析流程,负责分析与退款流程相关的数据。
- Audit agent 审计代理 : 该代理代表审计流程,负责审计退款流程以确保其正确执行。
- Reporting agent 报告代理 : 此代理代表报告流程,并负责生成有关退款流程的报告。
- Knowledge agent 知识代理 : 此代理代表知识流程,并负责维护与退款流程相关的信息知识库。该代理可能了解退款和您业务的其他部分。
- Security agent 安全代理 :此代理代表安全流程,负责确保退款流程的安全性。
- Quality agent 质量代理 :该代理代表质量流程,负责确保退款流程的质量。
前面列出了不少代理,既用于特定的退款流程,也用于可用于您业务其他部分的总代理。希望这能让您了解如何决定在多代理系统中使用哪些代理。
3)Assignment 分配
为客户支持流程设计多代理系统。确定流程中涉及的代理、他们的角色和职责,以及他们如何相互交互。考虑特定于客户支持流程的代理和可用于您业务其他部分的总代理。
在阅读以下解决方案之前,请三思而后行,您可能需要的代理可能比您想象的要多。
提示:考虑客户支持流程的不同阶段,并考虑任何系统所需的代理。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/237594.html原文链接:https://javaforall.net
