本文档简要介绍了 Food Ordering AI Agent API 中的关键概念。
代理配置
外卖订餐 AI 代理的行为受多种 API 资源配置的影响:Brand、Store 和 Menu。这些资源定义了餐厅的身份、实体营业地点和提供的商品,为 AI 代理处理订单提供了必要的背景信息。
品牌
Brand 是顶级资源,表示与相应餐馆品牌的一个或多个位置对应的餐馆品牌。它包含相应餐厅的所有营业地点共用的配置。Brand 可以包含代理角色许多功能的配置,例如问候行为和语音特征。其中许多功能都可以通过在商店资源中配置的值或甚至在每次会话的配置中(请参阅会话生命周期)进行替换
存储
Store 资源表示属于 Brand 的单个实体餐厅位置。它定义了特定于该位置的配置,例如时区、状态(例如,ACTIVE、DISABLED)、营业时间和时段(例如“早餐”或“午餐”等提供特定菜单项的时段)。
菜单
Menu 资源定义了餐厅提供的所有商品,包括每个可售商品的所有可能选项和自定义设置。Menu 必须与 Store 相关联。菜单设计灵活,可适应各种菜单结构,从包含独立项的小列表到包含嵌套修饰符的组合餐复杂树结构,均可适用。
Menu 的关键组成部分包括:
- 商品:可销售的顶级商品,例如单点主菜、饮料、配菜或套餐。
- ModifierGroups:适用于
Item或其他Modifier的选项集合,例如“选择配菜”或“添加配料”。 - 加项:
ModifierGroup中的各个选项,例如“薯条”“加奶酪”或“可乐”。修饰符可以调整商品价格,并且可以包含嵌套的ModifierGroup以进行进一步的自定义。 - MenuCategories:组织部门,例如“开胃菜”或“饮料”。
Menu 资源由以下格式的名称标识:projects/{project}/locations/{location}/menus/{menu}。
如需详细了解如何构建菜单数据,请参阅集成菜单数据。
订餐会话
订餐会话是订餐 AI 代理的核心,可实现客户与 AI 代理之间的实时多模态互动。每个会话都表示一次食品订购对话,并使用 FoodOrderingService.BidiProcessOrder RPC 方法进行管理。
BidiProcessOrder RPC 方法
这是一个双向流式传输 RPC:客户端应用将输入流式传输到代理,而代理同时将响应流式传输回客户端。这样一来,便可实现低延迟的实时互动。
- 客户端到代理的流:客户端发送包含音频输入(客户语音)、文本输入或事件输入(例如客户使用点按界面执行的客户端购物车更新,或通过快餐店硬件检测到的驶离事件)的
BidiProcessOrderRequest消息流。 - 智能体到客户端的流:智能体返回一个
BidiProcessOrderResponse消息流,其中包含音频输出(合成的智能体语音)、文本输出、识别的语音转写内容、客户订单状态更新或其他信号(例如检测到的中断)。
会话生命周期
食品订购 AI 代理中的每个会话都必须以客户端提供的配置开头,该配置使用包含 Config 的 BidiProcessOrderRequest 消息指定。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,用于标识一次客户互动或对话。