a2aproject/a2a-go

Golang SDK for A2A Protocol

什么是 A2A Go SDK?

A2A Go SDK 是一个 Go 库,可让您构建和使用遵循 Agent-to-Agent (A2A) 协议 v1.0 的 智能体服务。实际上,一个 智能体 是一段能够接收请求(例如用户消息)、运行某些逻辑(通常为 LLM 或其他 AI 模型)并返回响应的软件。SDK 提供了底层实现,让您专注于智能体的核心逻辑,而无需操心网络通信、消息格式化和协议合规性。


核心组件

组件 功能 典型用途
a2asrv (服务器 SDK) 构建一个 与传输无关的请求处理器,并封装为 gRPC、REST 或 JSON-RPC 服务。 将 AI 驱动的智能体作为服务部署,供其他智能体调用。
a2aclient (客户端 SDK) 解析 AgentCard(描述如何访问智能体的元数据),并创建可发送消息的客户端。 从您的 Go 程序或 CLI 工具中调用另一个智能体。
传输绑定(a2agrpc、a2asrv.NewRESTHandler 等) 将通用处理器转换为具体的网络服务器/客户端。 根据环境选择合适的协议(高性能 gRPC、简单 HTTP 等)。
扩展点 可插入自定义传输、认证中间件、消息存储等。 与现有认证系统、数据库或自定义网络层集成。

快速入门(逐步操作)

  1. 安装 SDK

    go get github.com/a2aproject/a2a-go/v2
    

    需要 Go 1.25+。

  2. 编写服务器

    // 创建您自己的执行器,知道如何运行智能体逻辑。
    agentExec := newMyAgentExecutor()
    handler   := a2asrv.NewHandler(agentExec)
    
    // 选择一种传输方式 – 这里使用 gRPC。
    grpcHandler := a2agrpc.NewHandler(handler)
    srv := grpc.NewServer()
    grpcHandler.RegisterWith(srv)
    srv.Serve(lis) // lis 是一个 net.Listener
    

    将 newMyAgentExecutor 替换为调用 LLM、运行脚本等的代码。

  3. 编写客户端

    card, _ := agentcard.DefaultResolver.Resolve(ctx) // 发现远程智能体
    client, _ := a2aclient.NewFromCard(ctx, card)
    msg := a2a.NewMessage(a2a.MessageRoleUser, a2a.NewTextPart("Hello!"))
    resp, _ := client.SendMessage(ctx, &a2a.SendMessageRequest{Message: msg})
    fmt.Println(resp)
    
  4. 运行示例 仓库自带一个最小示例 examples/helloworld,演示了两端的用法。


为什么使用 A2A?

  • 标准化通信 – 遵循 A2A 规范,不同智能体(即使来自其他语言)也能互操作,无需自定义适配器。
  • 传输灵活性 – 相同的业务逻辑可通过 gRPC、普通 HTTP 或 JSON-RPC 轻松暴露,仅需少量胶水代码。
  • 可插拔架构 – 无需重写核心逻辑,即可替换自定义认证、持久化或传输层。
  • CLI 伴侣工具 – 独立的 a2a-cli 工具可让您无需编写 Go 代码即可测试智能体、发现智能体或将本地脚本暴露为 A2A 端点。

生态与资源

  • 文档 – 完整 API 参考在 https://pkg.go.dev/github.com/a2aproject/a2a-go/v2。
  • CLI 工具 – a2a-cli(仓库:a2aproject/a2a-cli)用于快速实验。
  • 示例项目 – 更复杂的用例集合位于 a2aproject/a2a-samples。
  • 规范 – 协议定义发布在 https://a2a-protocol.org。
  • 贡献 – 指南在 CONTRIBUTING.md 中;大变更前请先开 Issue。

总结

A2A Go SDK 是一个生产就绪的库,用于构建遵循通用、版本化协议的 AI 导向智能体服务。它抽象了网络通信(gRPC/REST/JSON-RPC),提供现成的客户端和服务器辅助工具,并支持自定义认证或存储需求的扩展。如果您正在编写需要以标准合规方式 暴露 或 消费 LLM 驱动智能体的 Go 代码,这个 SDK 将为您省去样板代码,让您专注于模型逻辑本身。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目