本文档简要介绍了订餐 AI 智能体 API 中的关键概念。
智能体配置
订餐 AI 智能体的行为受
多个 API 资源的配置影响,这些资源包括:Brand、Store 和 Menu。这些资源定义了餐厅的身份、实体店位置和提供的商品,为 AI 智能体处理订单提供了必要的背景信息。
品牌
Brand 是顶级资源,表示与该餐厅品牌的一个或多个位置对应的餐厅品牌。
它包含在该餐厅的所有位置之间共享的配置。
Brand 可以包含智能体角色的许多功能的配置,例如问候行为和语音特征。其中许多功能可以被 Store 资源中配置的值
或会话级配置(请参阅会话生命周期)替换。
门店
A Store 资源表示属于 a
Brand 的单个实体餐厅位置。它定义了特定于该位置的配置,例如时区、状态(例如 ACTIVE、DISABLED)、营业时间和 dayparts(例如“早餐”或“午餐”等时段,在此期间提供某些菜单项)。
菜单
Menu 资源定义了餐厅提供的所有商品,包括
每个可销售商品的所有可能选择和自定义项。Menu
必须与 Store相关联。
菜单旨在灵活适应各种菜单结构,从独立商品的小列表到包含嵌套修饰符的组合套餐的复杂树形结构。
Menu 的关键组件包括:
- 商品:可销售的顶级商品,例如单点主菜、饮品、配菜或组合套餐。
- ModifierGroups:适用于
Item或 另一个Modifier的选择集合,例如“选择配菜”或“添加配料”。 - Modifiers:
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。