このドキュメントでは、Food Ordering AI Agent API の主なコンセプトの概要について説明します。
エージェントの構成
Food Ordering AI Agent の動作は、Brand、Store、Menu の各 API リソースの構成によって影響を受けます。これらのリソースは、レストランの ID、実店舗の所在地、提供する商品を定義し、AI エージェントが注文を処理するために必要なコンテキストを提供します。
ブランド
Brand は最上位のリソースで、そのレストラン ブランドの 1 つ以上の店舗に対応するレストラン ブランドを表します。このレストランのすべての店舗で共有される設定が含まれています。Brand には、挨拶の動作や音声の特徴など、エージェント ペルソナの多くの機能の設定を含めることができます。これらの機能の多くは、Store リソースで構成された値、またはセッションごとの構成(セッションのライフサイクルを参照)でオーバーライドできます。
保存
Store リソースは、Brand に属する単一の物理的なレストランの場所を表します。タイムゾーン、ステータス(ACTIVE、DISABLED)、営業時間、時間帯(特定のメニュー項目が利用可能な「朝食」や「ランチ」などの時間帯)。
メニュー
Menu リソースは、レストランが提供するすべての商品(販売可能なすべての商品の選択肢とカスタマイズを含む)を定義します。Menu は Store に関連付ける必要があります。メニューは、単一のアイテムの小さなリストから、ネストされた修飾子を含む組み合わせメニューの複雑なツリーまで、さまざまなメニュー構造に対応できるように設計されています。
Menu の主なコンポーネントは次のとおりです。
- アイテム: 単品の前菜、ドリンク、サイドメニュー、セットメニューなど、販売可能な最上位の商品。
- ModifierGroups: 「サイドメニューを選択」や「トッピングを追加」など、
Itemや別のModifierに適用できる選択肢のコレクション。 - 修飾子:
ModifierGroup内の個々のオプション(「フライドポテト」、「チーズ増量」、「コーラ」など)。修飾子はアイテムの価格を調整でき、さらにカスタマイズするためにネストされたModifierGroupを含めることができます。 - MenuCategories: 「前菜」や「ドリンク」などの組織部門。
Menu リソースは、projects/{project}/locations/{location}/menus/{menu} 形式の名前で識別されます。
メニューデータの構造化の詳細については、メニューデータの統合をご覧ください。
料理の注文セッション
デリバリー&テイクアウト セッションは、デリバリー&テイクアウト AI エージェントの中核であり、顧客と AI エージェント間のリアルタイムのマルチモーダルなやり取りを可能にします。各セッションは 1 回の食品注文会話を表し、FoodOrderingService.BidiProcessOrder RPC メソッドを使用して管理されます。
BidiProcessOrder RPC メソッド
これは双方向ストリーミング RPC です。クライアント アプリケーションはエージェントに入力をストリーミングし、エージェントは同時にレスポンスをクライアントにストリーミングします。これにより、低レイテンシのリアルタイム インタラクションが可能になります。
- クライアントからエージェントへのストリーム: クライアントは、音声入力(顧客の発話)、テキスト入力、イベント入力(顧客がタップ インターフェースを使用して実行したクライアントサイドのカートの更新、ドライブスルー レストランのハードウェアから検出されたハードウェアのドライブオフ イベントなど)を含む
BidiProcessOrderRequestメッセージのストリームを送信します。 - エージェントからクライアントへのストリーム: エージェントは、音声出力(合成されたエージェントの音声)、テキスト出力、認識された音声の文字起こし、お客様の注文ステータスの更新、検出された割り込みなどの他のシグナルを含む
BidiProcessOrderResponseメッセージのストリームを返します。
セッションのライフサイクル
Food Ordering AI Agent のすべてのセッションは、Config を含む BidiProcessOrderRequest メッセージを使用して指定された、クライアント提供の構成で開始する必要があります。Config では、次の 2 つのフィールドを指定する必要があります。
store: 注文が行われるStoreの完全なリソース名(例:projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE)。セッションは、参照されるStoreリソースと、そのストアの親Brandリソースで指定された構成を受け継ぎます。BrandとStoreの間で構成が競合する場合は、Store構成が優先されます。session:projects/PROJECT/locations/LOCATION/sessions/SESSION形式の固有のセッション識別子。session_idは、1 つの顧客インタラクションまたは会話を一意に識別するクライアント生成 ID です。