Playbook 示例

每个 Playbook 都应有一个或多个示例。以下示例是最终用户与 Playbook 之间的对话示例,包括代理执行的对话和操作。这些实际上是 LLM 的少样本提示示例

控制台提供了一个界面,供您输入操作。

多语言代理

如果您希望让聊天机器人处理多种语言,则示例应使用每种语言。

输入摘要和输出摘要示例

除了输入和输出参数之外,Playbook 还支持接收输入摘要并发出输出摘要,以便与其他 Playbook 交换信息。摘要有助于传递 信息,而参数更有助于传递 结构化且定义明确的字段。参数是流程和剧本之间交换数据的唯一方式。

向示例添加相关的输入摘要,以便让该 Playbook 在运行时根据输入摘要调整其操作。添加输出摘要,其中包含有关示例对话的相关、准确详细信息,以向剧本说明哪些详细信息需要总结。

示例状态

在对话中的指定时刻,playbook 将处于以下状态之一:

  • OK:此 playbook 已成功实现其目标,控制权现在将转移到父级 playbook。
  • CANCELLED:用户决定不继续执行分配给该 Playbook 的目标。该控件现在将转移到父级 playbook。如果父级 Playbook 是 CX 流程,系统会在流程运行之前检测用户输入的意图。
  • FAILED:playbook 无法继续实现目标,因为出现错误(例如,工具 返回 500 错误)。会话将结束,状态为“失败。一个 EndInteraction 消息将会添加到响应中。
  • ESCALATED:策略方案判定无法实现目标,需要将情况上报给人工。会话将以上报状态结束。 EndInteraction 消息将会添加到响应中。
  • PENDING:对话仍在策略方案中继续。

顶级示例及其 Playbook 调用应使用与其引用的 Playbook 对应的状态进行标记。

选择策略

选择策略用于控制每个样本 。

  • DEFAULT:如果提示接近词元限制,则可以省略此示例。
  • STATIC:始终包含示例。
  • NEVER:提示中从不包含该示例。该示例的 不会对 playbook 的性能产生任何影响。

添加操作

在 Playbook 中提供的示例由一系列操作组成。这些操作的组合可能有所不同,但它们主要描绘的是用户与手册之间的互动,以及为满足用户的查询或要求而在这段时间内采取的操作。

您可以通过以下两种方式向示例添加操作:

  • 要手动添加操作,请点击右侧窗格底部的 + 按钮,或将指针悬停在现有操作上时点击添加操作按钮。在点击 + 示例选项创建新示例时,或者修改现有示例时,您可以使用这些选项。

  • 如需根据现有的 playbook 说明自动生成操作,请在右侧窗格底部的输入用户输入字段中输入用户输入。您可以在创建或修改示例时使用此选项。或者,您也可以在右侧的预览 Playbook 窗格中在运行时测试 Playbook 时使用此选项。如需将操作保存到预览 Playbook 窗格中的示例,请从预览 Playbook 窗格左侧的调用列表中选择 Playbook 调用,然后点击保存示例

请务必检查自动生成的操作是否正确,并在必要时进行修改。对于示例很少或没有示例的策略方案而言,这一点尤为重要。

此 playbook 支持以下类型的操作:

playbook 响应

对用户查询的 playbook 响应。

用户输入

用户查询。

工具使用

这是一个 tool 调用,用于获取完成用户查询所需的其他信息。此操作应指定以下详细信息:

  • Tool(工具):应调用的工具的名称。
  • 操作:应调用的 OpenAPI 工具的操作名称。对于数据存储工具函数工具,操作名称与工具名称相同。
  • 工具输入:要包含在工具调用中的输入。这些信息通常来自上一次与用户进行的对话。

    对于 Open API 工具POSTPUTPATCH 方法类型需要 requestBody JSON。

    createPet 操作的 Open API 工具 requestBody 输入示例:

    {
      "id": 1,
      "name": "Luna"
    }
    

    对于数据存储工具,示例 requestBody 中,查询是必填字段,其他字段为可选字段。

    {
      "query": "Where is my nearest store?",
      "filter": "country: ANY(\"United States\")",
      "userMetadata": {
        "userCity": "San Fransisco",
      },
      "fallback": "We don't have any stores in your area."
    }
    
  • 工具输出:工具调用的响应。这是该工具针对给定输入的有效 JSON 响应。对于 Open API tools,此错误也可能是字符串错误(例如“404 Not found”)。

    listPets 操作的 Open API 工具输出示例:

    {
      "pets": [
        {
          "id": 1,
          "name": "Luna"
        },
        {
          "id": 2,
          "name": "Charlie"
        }]
    }
    

    数据存储工具输出示例:

    {
      "answer": "Here's the address to your nearest store ...",
      "snippets": [
        {
          "title": "San Fransisco Downtown",
          "uri": "https://www.example.com/San_Fransisco_Downtown",
          "text": "Address for San Fransisco Downtown .."
        }
      ]
    }
    

为确保 playbook 不会出现故障,还应添加一些示例,说明工具调用失败时 playbook 应如何响应。Open API 工具调用失败可能会在工具输出中显示为错误字符串(“404 未找到”)。对于数据存储工具fallback 输入可用于指定在没有汇总答案时如何响应。

如果您希望数据存储工具在 playbook 响应中包含 URI,请添加包含您希望 playbook 响应的 URI 的示例。如果此 URI 来自数据存储工具,则数据存储工具输出应包含与 Playbook 响应中的 URI 匹配的 URI。请注意,在这种情况下无法使用 fallback,因为它会停用 LLM 手册对数据存储工具回答进行重述的功能,以便在手册响应中添加 URI。

包含工具使用操作的示例可能非常详细,并会导致输入令牌限制消耗增加。为确保高效利用令牌,请确保工具输出简洁明了并包含与策略方案目标相关的信息。对于数据存储工具,请考虑从样本中移除代码段,因为它们会导致输入令牌消耗量较高。

Playbook 调用

当此 playbook 应调用另一个 playbook 来处理用户查询时,会使用此操作。此操作应指定以下详细信息:

  • Playbook:要调用的 Playbook 的名称。
  • Playbook 调用输入摘要:对话中对所调用 Playbook 有用的相关部分的摘要。
  • 输入参数:要传递给 Playbook 的输入参数
  • Playbook 调用输出摘要:Playbook 目标完成时应生成的内容摘要。
  • 输出参数:在完成其目标后由 Playbook 生成的输出参数