菜单

代理协议

相关源文件

Agent Protocol 是由 AI Engineer Foundation 创建的标准化通信规范,AutoGPT 通过实现该协议来确保代理与系统各个组件之间的一致交互。本文档涵盖了协议的技术细节、在 AutoGPT 中的实现,以及它如何实现代理、前端 UI 和基准测试工具之间的互操作性。

有关可能使用 Agent Protocol 的后端 REST API 端点的信息,请参阅 后端 API

1. 概述和目的

Agent Protocol 建立了一个统一的代理通信标准,允许不同 AI 代理实现之间的无缝兼容性。在 AutoGPT 中,它充当通信层,用于标准化之间的交互:

  • 代理实现(包括 Forge 构建和外部代理)
  • 前端用户界面
  • 基准测试系统
  • 外部工具和服务

通过遵循此协议,代理可以轻松地进行交换、测试和集成到各种前端应用程序中,而无需修改其核心逻辑。

来源: README.md159-161

2. 协议架构

Agent Protocol 被设计为一个 REST API 规范,它定义了代理通信的标准端点和消息格式。这使得接口保持一致,而无需考虑代理的具体实现细节。

Agent Protocol 通信流程

来源: README.md159-161

3. 核心组件

Agent Protocol 包含几个关键组件,它们共同构成了通信接口:

3.1 任务管理

任务是 Agent Protocol 中的主要工作单元。每个任务代表代理要完成的特定目标或目的。

端点方法描述
/agent/tasksPOST为代理创建一个新任务
/agent/tasks/{task_id}GET获取特定任务的详细信息
/agent/tasks/{task_id}/stepsPOST执行任务中的一个步骤
/agent/tasks/{task_id}/steps/{step_id}GET获取特定步骤的详细信息

3.2 工件管理

工件是代理在任务执行期间可以创建、修改或访问的文件或数据对象。

端点方法描述
/agent/tasks/{task_id}/artifactsGET列出任务的所有工件
/agent/tasks/{task_id}/artifactsPOST上传新工件
/agent/tasks/{task_id}/artifacts/{artifact_id}GET下载特定工件

3.3 消息模式

该协议定义了标准的通信消息格式。

Task: {
  "task_id": string,
  "input": string,
  "status": "created" | "running" | "completed" | "failed",
  "steps": Step[],
  "artifacts": Artifact[]
}

Step: {
  "step_id": string,
  "task_id": string,
  "status": "created" | "running" | "completed" | "failed",
  "input": string,
  "output": string,
  "additional_input": object
}

Artifact: {
  "artifact_id": string,
  "task_id": string,
  "file_name": string,
  "relative_path": string,
  "created_at": datetime
}

来源: README.md159-161

4. 与 AutoGPT 组件集成

Agent Protocol 与 AutoGPT 系统的几个关键组件集成:

4.1 前端集成

AutoGPT 前端 UI 通过 Agent Protocol 与代理进行通信,使用户能够创建任务、监控执行情况和查看结果,而无需了解底层代理实现。

4.2 基准测试集成

基准测试系统使用 Agent Protocol 来标准化其与不同代理实现交互的方式,确保公平和一致的评估。

来源: README.md108-116

5. 协议实现细节

5.1 身份验证

Agent Protocol 支持标准的身份验证方法:

  • 通过标头进行 API 密钥身份验证
  • 基于 OAuth2 令牌的身份验证
  • 本地开发环境无需身份验证

5.2 错误处理

该协议定义了标准的错误响应:

状态码描述
400错误请求 - 无效的输入
401未授权 - 需要身份验证
404未找到 - 资源不存在
500内部服务器错误 - 代理失败

5.3 内容类型

该协议主要使用:

  • application/json 用于请求和响应正文
  • multipart/form-data 用于工件上传

6. 使用 Agent Protocol

6.1 创建任务

要为代理创建一个新任务,请执行以下操作:

POST /agent/tasks
Content-Type: application/json

{
  "input": "Analyze the sentiment of this text: I really enjoyed the product."
}

6.2 执行步骤

要在任务中执行一个步骤,请执行以下操作:

POST /agent/tasks/{task_id}/steps
Content-Type: application/json

{
  "input": "Continue with the sentiment analysis."
}

6.3 检索工件

要列出任务期间创建的工件:

GET /agent/tasks/{task_id}/artifacts

要下载特定工件:

GET /agent/tasks/{task_id}/artifacts/{artifact_id}

7. 外部资源

Agent Protocol 规范由 AI Engineer Foundation 维护。有关完整且最新的规范,请访问官方网站 agentprotocol.ai

来源: README.md159-161