跳转至

tRPC-Agent-Go A2A 集成指南

概述

tRPC-Agent-Go 提供了一键将 Agent 转换为 A2A (Agent-to-Agent) 服务的能力。通过简单的配置,开发者可以将任何基于 trpc-agent-go 框架开发的 Agent 快速暴露为符合 A2A 协议的服务,实现 Agent 间的标准化通信。

核心能力

  • 零协议感知: 开发者只需关注 Agent 的业务逻辑,无需了解 A2A 协议细节
  • 自动适配: 框架自动将 Agent 信息转换为 A2A AgentCard
  • 消息转换: 自动处理 A2A 协议消息与 Agent 消息格式的转换
  • tRPC 集成: 与 tRPC 生态无缝集成,支持服务发现、负载均衡等企业级特性

tRPC-Agent-Go 中的 A2A 集成

Agent 到 A2A 的自动转换

tRPC-Agent-Go 通过 server/a2a 包实现了从 Agent 到 A2A 服务的无缝转换:

func New(opts ...Option) (*a2a.A2AServer, error) {}

AgentCard 自动生成

框架会自动提取 Agent 的元数据(名称、描述等),生成符合 A2A 协议的 AgentCard。

消息协议转换

框架内置 messageProcessor 实现 A2A 协议消息与 Agent 消息格式的双向转换,用户无需关心消息格式转换的细节。

快速开始

使用 tRPC-Agent-Go 创建 A2A 服务

只需几行代码,就可以将任意 Agent 转换为 A2A 服务:

基础示例:从 Agent 到 A2A 服务

package main

import (
    "trpc.group/trpc-go/trpc-agent-go/agent/llmagent"
    "trpc.group/trpc-go/trpc-agent-go/model/openai"
    a2aserver "trpc.group/trpc-go/trpc-agent-go/server/a2a"
)

func main() {
    // 1. 创建一个普通的 Agent
    model := openai.New("gpt-4o-mini")
    agent := llmagent.New("MyAgent",
        llmagent.WithModel(model),
        llmagent.WithDescription("一个智能助手"),
    )

    // 2. 一键转换为 A2A 服务
    server, _ := a2aserver.New(
        a2aserver.WithHost("localhost:8080"),
        a2aserver.WithAgent(agent), // 传入任意 Agent
    )

    // 3. 启动服务,即可接受 A2A 请求
    server.Start(":8080")
}

客户端调用示例

import (
    "trpc.group/trpc-go/trpc-a2a-go/client"
    "trpc.group/trpc-go/trpc-a2a-go/protocol"
)

func main() {
    // 连接到 A2A 服务
    client, _ := client.NewA2AClient("http://localhost:8080/")

    // 发送消息给 Agent
    message := protocol.NewMessage(
        protocol.MessageRoleUser,
        []protocol.Part{protocol.NewTextPart("你好,请帮我分析这段代码")},
    )

    // Agent 会自动处理并返回结果
    response, _ := client.SendMessage(context.Background(),
        protocol.SendMessageParams{Message: message})
}