每个 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 的性能没有影响。此设置非常适合临时排除某个示例以进行测试。
字词匹配
您可以选择使用动态选择策略为示例提供字词匹配。这样,您就可以更好地控制示例是否包含在问题中。建议为包含 100 多个示例的 Playbook 使用此方法。
您可以提供多个匹配表达式,以便匹配简单字词或正则表达式,并且每个匹配表达式可以是以下类型之一:
- user:系统会与最终用户的消息进行匹配检查。
- agent:系统会根据客服人员消息检查是否有匹配项。
- any:系统会针对最终用户和客服人员的消息以及操作进行匹配检查。
在检查是否匹配时,系统最多会将表达式与最近 5 次对话转换和第一条最终用户消息进行匹配。
如果系统找到与该示例匹配的字词,则该示例的优先级高于没有匹配字词的其他动态选择的示例。
字词匹配的格式为逗号分隔列表,其中每个表达式都以表达式类型和英文冒号开头。例如:
user:red,agent:blue,any:placeOrder
如果存在以下任一情况,则这两个值会匹配:
- 最终用户消息包含
red
。 - 客服人员消息包含
blue
。 - 任何消息包含或操作与
placeOrder
匹配。
添加操作
在 Playbook 中提供的示例由一系列操作组成。这些操作的组合可能有所不同,但主要描述的是用户与 Playbook 之间的互动,以及为满足用户的查询或要求而执行的操作。
您可以通过以下两种方式向示例添加操作:
如需手动添加操作,请点击右侧窗格底部的 + 按钮,或者将光标悬停在现有操作上方,然后点击添加操作按钮。您可以在创建新示例时点击 + 示例选项使用这些选项,也可以在修改现有示例时使用这些选项。
如需根据现有 Playbook 说明自动生成操作,请在右侧窗格底部的输入用户输入字段中输入用户输入。您可以在创建或修改示例时使用此选项。或者,您也可以在右侧的预览 Playbook 窗格中在运行时测试 Playbook 时使用此选项。如需将操作保存到预览 Playbook 窗格中的示例,请从预览 Playbook 窗格左侧的调用列表中选择 Playbook 调用,然后点击保存示例。
请务必检查自动生成的操作是否正确,并根据需要进行修改。对于没有或只有很少示例的 Playbook,这一点尤为重要。
该 Playbook 支持以下类型的操作:
Playbook 响应
对用户询问的 Playbook 响应。
用户输入
用户查询。
工具使用
这是一个工具调用,用于获取满足用户查询所需的其他信息。此操作应指定以下详细信息:
- 工具:应调用的工具的名称。
- 操作:应调用的 OpenAPI 工具的操作名称。对于数据存储工具和函数工具,操作名称与工具名称相同。
工具输入:要包含在工具调用中的输入。这些信息通常来自与用户的先前对话转换。
对于 Open API 工具,
POST
、PUT
和PATCH
方法类型需要使用requestBody
JSON。Open API 工具
requestBody
中针对 createPet 操作的输入示例:{ "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" }] }
数据存储工具输出示例:
{ "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 生成的输出参数。