データフロー¶
A2UIにおけるデータフローは、エージェントがUIを生成し、クライアントがそれを表示し、ユーザーが対話してエージェントにフィードバックを送るという一連の流れを定義します。
基本的な流れ¶
sequenceDiagram
participant U as ユーザー
participant C as クライアント (A2UIレンダラー)
participant E as エージェント (サーバー側)
U->>E: メッセージ送信 ("予約して")
E->>C: surfaceUpdate (UI構造の送信)
E->>C: dataModelUpdate (初期データの送信)
E->>C: beginRendering (表示開始)
C-->>U: UI表示 (フォームなど)
U->>C: データ入力 (日付選択など)
C->>E: アクション実行 / データ更新通知
E->>C: dataModelUpdate (確認メッセージなど)
1. サーバーからクライアントへのフロー¶
エージェント(サーバー)は、JSON形式のメッセージをクライアントに送信します。
- UIの記述:
surfaceUpdateメッセージで、どのコンポーネントを表示するかを記述します。 - データの提供:
dataModelUpdateメッセージで、バインドされたプロパティに使用されるデータを提供します。 - レンダリングのトリガー:
beginRenderingメッセージで、クライアントに描画の準備ができたことを知らせます。
ストリーミング¶
A2UIはストリーミングに最適化されています。エージェントはUI全体が完成するのを待たずに、生成されたメッセージを1つずつ送信できます。クライアントはこれを受信した順に処理し、インクリメンタルにUIを構築します。
2. クライアントからサーバーへのフロー (ユーザーアクション)¶
ユーザーがUIを操作すると、それに応じたデータがエージェントに送り返されます。
アクションの実行¶
ユーザーがボタンをクリックすると、定義された action がサーバーに送信されます。
ステート(状態)の同期¶
TextField などの入力コンポーネントでデータが変更されると、それに応じたパスのデータがサーバーと同期されます。
ライフサイクル¶
- 定義 (Define):
surfaceUpdateによる構造の定義。 - 初期化 (Initialize):
dataModelUpdateによるデータの初期化。 - 表示 (Show):
beginRenderingによる表示開始。 - 対話 (Interact): ユーザーによるアクションや入力の反映。
- 更新 (Update): エージェントによる追加のデータや構造の変更。
- 破棄 (Destroy):
deleteSurfaceによるUIの削除。
次のステップ¶
- メッセージリファレンス:送信される各メッセージの仕様
- トランスポート層:メッセージを配信するためのメカニズム
- エージェント開発ガイド:フローを実装するためのガイド