使用说明

项目简介

go-a2a 是一个使用 Go 语言构建和连接 AI Agent 的完整工具包,它实现了 Agent-to-Agent (A2A) 协议,并集成了 Model Context Protocol (MCP)。该项目提供 A2A 服务器、客户端以及独立的命令行工具,支持与 LLM 和 MCP 工具/资源集成,为构建复杂的 AI 助手和 Agent 生态系统提供基础框架。

主要功能点

  • 资源管理和数据访问: go-a2a 服务器可以托管和管理资源,并为 LLM 客户端提供数据访问能力,虽然文档中没有明确的资源管理示例,但 MCP 的定义暗示了服务器具备此功能。
  • 工具注册和执行: 服务器支持注册和执行工具,允许 LLM 客户端调用外部功能,例如示例代码中展示的 LLM 集成和 ToolAugmentedGollmAgent,都暗示了工具执行能力的存在。
  • Prompt 模板定义和渲染: 虽然文档没有直接提及 Prompt 模板功能,但 MCP 的定义包含 Prompt 模板,并且 go-a2a 集成了 MCP,因此推测具备 Prompt 模板定义和渲染能力,以支持定制化的 LLM 交互模式。
  • JSON-RPC 通信: 通过 JSON-RPC 协议与客户端通信,接收和响应客户端请求。
  • 会话管理: 服务器端负责会话管理,支持 LLM 应用的会话式交互。
  • 能力声明: 通过 Agent Card 声明服务器能力,方便客户端了解服务器功能。
  • 多种传输协议支持: 支持 Server-Sent Events (SSE) 等流式传输协议,以及 HTTP 等协议。

安装步骤

  1. 确保已安装 Go 语言环境。
  2. 使用 'go get' 命令安装 go-a2a 库:
    go get github.com/sammcj/go-a2a

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令及其参数才能建立连接。以下是基于 'examples/simple_server.go' 示例生成的服务器配置信息 (JSON 格式),你需要根据实际使用场景调整参数:

{
  "serverName": "go-a2a-server",
  "command": "./a2a-server",
  "args": [
    "--listen", ":8080",
    "--agent-card-path", "/.well-known/agent.json",
    "--a2a-path-prefix", "/a2a",
    "--log-level", "info"
    // 可以根据需要添加其他参数,例如 "--config", "config/server.json"
  ],
  "description": "Go-a2a MCP Server",
  "notes": "请确保 a2a-server 可执行文件在 MCP 客户端可访问的路径中。\n可以通过 'go build -o a2a-server ./cmd/a2a-server' 命令编译生成 a2a-server 可执行文件。"
}

基本使用方法

  1. 创建并启动 A2A 服务器:

    • 根据 'Getting Started' 部分的示例代码,创建一个简单的 A2A 服务器应用,并运行它。例如,可以运行 'examples/simple_server.go' 示例代码启动一个 Echo Agent 服务器。
    • 或者,可以构建和运行 'cmd/a2a-server' 目录下的独立服务器应用。
  2. 使用 A2A 客户端与服务器交互:

    • 使用 'Using the A2A Client' 部分的示例代码,创建一个 A2A 客户端应用,并连接到运行中的 A2A 服务器。例如,可以运行 'examples/simple_client.go' 示例代码与 Echo Agent 服务器进行交互。
    • 也可以使用 'cmd/a2a-client' 目录下的独立客户端应用,通过命令行与 A2A 服务器交互。
  3. 发送任务并接收响应:

    • 客户端通过 'SendTask' 等方法向服务器发送任务请求。
    • 如果使用流式订阅 'SendSubscribe',客户端可以实时接收服务器通过 Server-Sent Events (SSE) 推送的任务状态更新和 Artifact 信息。
  4. 利用 MCP 功能 (工具和资源):

    • 虽然文档没有详细示例,但根据描述,服务器支持 MCP 集成。你可以扩展服务器端代码,注册和管理 MCP 工具和资源,并在任务处理逻辑中调用这些工具和资源,以增强 LLM Agent 的能力。

信息

分类

AI与计算