大型语言模型网络的可扩展通信协议:Agora

大型语言模型网络的可扩展通信协议:Agora

大型语言模型网络的可扩展通信协议:Agora

Samuele Marro, Emanuele La Malfa, Jesse Wright, Guohao Li, Nigel Shadbolt, Michael Wooldridge, Philip Torr

牛津大学工程科学系、计算机科学系,Eigent AI

description摘要

通信是协作的前提。在扩展AI驱动的代理网络时,通信必须具有多功能性高效性可移植性。这些要求,我们称之为代理通信三难问题,在大型代理网络中难以实现。我们介绍了Agora,一种利用现有通信标准的元协议,使LLM驱动的代理能够高效解决复杂问题。在Agora中,代理通常对频繁通信使用标准化例程,对罕见通信使用自然语言,对介于两者之间的一切使用LLM编写的例程。Agora规避了代理通信三难问题,稳健地处理接口和成员的变化,实现了前所未有的可扩展性,具有完全去中心化和最小化人类参与的特点。在大型Agora网络中,我们观察到自组织、完全自动化的协议的出现,这些协议无需人类干预即可实现复杂目标。

psychology研究背景与代理通信三难问题

人类语言主要为了通信目的而演变。尽管其固有的模糊性,自然语言提供了极大的多功能性,使人类和机器能够协作并实现否则无法完成的复杂目标。随着大型语言模型(LLM)的出现,对协作代理网络的兴趣重新兴起。LLM可以解决以自然语言表达的各种问题,并且在处理结构化数据方面表现出显著的改进。

假设

一个由异构LLM组成的网络可以通过专门化和高效的协议,在几乎没有人类监督的情况下自动化各种复杂任务。

代理通信三难问题

然而,LLM驱动的代理网络面临三个关键挑战,使大规模通信变得更加困难:

多功能性

代理之间的通信应支持各种消息,包括内容和格式

高效性

运行代理的计算成本和通信的网络成本应最小化

可移植性

支持通信协议应需要最大数量的代理付出最小的实现努力

这些特性之间的权衡构成了代理通信三难问题。传统的通信格式(如RESTful API、RDF元组和自然语言)都只是三难问题中的权衡,没有任何一种通信格式能同时实现这三个特性。

architectureAgora协议的核心原理和架构

Agora是一种元协议,利用LLM的独特能力,通过针对不同场景采用不同的通信方法来规避三难问题。最强大的LLM共享三个关键特性:

  • 它们能够理解、操作并使用自然语言回复其他代理
  • 它们擅长遵循指令,包括编写代码来实现例程
  • 它们能够自主协商协议并就复杂场景中采用的策略和行为达成共识

通信层次

在Agora中,根据情况使用不同的通信格式:

  • 频繁通信:通过传统协议处理,这些协议有标准的、人类编写的实现(如开放银行平台)
  • 较少频繁的通信:代理可以使用结构化数据作为交换媒介(可以由LLM编写的例程处理)
  • 对一方频繁但对另一方不频繁的通信:代理仍然使用结构化数据,但一方可以选择使用LLM,而另一方使用例程
  • 罕见通信或例程意外失败时:代理可以诉诸自然语言

协议文档(PD)

Agora引入了一种机器可读的方式来传输和引用协议,即协议文档(PD)。PD是通信协议的纯文本描述,是自包含的、与实现无关的,包含代理支持协议所需的一切。PD通过其哈希值唯一标识(用于多路复用),而不是依赖中央机构分配标识符。

code协议文档(PD)的概念和实现

协议文档(PD)是Agora的核心功能,它允许代理之间协商、共享和使用通信协议。PD是纯文本描述,完全描述了协议的语法和语义,使LLM能够实现处理该协议的例程。

PD协商流程

初始查询

代理A使用自然语言向代理B发送查询

协议协商

代理A和B协商协议细节

PD创建

创建协议文档并分配哈希值

例程实现

代理实现处理协议的例程

Agora交易规范

一个Agora交易操作如下。假设代理Alice试图与代理Bob通信:

  • Alice通过HTTPS向Bob发送一个包含三个字段的JSON文档:
    • protocolHash:协议文档的哈希值。如果使用自然语言,则值为null
    • protocolSources:可以找到协议文档的URI列表。如果protocolHash为null则为空,否则非空
    • body:包含根据给定协议指定的请求正文的字符串
  • 如果Bob没有协议文档,他会获取它(从Alice提供的源或其他存储库)
  • 如果Bob无法使用该协议,他返回一个包含一个字段的JSON文档,即status,等于”rejected”
  • 否则,Bob使用LLM、例程或两者的组合计算响应
  • Bob作为响应发送一个包含以下字段的JSON文档:
    • status:表示响应状态的字符串(可以是”success”或”failure”)
    • body:代理返回的响应

代码示例

以下是Agora协议的简单实现示例:

“`python # Agora交易示例 import requests import json import hashlib def send_agora_message(receiver_url, protocol_hash, protocol_sources, body): “””发送Agora消息到接收方””” message = { “protocolHash”: protocol_hash, “protocolSources”: protocol_sources, “body”: body } response = requests.post( receiver_url, json=message, headers={“Content-Type”: “application/json”} ) return response.json() # 创建协议文档 def create_protocol_document(description): “””创建协议文档并返回其哈希值””” document = json.dumps(description, ensure_ascii=False) document_hash = hashlib.sha1(document.encode()).hexdigest() return document_hash, document # 示例:天气查询协议 weather_protocol = { “name”: “Weather Forecast Query Protocol”, “description”: “查询给定日期和地点的天气预报的协议”, “input”: { “type”: “object”, “properties”: { “date”: {“type”: “string”, “format”: “YYYY-MM-DD”}, “location”: {“type”: “string”} } }, “output”: { “type”: “object”, “properties”: { “temperature”: {“type”: “number”}, “precipitation”: {“type”: “number”}, “weatherCondition”: {“type”: “string”, “enum”: [“sunny”, “cloudy”, “rainy”, “snowy”]} } } } # 创建协议文档并获取哈希 protocol_hash, protocol_document = create_protocol_document(weather_protocol) # 使用协议发送查询 query_body = json.dumps({ “date”: “2024-09-27”, “location”: “London, UK” }) response = send_agora_message( “https://example.com/weather-service”, protocol_hash, [“https://protocols.example.com/weather.json”], query_body ) print(response) “`

science演示案例

演示1:检索天气数据

考虑两个代理,Alice和Bob。Alice是一个由Llama-3-405B驱动的代理,管理伦敦导游服务的预订。Bob是一个GPT-4o代理,为天气服务提供给定日期和地点的天气预报。

初始阶段,Alice使用她的LLM向Bob发送自然语言查询:

“`json // Alice – 自然语言 “What is the weather forecast for London, UK on 2024-09-27?” “`

Bob使用他的Toolformer LLM查询数据库并返回自然语言回复:

“`json // Bob – 自然语言 “The weather forecast for London, UK, on 2024-09-27 is as follows: Rainy, 11 degrees Celsius, with a precipitation of 12 mm.” “`

随着时间的推移,调用LLM的成本主导了所有其他成本;因此Alice和Bob决定开发一个协议。经过几轮协商,Alice和Bob同意以下协议:Alice发送一个包含两个字段(location和date)的JSON文档,Bob回复一个包含三个字段(temperature、precipitation和weatherCondition)的JSON文档。从那时起,Alice在执行查询时指定协议哈希。交换消息的示例如下:

“`json // Alice – PD { “location”: “London, UK”, “date”: “2024-09-27” } // Bob – PD { “temperature”: 11, “precipitation”: 12, “weatherCondition”: “rainy” } “`

Alice和Bob都独立决定编写一个例程来处理他们一侧的通信。从现在开始,Alice和Bob不需要使用LLM来传输流量数据:例程现在自动化了通信阶段,并利用了调用各自LLM的成本。

成本分析:在我们的演示中,协商协议和实现例程的成本为0.043美元的API调用,而自然语言交换的平均成本为0.020美元。这意味着,只要Alice和Bob使用商定的协议超过两次,Agora就会降低总体成本。

演示2:100个代理的网络

我们通过考虑一个由100个LLM驱动的代理组成的网络来展示Agora的可扩展性和涌现行为。我们设计了一个由85个助理代理与15个服务器代理交互的网络,所有代理都由LLM驱动。服务器代理提供各种服务,如预订酒店房间、叫出租车、订餐等。

为了展示Agora在整个网络中的可移植性,我们使用了不同的数据库技术(SQL和MongoDB)以及不同的LLM,包括开源和闭源的(GPT-4o、Llama-3-405B和Gemini 1.5 Pro)。然后我们生成1000个随机查询,范围从简单的请求(如请求今天的天气)到更复杂的任务(如在滑雪胜地预订房间、购买电影票、从菜单中订购每道菜等)。

涌现协议:一旦连接建立并且网络可以发送和接收消息,我们观察到几个值得注意的行为。随着PD在代理之间逐步共享,我们观察到在给定任务的适当协议上出现了去中心化的共识。这种行为的一个例子涉及从餐厅订购食物:一个代理查询另一个代理请求将食物送到某个地址。餐厅代理从食品配送服务请求配送司机,后者又检查交通数据代理,看交通是否足够顺畅以完成配送。没有一个代理知道彼此的角色和所涉及的协议,除了他们直接的通信之外。然而,各种代理的交互创建了一个自动化工作流,处理一切。

成本分析:我们将运行Agora网络的成本与使用自然语言进行所有通信的网络进行了比较。如图所示,在开始时,Agora的成本效率略优于仅依赖自然语言的网络;随着越来越多的Agora驱动的节点依赖LLM编写的例程,这一差距随时间增加。在自然语言网络中运行1000个查询的API查询总成本为36.23美元,而Agora为7.67美元:换句话说,使用Agora执行此演示比使用常规自然语言便宜约五倍。

活动 成本占比
自然语言通信 54%
协商 6%
检查现有协议的适用性 22%
实现协议 17%

lightbulb结论和未来展望

在本文中,我们介绍了Agora,一种通过混合使用自然语言和结构化协议来规避代理通信三难问题的元协议。我们展示了Agora代理可以协商、实现和使用协议,创建解决复杂任务的自组织网络。此外,我们通过测试100个代理的演示展示了Agora的可扩展性,与仅使用自然语言的通信相比,实现了五倍的成本降低。我们的结果展示了协商作为高效、可扩展和去中心化代理网络基础的强大力量。

随着LLM的持续改进以及它们之间交互的增加,LLM驱动的代理网络有潜力超越单个LLM的规模限制。开发支持去中心化、灵活和高效通信的框架和协议,无论是通过Agora还是其他技术,都可以为未来复杂活动被LLM部分或完全自动化的世界奠定基础。

未来研究方向

  • 探索更复杂的协议协商算法和共识机制
  • 研究Agora在更大规模网络中的表现和限制
  • 开发更高效的PD存储和检索机制
  • 探索Agora与其他多代理系统框架的集成
  • 研究Agora在安全和隐私方面的挑战和解决方案

发表评论

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 知差(chai)网 🐾 DeepracticeX 社区 🐾 老薛主机 🐾