本指南介绍了如何使用订餐 AI 智能体中的评估框架来测试、验证 AI 订餐智能体并为其设置基准。
借助自动评估,您可以验证订餐智能体是否能准确接单、处理复杂的修饰符选择、正确应用菜单规则并验证智能体行为。
评估框架概览
评估框架可为订餐对话提供自动模拟和验证。您无需手动测试每个菜单项和对话极端情况,只需定义测试套件,让其针对智能体执行模拟客户会话,并验证生成的购物车状态和对话。
在评估运行期间,该框架会使用以下两种类型的测试用例之一来模拟客户的对话:
- 预定义的对话轮次:提供客户文本输入的脚本序列,用于确定性回归测试。使用此模式可验证确切的客户短语是否会产生预期的智能体响应,或重现生产环境中的真实客户会话和升级。
- 基于动态指令的会话模拟:提供高级自然语言订购指令(例如订购特定商品、请求替换或询问过敏原)。LLM 客户模拟器会动态扮演对话角色,测试智能体如何处理真实的对话、澄清问题、订单中途改变主意以及各种客户措辞。
评估资源模型
评估框架围绕以下四种主要资源构建:
EvaluationDataset:评估用例的命名集合,代表一个测试套件,例如核心菜单回归套件或早餐套餐测试。EvaluationCase:一个单独的测试场景,用于根据评估上下文和一组匹配器评估订购互动(使用预定义的轮次或动态指令)。EvaluationContext:测试用例或数据集的执行环境,包括店面位置、有效菜单、时段和模拟会话开始时间。EvaluationMatcher:在订购会话结束时评估的断言规则,用于检查特定的购物车状态、话语文本或语义条件。
评估匹配器
一个 EvaluationMatcher 定义了智能体必须满足的条件,测试用例才能通过。一个评估用例可以引用多个匹配器,每个匹配器都会生成布尔值“通过”或“未通过”结果:
- 订单结果匹配器:将客户的最终购物车与预期的
Order进行比较。匹配器会验证所有商品、修饰符组、嵌套修饰符和商品数量在标准化后是否匹配。 - 智能体话语字符串匹配器:检查智能体的响应是否包含特定子字符串或与正则表达式匹配。您可以反转匹配条件,以验证智能体是否不会说出禁止的短语。
- LLM 判断匹配器: 使用 LLM 判断器评估无法通过精确字符串匹配验证的自然语言条件。例如,您可以断言:“智能体在完成订单之前确认客户是否需要奶酪”或“智能体礼貌地告知客户早餐期间不提供奶昔”。
评估上下文
一个 EvaluationContext 用于配置评估会话运行的餐厅环境:
- 商店:目标商店的资源名称 (
projects/{project}/locations/{location}/brands/{brand}/stores/{store})。商店决定了有效菜单、定价、时区和智能体自定义替换。 - 菜单:一个可选的菜单资源名称,用于在将候选菜单与生产环境中的商店关联之前对其进行测试。
- 时段 ID:一个可选的时段 ID(例如
breakfast或dinner),用于验证特定用餐时段的菜单项可用性和定价规则。 - 测试会话开始时间:一个可选的 ISO 时间戳,用于模拟在一天中的特定时间或一周中的特定日期下达的订单。
在订餐 AI 智能体控制台中进行评估
订餐 AI 智能体控制台提供了一个交互式界面,用于管理评估数据集、运行测试和分析结果。
1. 创建评估上下文
- 在订餐 AI 智能体控制台中,选择您的项目和品牌。
- 在导航菜单中,点击评估 。
- 点击上下文 标签页。
- 点击新建上下文 。
- 输入显示名称,然后选择目标商店 。
- 可选:选择特定的菜单 或时段 替换。
- 点击创建 。
2. 创建评估匹配器
- 在评估 页面中,点击匹配器 标签页。
- 点击新建匹配器 。
- 输入显示名称,然后选择匹配器类型:
- 订单结果:通过选择商品、修饰符和数量来构建预期订单。
- 智能体话语:输入所需的子字符串或正则表达式模式。
- LLM 判断:输入 LLM 判断器的自然语言条件。
- 点击创建 。
3. 创建数据集并导入测试用例
在控制台中,测试用例可以单独存在,也可以整理到数据集中。您可以直接在控制台中创建数据集,但测试用例必须从 YAML 文件导入或从生产会话转换。
创建数据集
- 在订餐 AI 智能体控制台中,依次前往评估 > 数据集和用例 。
- 在数据集 窗格中,点击新建数据集 。
- 输入显示名称(例如
Combo Meals Regression)和可选说明。 - 点击创建 。
您还可以点击数据集 窗格中的导入 ,从 YAML 文件导入数据集。
以下示例 YAML 文件定义了一个包含内嵌评估用例的评估数据集:
- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationDatasets/DATASET_ID
displayName: Core Combo Regression
description: Core combo ordering and modifier selection regression suite
evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
evaluationCases:
- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_1
displayName: double_cheeseburger_combo
description: Tests combo meal ordering with side and drink modifier selections
evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
evaluationMatchers:
- projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/ORDER_MATCHER_ID
staticTextTurnCase:
textTurns:
- userTextInput: "I'd like a double cheeseburger combo."
exampleAgentResponse: "What drink and side would you like with your combo?"
- userTextInput: "Onion rings and a large diet cola, please."
exampleAgentResponse: "Got it, a double cheeseburger combo with onion rings and a large diet cola. Anything else?"
- userTextInput: "No, that's everything."
exampleAgentResponse: ''
导入评估用例
- 在用例 窗格中,点击导入 。
- 选择定义评估用例的 YAML 文件。
- 确认上传。导入的用例会显示在用例 列表中。
您还可以点击数据集 或用例 窗格中的导出 ,将现有定义下载为 YAML 文件。
以下示例 YAML 文件定义了包含预定义的对话轮次、评估上下文和匹配器的评估用例:
- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_1
displayName: Double Cheeseburger Combo
description: Tests combo meal ordering with side and drink modifier selections
evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
evaluationMatchers:
- projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/ORDER_MATCHER_ID
- projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/UTTERANCE_MATCHER_ID
staticTextTurnCase:
textTurns:
- userTextInput: "I'd like a double cheeseburger combo."
exampleAgentResponse: "What drink and side would you like with your combo?"
- userTextInput: "Onion rings and a large diet cola, please."
exampleAgentResponse: "Got it, a double cheeseburger combo with onion rings and a large diet cola. Anything else?"
- userTextInput: "No, that's everything."
- name: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationCases/CASE_ID_2
displayName: Breakfast Allergen Inquiry
description: Tests agent handling of customer allergy questions during breakfast
evaluationContext: projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationContexts/CONTEXT_ID
evaluationMatchers:
- projects/PROJECT_ID/locations/LOCATION/brands/BRAND_ID/evaluationMatchers/LLM_JUDGEMENT_MATCHER_ID
staticTextTurnCase:
textTurns:
- userTextInput: "Are your pancakes prepared with peanut oil?"
- userTextInput: "Okay, I'll take the oatmeal instead."
将用例整理到数据集中
评估用例可以独立存在,无需属于数据集。如需将用例整理到数据集中,请执行以下操作:
- 在用例 窗格中,使用复选框选择一个或多个测试用例。
- 将所选的用例拖到数据集 窗格中的目标数据集。
- 点击数据集 窗格中的数据集以展开它,并查看其分配的用例。
4. 从订单记录转换客户会话
如需重现客户报告的问题或直接从真实生产流量构建测试套件,请执行以下操作:
- 在导航菜单中,点击订单记录。
- 点击要测试的订购会话对应的行。
- 在订单详情 面板中,点击转换为评估用例 。
- 选择或创建评估上下文和匹配器。
- 点击转换 。系统会自动将客户的轮次话语转换为评估用例。
5. 运行评估并检查结果
您可以运行整个数据集,也可以执行单独选择的用例:
- 运行数据集:在数据集窗格中,点击目标数据集旁边的运行数据集。
- 运行单个用例:在用例窗格中,使用复选框选择一个或多个用例,然后在选择操作栏中点击运行。
如需监控运行情况并检查详细结果,请执行以下操作:
- 点击历史记录 标签页,跟踪运行进度、总体通过率和执行时长。
- 点击历史记录表中的任何运行,即可查看详细的用例结果:
- 摘要:查看总体通过或未通过百分比以及通过的总用例数。
- 轮次脚本:检查模拟客户与智能体之间的轮次对话。
- 匹配器详情:查看哪些匹配器通过或未通过,包括 LLM 判断器对未通过的定性条件的说明。
后续步骤
- 了解如何配置店面位置和浏览菜单。
- 使用智能体预览以交互方式测试订购互动。