이 문서에서는 음식 주문 AI 에이전트 API의 주요 개념에 대한 개략적인 개요를 제공합니다.
에이전트 구성
음식 주문 AI 에이전트의 동작은
여러 API 리소스(Brand, Store, Menu)의 구성에 영향을 받습니다. 이러한 리소스는 레스토랑의 ID, 실제 위치, 제공하는 제품을 정의하여 AI 에이전트가 주문을 처리하는 데 필요한 컨텍스트를 제공합니다.
브랜드
Brand는 최상위 리소스로, 해당 레스토랑 브랜드의 하나 이상의 위치에 해당하는 레스토랑 브랜드를 나타냅니다.
이 리소스에는 해당 레스토랑의 모든 위치에서 공유되는 구성이 포함되어 있습니다.
Brand에는 인사말 동작 및 음성 특성과 같은 에이전트 페르소나의 여러 기능 구성이 포함될 수 있습니다. 이러한 기능 중 다수는 스토어 리소스
또는 세션별 구성 (세션 수명 주기 참고)에 구성된 값으로 재정의될 수 있습니다.
스토어
A Store 리소스는
Brand에 속한 단일 실제 레스토랑 위치를 나타냅니다. 이 리소스는 시간대, 상태 (예: ACTIVE, DISABLED), 영업시간, 시간대 (예: 특정 메뉴 항목을 이용할 수 있는 '아침' 또는 '점심'과 같은 기간)와 같이 해당 위치와 관련된 구성을 정의합니다.
메뉴
Menu 리소스는 판매 가능한 모든 제품에 대한 가능한 모든 선택사항과 맞춤설정을 포함하여 레스토랑에서 제공하는 모든 제품을 정의합니다. Menu
는 Store와 연결되어야 합니다.
메뉴는 독립형 항목의 작은 목록부터 중첩된 수정자가 있는 조합 식사의 복잡한 트리까지 다양한 메뉴 구조를 수용할 수 있도록 설계되었습니다.
Menu의 주요 구성요소는 다음과 같습니다.
- 항목: 일품 요리, 음료, 사이드 메뉴 또는 조합 식사와 같은 판매 가능한 최상위 제품입니다.
- ModifierGroups' 또는 '토핑 추가'와 같이 또는 다른 에 적용할 수 있는 선택사항 모음입니다.
ItemModifier - 수정자:
ModifierGroup내의 개별 옵션입니다(예: '감자튀김', '치즈 추가', '콜라'). 수정자는 항목 가격을 조정할 수 있으며 추가 맞춤설정을 위해 중첩된ModifierGroups를 포함할 수 있습니다. - MenuCategories: '애피타이저' 또는 '음료'와 같은 조직 단위입니다.
A Menu 리소스는 다음 형식의 이름으로 식별됩니다.
projects/{project}/locations/{location}/menus/{menu}.
메뉴 데이터 구조화에 관한 자세한 내용은 메뉴 데이터 통합을 참고하세요.
음식 주문 세션
음식 주문 세션은 음식 주문 AI 에이전트의 핵심으로, 고객과 AI 에이전트 간의 대화형 상호작용을 지원합니다. 각 세션
은 단일 음식 주문 대화를 나타내며
실시간 양방향 스트리밍 메서드
(FoodOrderingService.BidiProcessOrder) 또는 턴 기반 단항 요청-응답 메서드
(FoodOrderingService.ProcessOrder)를 사용하여 관리됩니다.
BidiProcessOrder RPC 메서드
이는 양방향 스트리밍 RPC입니다. 클라이언트 애플리케이션은 입력을 에이전트에 스트리밍하고 에이전트는 동시에 응답을 클라이언트에 다시 스트리밍합니다. 이를 통해 지연 시간이 짧은 실시간 멀티모달 (음성 및 텍스트) 상호작용이 가능합니다.
- 클라이언트-에이전트 스트림: 클라이언트는 오디오 입력
(고객 음성), 텍스트 입력 또는 이벤트 입력 (예: 탭 인터페이스를 사용하여 고객이 실행한 클라이언트 측 장바구니 업데이트 또는 드라이브 스루 레스토랑 하드웨어에서 하드웨어로 감지된 드라이브 오프 이벤트)이 포함된
BidiProcessOrderRequest메시지 스트림을 보냅니다. - 에이전트-클라이언트 스트림: 에이전트는 오디오 출력 (합성된
에이전트 음성), 텍스트 출력, 인식된 음성의 트랜스크립트,
고객 주문 상태 업데이트 또는 감지된 중단과 같은 기타 신호가 포함된
BidiProcessOrderResponse메시지 스트림을 반환합니다.
ProcessOrder RPC 및 REST 메서드
ProcessOrder는 텍스트 기반의 턴 기반 음식 주문 통합 (예: 채팅 위젯, 웹 양식, REST 클라이언트)을 위해 설계된 단항 요청-응답 메서드입니다. gRPC 및 REST (POST /v1/{config.session=projects/*/locations/*/sessions/*}:processOrder)를 통해 액세스할 수 있습니다.
BidiProcessOrder와 달리 ProcessOrder는 개별 요청-응답 턴에서 작동하며 텍스트 전용입니다.
- 모드 요구사항:
config.mode는TEXT(또는 JSON의2)로 명시적으로 설정해야 합니다. - 턴 수명 주기: 초기 턴에서
turn_type을INITIALIZE로 설정하여 메뉴 및 스토어 메타데이터와 같은 세션 변수를 삽입하고 후속 턴에서SUBSEQUENT로 설정해야 합니다.
세션 수명 주기
음식 주문 AI 에이전트의 모든 세션은 클라이언트 제공 구성
Config 메시지를 사용하여 지정된 구성으로 시작해야 합니다. Config는 다음을 지정합니다.
store: 주문이 이루어지는Store의 전체 리소스 이름입니다 (예:projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE). 세션은 참조된Store리소스와 해당 스토어의 상위Brand리소스에 지정된 구성을 가져옵니다.Brand와Store간에 구성이 충돌하는 경우Store구성이 우선합니다.session: 고유 세션 식별자입니다. 형식은projects/PROJECT/locations/LOCATION/sessions/SESSION입니다.session_id는 하나의 고객 상호작용 또는 대화를 고유하게 식별하는 클라이언트 생성 ID입니다.mode: 세션 모드 (HYBRID또는TEXT).BidiProcessOrder의 경우mode는 선택사항이며 기본값은HYBRID(음성 및 텍스트)입니다.ProcessOrder(단항 / REST)의 경우mode는TEXT로 명시적으로 설정해야 합니다.