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)
Install the SDK
go get github.com/a2aproject/a2a-go/v2Go 1.25+ を必要とします。
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.ListenernewMyAgentExecutorには、LLM を呼び出すコード、スクリプトを実行するコードなどを記述してください。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)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 はボイラープレートを提供し、モデルロジックに集中できるようにします。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト