エージェント開発ガイド¶
A2UIプロトコルを使用して、リッチでインタラクティブなUIを生成するエージェント(サーバー側)を構築する方法を学びます。
基本的なアプローチ¶
エージェントを構築する際、主に3つの作業があります:
- プロンプト設計: LLMにA2UI JSONを生成するように教える。
- メッセージ生成: LLMの出力をA2UIメッセージ形式に整形する。
- ストリーミング: 生成されたメッセージをリアルタイムでクライアントに送信する。
1. プロンプト設計 (System Prompt)¶
LLMが正しいA2UI構造を生成できるように、システムプロンプトに以下の情報を含めます。
- A2UIの形式: 隣接リスト (Adjacency List) モデルであることを記述します。
- 利用可能なコンポーネント: エージェントが使用できるコンポーネント(標準およびカスタム)のリファレンスを提供します。
- データバインディング: データモデルとパスの使い方を説明します。
プロンプトの例:
あなたはA2UIメッセージを生成するアシスタントです。
UIを出力する際は、以下のJSON形式に従い、JSONL形式でストリーム出力してください。
1. surfaceUpdate: UIの構造(隣接リスト形式)を定義します。
2. dataModelUpdate: コンポーネントにバインドされるデータを提供します。
3. beginRendering: レンダリングを開始させます。
利用可能なコンポーネント: Text, Button, Card, TextField...
2. メッセージ生成フロー¶
エージェントは通常、一連のJSONLメッセージを生成します。
ステップ A: UI構造の定義 (surfaceUpdate)¶
最初に、画面上のコンポーネントの配置を定義します。
ステップ B: データの送信 (dataModelUpdate)¶
コンポーネントが必要とするデータ(初期値など)を送信します。
ステップ C: レンダリング開始 (beginRendering)¶
UIを表示するための準備が整ったことをクライアントに伝えます。
3. 実装のヒント¶
ストリーミングの活用¶
ユーザーの待ち時間を減らすために、LLMのトークンが生成されるたびにパースして、1つずつメッセージ(JSONLの1行)としてクライアントにストリーミングしてください。
エラーハンドリング¶
LLMが不完全なJSONを生成した場合に備えて、検証(バリデーション)を行い、クライアントに送る前に修正するか、エラーメッセージを送信してください。
ツールの活用¶
- ADK (Agent Development Kit): Googleが提供するADKを使用すると、A2UIメッセージの作成がより簡単になります。(サンプルを参照)
- A2A (Agent-to-Agent): A2Aプロトコルを使用している場合、メッセージのラップ(カプセル化)が自動的に行われます。
開発者チェックリスト¶
✅ LLMはA2UIの仕様(隣接リスト形式)を理解しているか? ✅ クライアントで使用可能なコンポーネントのみを生成しているか? ✅ 適切に JSON Pointer を使用してデータバインディングを行っているか? ✅ メッセージは正しい順序(構造 → データ → 開始)で送信されているか? ✅ パフォーマンスのためにストリーミングを実装しているか?
次のステップ¶
- メッセージリファレンス:詳細なプロトコル仕様
- コンポーネントリファレンス:コンポーネントの詳細
- トランスポート層:配信方法の選択