现代的 AI 代理至少包含一个能够调用某些工具的大型语言模型(LLM)。有了合适的编码工具集,它就可以开始生成代码,能够在容器中运行代码,观察结果,修改代码,从而更有可能生成有用的代码。
相比之下,生成式 AI 模型会接受一些输入,并通过预测期望的过程产生输出。例如,我们给它一个编码任务,它会生成一些代码,并且根据任务的复杂性,这些代码可能可以直接使用。
当代理承担不同的任务时,它们应该被允许互相交谈。例如,想象一下您公司的内部网,其中的搜索框可以引导您找到所需的应用程序和资源。如果您的公司足够大,那么不同部门拥有的这些应用程序都有自己的搜索框。创建代理非常有意义,也许可以使用检索增强生成 (RAG) 等技术来增强搜索框。没有意义的是在搜索框根据初始查询将其识别为有用后强迫用户重复他们的查询。相反,我们希望顶级代理与代表各种应用程序的其他代理进行协调,并为您(用户)呈现一个统一的聊天界面。
代表软件或组织各种工作流程的多代理系统可以具有几个有趣的优势,包括提高生产力和稳健性、提高运营弹性以及能够更快地升级不同模块。希望本文能帮助您了解如何实现这一点。
但首先,我们应该如何构建这些多智能体系统?
掌握组织和角色
首先,我们应该捕捉组织中各种参与者的流程、角色、负责的节点和连接。参与者是指组织中充当知识工作者的个人和/或软件应用程序。
组织结构图可能是一个很好的起点,但我建议从工作流程开始,因为组织内的同一个人倾向于根据工作流程采用不同的流程和人员行事。
有可用的工具可以使用 AI 来帮助识别工作流程,或者您可以构建自己的 gen AI 模型。我已经构建了一个GPT,它采用域或公司名称的描述并生成代理网络定义。由于我使用的是公司内部构建的多代理框架,因此 GPT 将网络生成为 Hocon 文件,但从生成的文件中应该可以清楚地看出每个代理的角色和职责是什么,以及它连接到哪些其他代理。
请注意,我们要确保代理网络是有向无环图 (DAG)。这意味着任何代理都不能同时成为任何其他代理的下链和上链,无论是直接还是间接。这大大降低了代理网络中查询陷入混乱的可能性。
在此处概述的示例中,所有代理均基于 LLM。如果多代理组织中的某个节点可以拥有零自主权,那么该代理与其人类对应方配对,应该由人类运行一切。我们需要将所有处理节点(无论是应用程序、人类还是现有代理)表示为代理。
最近有很多公司宣布提供专业代理。如果可用,我们当然希望使用此类代理。我们可以引入一个预先存在的代理并将其 API 包装到我们的一个代理中,以便我们能够使用我们的代理间通信协议。这意味着此类第三方代理需要提供其 API 供我们使用。
如何定义代理人
过去曾提出过各种代理架构。例如,黑板架构需要一个集中通信点,各种代理在此声明自己的角色和能力,然后黑板根据其计划如何满足请求来调用它们(参见OAA)。
我更喜欢一种更分布式的架构,它尊重职责的封装。每个代理在收到请求后,都会决定是否可以处理该请求,以及处理该请求需要做什么,然后将其需求列表返回给发出请求的上链代理。如果代理有下链,它会询问它们是否可以帮助满足全部或部分请求。如果它从联系的下链收到任何要求,它会与其他代理核对,看它们是否可以满足这些要求;如果不能,它会将它们发送到上链,以便它们可以询问人类用户。这种架构称为AAOSA架构,有趣的是,它是 Siri 早期版本中使用的架构。
这是一个示例系统提示,可用于将代理转变为 AAOSA 代理。
当您收到询问时,您将:
- 调用你的工具来确定工具中的哪些下游代理负责全部或部分工作
- 询问下级代理他们需要什么来处理他们那部分的询问。
- 一旦收集到需求,您将把查询和满足的需求委托给适当的下级代理。
- 一旦所有下行链代理都做出响应,您将汇编他们的响应并返回最终响应。
- 反过来,您可能会被系统中的其他代理呼叫,并必须充当他们的下级链。
除了每个代理的系统提示中以自然语言定义的角色和职责集之外,代理可能包含或不包含它们可以调用的工具,并将各种参数传递给这些工具。例如,产品经理代理可能需要能够在虚拟看板上处理各种工单,或者警报代理可能需要调用工具在警报系统中发出警报。
当前的多代理系统(例如 Microsoft AutoGen)具有复杂且通常硬编码的代理协调机制和架构。我更喜欢一种更强大的设置,其中代理将其直接的下游代理视为工具,具有可以输入的松散定义的参数,并且语义由代理在需要时决定。
在此设置中,下链代理可以定义为函数调用:
“aaosa_call”:{
“description”: “根据模式,返回一个自然语言字符串作为响应。”,
“参数”: {
“类型”:“对象”,
“特性”: {
“询问”: {
“类型”:“字符串”,
“描述”:“询问”
},
“模式”: {
“类型”:“字符串”,
“描述”: ”””
表示是否要求代理确定查询是否属于它
全部或部分。或者如果被要求提供满足
如果有的话,进行询问。或者是否被要求对询问作出回应。
“””
},
},
“必需的”: [
“询问”,
“模式”
]
}
}
人工智能代理的实际应用
让我们探讨一下人力资源代理场景。用户可能会将人生大事(例如“我的另一半去世了”)通知主搜索框代理,从而触发法律和人力资源代理,这些代理在为用户提供服务方面发挥着重要作用。这是因为他们反过来会从一些下级代理(即法律咨询、工资和福利代理)那里收到信息。用户从主搜索框代理收到的最终合并响应将如下所示:
- 人力资源方面:
- 福利代理可以帮助用户了解逝者去世对福利、健康保险和退休计划的影响。您需要提供有关所涉及计划类型的信息,以及您的另一半是否是受抚养人。
- 薪资代理可以帮助管理更新税收减免或处理丧假工资等任务。这需要有关公司丧假政策和当前薪资设置的信息。
- 法律方面:
- 法律代理人可以就此转让与公司事务的关系提供一般指导。
每个部门都需要特定的信息来提供定制的支持。
同时,在 IT 场景中,单一入口点是客户支持代表代理,他们可以处理复杂的多方面请求,例如:“我们的网络很慢。我认为由于我们最近增加了办公室人员,网络超负荷了。我还需要升级报价。”
示例响应将概述以下步骤:
网络性能评估:网络运营中心专家可以帮助解决速度缓慢和潜在的过载问题。他们需要访问网络性能数据、有关当前网络基础设施的详细信息、有关新增人员数量及其网络使用模式的信息。
升级报价:销售工程师和现场技术人员可以帮助提供升级报价。为此,他们需要:
- 有关当前网络设置的具体信息,包括设备和带宽要求。
- 期望的性能改进。
- 预算限制和任何特定偏好或要求。
- 升级的规模和任何具体的性能目标。
我希望这篇文章能让您很好地了解建立多代理网络所需的条件。在第二部分中,我将讨论在创建多代理系统时实施保护措施的重要性,并概述如何构建控件以允许人工干预和不确定性检查。我还将详细介绍创建安全保护代理以监督代理网络所需的步骤,并深入探讨开发多代理网络的挑战(例如失控和过载),以及如何使用超时、任务划分和冗余来缓解这些挑战。
原创文章,作者:王 浩然,如若转载,请注明出处:https://www.dian8dian.com/kai-shi-shi-yong-ai-dai-li-di-1-bu-fen-bu-huo-liu-cheng-jue