Playbook 示例

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

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

多语言代理

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

输入摘要和输出摘要示例

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

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

示例状态

在对话的特定时间点,剧本将处于以下某种状态:

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

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

选择策略

选择策略设置用于控制是否将示例包含在发送给 LLM 的 Playbook 提示中。您可以使用以下选项:

  • 动态选择:系统会根据示例与当前对话上下文的相符程度,有条件地添加示例。如果提示即将达到令牌数上限,系统可能会省略示例。

  • 始终选择:无论对话上下文如何,系统都将始终包含该示例。如果提示即将达到令牌数上限,则可以省略示例。

  • 永不选择:提示中永远不会包含该示例。 该示例对 Playbook 的性能没有影响。此设置非常适合暂时排除某个示例以进行测试。

添加操作

在 Playbook 中提供的示例由一系列操作组成。这些操作的组合可能会有所不同,但主要描述的是用户与 Playbook 之间的互动,以及为满足用户的查询或要求而执行的操作。

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

  • 如需手动添加操作,请点击右侧窗格底部的 + 按钮,或者将光标悬停在现有操作上方时点击添加操作按钮。您可以在创建新示例时(点击 + 示例选项)或修改现有示例时使用这些选项。
  • 如需根据现有 Playbook 说明自动生成操作,请在右侧窗格的底部 Enter user input 字段中输入用户输入。您可以在创建或修改示例时使用此选项。或者,您也可以在右侧的预览 Playbook 窗格中,在运行时测试 Playbook 时使用此选项。如需将操作保存到 Preview playbook 窗格的示例中,请从 Preview playbook 窗格左侧的调用列表中选择 playbook 调用,然后点击 Save example

请务必检查自动生成的操作是否正确,并根据需要进行修改。对于没有或只有很少示例的 Playbook,这一点尤为重要。

该 Playbook 支持以下类型的操作:

Playbook 响应

对用户询问的 Playbook 响应。

用户输入

用户查询。

工具使用

这是用于获取满足用户查询所需的其他信息的工具调用。此操作应指定以下详细信息:

  • 工具:应调用的工具的名称。

  • 操作:应调用的 OpenAPI 工具的操作名称。对于数据存储工具函数工具,操作名称与工具名称相同。

  • 工具输入:要包含在工具调用中的输入。 这些信息通常来自与用户的先前对话转换。

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

    Open API 工具中针对 createPet 操作的 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 工具,它还可以是字符串错误(例如“404 未找到”)。

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

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

    Data Store 工具输出示例:

    {
      "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 .."
        }
      ]
    }
    

为确保该手册具有故障安全保障,还应添加有关手册在工具调用失败时应如何响应的示例。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 完成其目标后生成的输出参数

Playbook 转换

Playbook 转换操作是一种终端操作(不应跟随其他操作),表示常规 Playbook 已决定退出并转换为目标常规 Playbook。请注意,由于此操作表示 Playbook 会退出,因此请将 Playbook 的输出参数添加到示例的 Playbook 输出中。

流转换

流程转换操作是一种终端操作(不应跟随其他操作),表示常规 Playbook 已决定退出并转换到目标流程。请注意,由于此操作表示 Playbook 会退出,因此请将 Playbook 的输出参数添加到示例的 Playbook 输出中。