a2aproject/a2a-go

Golang SDK for A2A Protocol

What is A2A Go SDK?

A2A Go SDK は、Go ライブラリ であり、Agent-to-Agent (A2A) Protocol v1.0 を使用する エージェントサービス を構築および利用できるようにします。実際には、エージェント とは、リクエスト(例:ユーザーのメッセージ)を受け取り、通常は LLM やその他の AI モデルでロジックを実行し、応答を返すソフトウェアの一部です。SDK は、ネットワーク処理、メッセージフォーマット、プロトコル準拠を自動で処理するため、エージェントのコアロジックに集中できます。


Core Components

Component What it does Typical use
a2asrv (Server SDK) トランスポートに依存しないリクエストハンドラ を構築し、gRPC、REST、または JSON-RPC 用にラップします。 他のエージェントが呼び出せる AI ベースのエージェントサービスとしてデプロイします。
a2aclient (Client SDK) AgentCard(エージェントにアクセスする方法を記述するメタデータ)を解決し、メッセージを送信できるクライアントを作成します。 Go プログラムや CLI ツールから他のエージェントを呼び出します。
Transport bindings (a2agrpc, a2asrv.NewRESTHandler, etc.) 一般的なハンドラを具体的なネットワークサーバー/クライアントに変換します。 環境に合ったプロトコルを選択(高性能な gRPC、シンプルな HTTP など)。
Extension points カスタムトランスポート、認証ミドルウェア、メッセージストアなどをプラグイン可能。 既存の認証システム、データベース、またはカスタムネットワークレイヤーと統合。

Getting Started (Step-by-step)

  1. Install the SDK

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

    Go 1.25+ を必要とします。

  2. Write a server

    // エージェントロジックを実行するための独自のエクセキュータを作成します。
    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. Write a client

    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. Run the example リポジトリには examples/helloworld という最小限の例が含まれており、両方の側面を示しています。


Why Use A2A?

  • 標準化された通信 – A2A 標準に従うことで、異なるエージェント(他の言語でも)がカスタムアダプタなしで相互運用可能になります。
  • トランスポートの柔軟性 – 同じビジネスロジックを gRPC、プレーンHTTP、または JSON-RPC で公開でき、わずかなグルーコードで実現可能です。
  • プラグインアーキテクチャ – コア部分を再実装せずに、独自の認証、永続化、トランスポートレイヤーを交換可能。
  • CLI コンパニオン – 別の a2a-cli ツールで、エージェントのテスト、発見、ローカルスクリプトを A2A エンドポイントとして公開できます。Go コードを書かずに済みます。

Ecosystem & Resources

  • Documentation – 完全な API リファレンスは https://pkg.go.dev/github.com/a2aproject/a2a-go/v2 で利用可能。
  • CLI tool – a2a-cli(リポジトリ: a2aproject/a2a-cli)は、素早い実験に最適です。
  • Sample projects – より複雑なユースケースは a2aproject/a2a-samples にあります。
  • Specification – プロトコル定義は https://a2a-protocol.org に公開されています。
  • Contribution – ガイドラインは CONTRIBUTING.md に記載。大規模な変更の前にイシューを開いてください。

TL;DR

A2A Go SDK は、共通でバージョン管理されたプロトコルを話す AI指向のエージェントサービス を構築するためのプロダクション対応ライブラリです。gRPC/REST/JSON-RPC などのネットワーク処理を抽象化し、クライアントおよびサーバー用の準備済みヘルパーを提供し、カスタム認証やストレージのニーズに対応できる拡張性を持ちます。LLM ベースのエージェントを標準準拠の方法で 公開 または 利用 する必要がある Go コードを書いている場合、この SDK はボイラープレートを提供し、モデルロジックに集中できるようにします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト