a2a
https://google-a2a.github.io/A2A/
a2a プロトコルとは
HTTP(S)にてやりとりする
サーバーはagent cardというagentの内容に関する定義を設定、公開する必要がある
やり取りするデータフォーマットはJSON-RPC 2.0でContent-Type: application/jsonのヘッダを設定する
各種プロトコル設定する項目
スキーマ
https://google-a2a.github.io/A2A/specification/
keywords
https://google-a2a.github.io/A2A/topics/key-concepts/
これの列挙
client
serverとのリクエストやユーザーとのメッセージのやり取りを管理する
message idとか、serverの情報とか
server
httpのエンドポイントを持つ。clientからmessage受け取って、task/resultを受取taskの状態を更新したりする
具体的なメッセージの処理系統がかかれる
card
agentの情報が書かれる。なにができるか、やメッセージ例など
/.well-known/agent.json としてwebに設置されるらしい
agentの役割などをclientが参考にしたり表示したりするー
task
clientからのメッセージを起点として、agentがタスクとして提起する。これをstateをもってタスクの状態を管理する(リポートを生成する、などのタスクがあり、workingなどの状態がある)
message
単一のやりとり、client/agent間の
role(userとかagentとか)/part(メッセージの内容)があり、messageidにて管理される
Used for conveying instructions, context, questions, answers, or status updates that are not necessarily formal Artifacts.
part
message/artifactの構成要素。text/file/dataがあるってdataはjson形式
artifact
agentがtaskの処理中に生成したブツ(tangible)
part的なものの塊
request/response
messageをRPC(リモートプロシージャコール)でおくる(外部agentを関数的に呼び出す?的な)
pollingする場合はworking statusとして、サーバーが返却する。completed or failed状態になるまで、タスクは継続される
streaming(server-send events - sse)
リアルタイムに考えて生成したものをagentが流す
message/streamにて、clientとserverがやりとりする
接続しっぱなし。
task message TaskStatusUpdateEventとTaskArtifactUpdateEvent(生成したものを更新するので)のイベントがおこる
agent cardにて、streaming capabilityが発生する
Push Notifications
長いタスク向け
context
サーバーで関連する複数taskをまとめたものやり取りを格納している
transport and format
httpでやり取りする際はJSON-RPC 2.0を用いる
authentication authorization
agent cardにoauthとかtokenとかapi keyとか設定できる。らしい。http headerにて認証云々を定義できる
agent discovery
clientはagent cartからなんか色々情報をえる
その他用語
agent executor
https://google-a2a.github.io/A2A/tutorials/python/4-agent-executor/