使用评估框架评估订购代理

本指南介绍了如何使用订餐 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. 创建评估上下文

  1. 在订餐 AI 智能体控制台中,选择您的项目和品牌。
  2. 在导航菜单中,点击评估 。
  3. 点击上下文 标签页。
  4. 点击新建上下文 。
  5. 输入显示名称,然后选择目标商店 。
  6. 可选:选择特定的菜单 或时段 替换。
  7. 点击创建 。

2. 创建评估匹配器

  1. 在评估 页面中,点击匹配器 标签页。
  2. 点击新建匹配器 。
  3. 输入显示名称,然后选择匹配器类型:
    • 订单结果:通过选择商品、修饰符和数量来构建预期订单。
    • 智能体话语:输入所需的子字符串或正则表达式模式。
    • LLM 判断:输入 LLM 判断器的自然语言条件。
  4. 点击创建 。

3. 创建数据集并导入测试用例

在控制台中,测试用例可以单独存在,也可以整理到数据集中。您可以直接在控制台中创建数据集,但测试用例必须从 YAML 文件导入或从生产会话转换。

创建数据集

  1. 在订餐 AI 智能体控制台中,依次前往评估 > 数据集和用例 。
  2. 在数据集 窗格中,点击新建数据集 。
  3. 输入显示名称(例如 Combo Meals Regression)和可选说明。
  4. 点击创建 。

您还可以点击数据集 窗格中的导入 ,从 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: ''

导入评估用例

  1. 在用例 窗格中,点击导入 。
  2. 选择定义评估用例的 YAML 文件。
  3. 确认上传。导入的用例会显示在用例 列表中。

您还可以点击数据集 或用例 窗格中的导出 ,将现有定义下载为 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."

将用例整理到数据集中

评估用例可以独立存在,无需属于数据集。如需将用例整理到数据集中,请执行以下操作:

  1. 在用例 窗格中,使用复选框选择一个或多个测试用例。
  2. 将所选的用例拖到数据集 窗格中的目标数据集。
  3. 点击数据集 窗格中的数据集以展开它,并查看其分配的用例。

4. 从订单记录转换客户会话

如需重现客户报告的问题或直接从真实生产流量构建测试套件,请执行以下操作:

  1. 在导航菜单中,点击订单记录。
  2. 点击要测试的订购会话对应的行。
  3. 在订单详情 面板中,点击转换为评估用例 。
  4. 选择或创建评估上下文和匹配器。
  5. 点击转换 。系统会自动将客户的轮次话语转换为评估用例。

5. 运行评估并检查结果

您可以运行整个数据集,也可以执行单独选择的用例:

  • 运行数据集:在数据集窗格中,点击目标数据集旁边的运行数据集。
  • 运行单个用例:在用例窗格中,使用复选框选择一个或多个用例,然后在选择操作栏中点击运行。

如需监控运行情况并检查详细结果,请执行以下操作:

  1. 点击历史记录 标签页,跟踪运行进度、总体通过率和执行时长。
  2. 点击历史记录表中的任何运行,即可查看详细的用例结果:
    • 摘要:查看总体通过或未通过百分比以及通过的总用例数。
    • 轮次脚本:检查模拟客户与智能体之间的轮次对话。
    • 匹配器详情:查看哪些匹配器通过或未通过,包括 LLM 判断器对未通过的定性条件的说明。

后续步骤