跳转至

第二章:协议规范

协议基础

JSON-RPC 2.0

A2A 基于 JSON-RPC 2.0 协议:

// 请求
{
  "jsonrpc": "2.0",
  "method": "tasks/send",
  "params": {
    "id": "task-123",
    "message": {
      "role": "user",
      "parts": [{"text": "Hello"}]
    }
  },
  "id": 1
}

// 响应
{
  "jsonrpc": "2.0",
  "result": {
    "id": "task-123",
    "status": {"state": "completed"},
    "artifacts": [{"text": "Hi there!"}]
  },
  "id": 1
}

核心方法

tasks/send

发送任务给 Agent:

{
  "jsonrpc": "2.0",
  "method": "tasks/send",
  "params": {
    "id": "task-123",
    "sessionId": "session-456",
    "message": {
      "role": "user",
      "parts": [{"text": "Analyze this data"}]
    }
  },
  "id": 1
}

tasks/get

获取任务状态:

{
  "jsonrpc": "2.0",
  "method": "tasks/get",
  "params": {
    "id": "task-123"
  },
  "id": 2
}

tasks/cancel

取消任务:

{
  "jsonrpc": "2.0",
  "method": "tasks/cancel",
  "params": {
    "id": "task-123"
  },
  "id": 3
}

传输方式

HTTP

curl -X POST https://agent.example.com/a2a \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tasks/send","params":{...},"id":1}'

SSE

const eventSource = new EventSource('https://agent.example.com/a2a/tasks/task-123/stream')
eventSource.onmessage = (event) => {
  console.log(JSON.parse(event.data))
}

小结

协议规范要点:

  • JSON-RPC 2.0:请求/响应格式
  • 核心方法:tasks/send、tasks/get、tasks/cancel
  • 传输方式:HTTP、SSE

下一章我们将学习消息格式。