Slide 1

Slide 1 text

〜10分でおおまかに理解する〜 2026/02/09 JAWS-UG 栃木 オフライン #6 -1周年感謝祭- A2A においてエージェント同士はどのように やりとりしているのか

Slide 2

Slide 2 text

A2A というプロトコルを 聞いたことがありますか? 2

Slide 3

Slide 3 text

今日お話しすること 3

Slide 4

Slide 4 text

今日お話しすること A2A について そもそもどういったものなのか – A2A におけるエージェント間のやりとりの仕組み 大まかな概要 – Strands Agents で実装する際の仕組み – デモ Langfuse を用いたトレースの様子を確認 – 4

Slide 5

Slide 5 text

A2A の概要 5

Slide 6

Slide 6 text

A2A(Agent2Agent) とは ※詳細は A2A Protocol をご参照ください AIエージェント間の通信プロトコル 2025年4月にGoogleが発表 – 現在は Linux Foundation のプロジェクトに – 目的 異なるフレームワークで作られたエージェント同士の通信を実現 – 主な要素 AgentCard、Task、Message、Part、Artifact の5つ – 6

Slide 7

Slide 7 text

やりとりの仕組み 7

Slide 8

Slide 8 text

A2Aプロトコルは 2ステップ 8

Slide 9

Slide 9 text

A2Aプロトコルは 2ステップ Phase やること HTTP Discovery 相手を知る GET /.well-known/agent.json Message 仕事を頼む POST / Agent Card(名刺)でエージェントの情報を取得 HTTP で JSON メッセージを送り合う 9

Slide 10

Slide 10 text

Agent Card = エージェントの名刺 { "name": "Strands Agent専門エージェント", "description": "Strands Agentsフレームワークに関する質問に回答する", "url": "http://localhost:9001/", "skills": [ { "name": "search_docs", "description": "公式ドキュメントを検索する" } ], "default_input_modes": ["text"], "default_output_modes": ["text"] } name , description → LLM が「このエージェントに聞くべきか」を判断する材料 skills → エージェントが持つツールから自動生成される 10

Slide 11

Slide 11 text

Strands Agents で実装すると? 11

Slide 12

Slide 12 text

今日のデモ構成 12

Slide 13

Slide 13 text

子エージェントの実装(A2A Server 側) # child_agent_strands.py agent = Agent( model=model, system_prompt=SYSTEM_PROMPT, tools=[mcp_client], name="Strands Agent専門エージェント", description="Strands Agentsフレームワークに…", ) a2a_server = A2AServer(agent=agent, port=9001, ...) app.mount("/", a2a_server.to_fastapi_app()) name と description を書くだけで Agent Card が自動生成される A2AServer が Agent を HTTP エンドポイントに変換 13

Slide 14

Slide 14 text

親エージェントの実装(A2A Client 側) # parent_agent.py agent_urls = [ "http://localhost:9001", # Strands Agent専門エージェント "http://localhost:9002", # LangChain専門エージェント ] a2a_tool_provider = A2AClientToolProvider(known_agent_urls=agent_urls) agent = Agent( model=model, system_prompt=SYSTEM_PROMPT, tools=a2a_tool_provider.tools, # ← A2Aツールが渡される ) A2Aツール a2a_list_discovered_agents → 名刺を取りに行く – a2a_send_message → メッセージを送る – 14

Slide 15

Slide 15 text

実際の通信シーケンス 15

Slide 16

Slide 16 text

実際に確認してみる(デモ) 16

Slide 17

Slide 17 text

Langfuse について ※詳細は Langfuse -日本語ガイド- をご参照ください LLM アプリ開発に特化したオープンソースの観測・分析プラットフォーム 主な機能 モニタリング – アナリティクス – デバッグ – その他、プロンプトの管理などもいい感じにできます – 17

Slide 18

Slide 18 text

まとめ 18

Slide 19

Slide 19 text

まとめ A2A について そもそもどういったものなのか – A2A におけるエージェント間のやりとりの仕組み 大まかな概要 – Strands Agents で実装する際の仕組み – デモ Langfuse を用いたトレースの様子を確認 – 19

Slide 20

Slide 20 text

まとめ A2A について (フレームワークによらない)AIエージェント間の通信プロトコル – A2A におけるエージェント間のやりとりの仕組み Agent Card でエージェントの情報を取得・HTTPでやり取り – A2AServer , A2AClientToolProvider により簡単に実装できる – デモ 説明した通りの仕組みであることを確認できた – ※トレースの詳細は 2/17 Bedrock Night で話す予定です – 20

Slide 21

Slide 21 text

ご清聴ありがとうございました 質問・フィードバックお待ちしています 21