订餐 AI 智能体概念

本文档简要介绍了订餐 AI 智能体 API 中的关键概念。

智能体配置

订餐 AI 智能体的行为受 多个 API 资源的配置影响,这些资源包括:BrandStoreMenu。这些资源定义了餐厅的身份、实体店位置和提供的商品,为 AI 智能体处理订单提供了必要的背景信息。

品牌

Brand 是顶级资源,表示与该餐厅品牌的一个或多个位置对应的餐厅品牌。 它包含在该餐厅的所有位置之间共享的配置。 Brand 可以包含智能体角色的许多功能的配置,例如问候行为和语音特征。其中许多功能可以被 Store 资源中配置的值 或会话级配置(请参阅会话生命周期)替换。

门店

A Store 资源表示属于 a Brand 的单个实体餐厅位置。它定义了特定于该位置的配置,例如时区、状态(例如 ACTIVEDISABLED)、营业时间和 dayparts(例如“早餐”或“午餐”等时段,在此期间提供某些菜单项)。

Menu 资源定义了餐厅提供的所有商品,包括 每个可销售商品的所有可能选择和自定义项。Menu 必须与 Store相关联。 菜单旨在灵活适应各种菜单结构,从独立商品的小列表到包含嵌套修饰符的组合套餐的复杂树形结构。

Menu 的关键组件包括:

  • 商品:可销售的顶级商品,例如单点主菜、饮品、配菜或组合套餐。
  • ModifierGroups:适用于 Item 或 另一个 Modifier 的选择集合,例如“选择配菜”或“添加配料”。
  • ModifiersModifierGroup 中的各个选项,例如“薯条”“额外奶酪”或“可乐”。修饰符可以调整商品价格,并且可以 包含嵌套的 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 资源中指定的配置。如果 BrandStore 之间的配置存在冲突,则以 Store 配置为准。
  • session:格式为 projects/PROJECT/locations/LOCATION/sessions/SESSION的唯一会话标识符。 session_id 是客户端生成的 ID,用于唯一标识一次客户互动或对话。
  • mode:会话的模式(HYBRIDTEXT)。对于 BidiProcessOrdermode 是可选的,默认值为 HYBRID(语音和文本)。对于 ProcessOrder(单向 / REST),mode 必须 显式设置为 TEXT