每个 playbook 都应有一个或多个示例。 这些示例是最终用户与 playbook 之间的对话样本, 包括智能体执行的对话和操作。 这些实际上是 LLM 的少样本提示示例。
控制台提供了一个界面,供您输入操作。
多语言代理
如果您希望代理处理多种语言,则示例应使用每种语言。
输入摘要和输出摘要示例
除了输入和输出参数之外,Playbook 还支持接收输入摘要和发出输出摘要,以便与其他 Playbook 交换信息。摘要有助于在 playbook 之间传递抽象上下文信息,而参数则更有助于在 playbook 之间传递结构化、定义明确的字段。参数是在流和 playbook 之间交换数据的唯一方法。
向示例添加相关的输入摘要,以便 playbook 在运行时根据输入摘要调整其操作。 添加输出摘要,包括有关示例对话的相关、准确的详细信息,以便向 playbook 展示哪些详细信息对于摘要很重要。
示例状态
在对话中的某个时间点,Playbook 将处于以下状态之一:
OK:Playbook 已成功实现其目标,控制权现在将转移到父级 Playbook。CANCELLED:用户决定不继续执行分配给 playbook 的目标。 现在,控制权将转移到父级 playbook。如果父级 playbook 是 CX 流程,则系统会在流程运行之前检测用户输入的意图。FAILED:由于某些错误(例如,工具返回 500 错误),Playbook 无法继续执行目标。会话将以失败状态结束。EndInteraction 消息将添加到响应中。ESCALATED:Playbook 确定无法实现目标,需要将情况上报给人工。会话将以“已上报”状态结束。 EndInteraction 消息将添加到响应中。PENDING:对话仍在 playbook 中继续。
顶级示例及其 playbook 调用应使用与其引用的 playbook 相对应的状态进行表示。
选择策略
选择策略设置用于控制是否将示例包含在发送到 LLM 的 playbook 提示中。您可以使用以下选项:
动态选择:根据示例与当前对话上下文的相关性,有条件地包含示例。如果提示接近词元数量上限,则可以省略示例。
始终选择:无论对话上下文如何,始终包含该示例。如果提示接近词元数量上限,则可以省略示例。
从不选择:示例绝不会包含在提示中。 该示例不会对 playbook 的性能产生任何影响。 此设置对于临时排除某个示例以进行测试非常有用。
添加操作
Playbook 中提供的示例由一系列操作组成。这些操作的组合方式可能有所不同,但它们主要描述了用户与 playbook 之间的互动,以及在此期间为满足用户的查询或要求而采取的操作。
您可以通过以下两种方式向示例添加操作:
- 如需手动添加操作,请点击右侧窗格底部的 + 按钮,或在将指针悬停在现有操作上时点击添加操作按钮。您可以在创建新示例(点击 + 示例选项)或修改现有示例时使用这些选项。
- 如需根据现有 playbook 说明自动生成操作,请在右侧窗格底部的输入用户输入字段中输入用户输入。您可以在创建或修改示例时使用此选项。 或者,您也可以在右侧的预览 playbook 窗格中,在运行时测试 playbook 时使用此选项。如需从预览 playbook 窗格中将操作保存到示例,请从预览 playbook 窗格左侧的调用列表中选择 playbook 调用,然后点击保存示例。
请务必检查自动生成的动作是否正确,并根据需要进行修改。 对于示例很少或没有示例的 playbook,这一点尤为重要。
Playbook 支持以下类型的操作:
Playbook 响应
针对用户查询返回的 playbook 回答。
用户输入
用户查询。
工具使用
这是工具调用,用于获取满足用户查询所需的其他信息。此操作应指定以下详细信息:
工具:应调用的工具的名称。
Action:应调用的 OpenAPI 工具的操作名称。对于数据存储区工具和函数工具,操作名称与工具名称相同。
工具输入:要包含在工具调用中的输入。这些信息通常来自之前与用户的对话。
对于 Open API 工具,
POST、PUT和PATCH方法类型需要requestBodyJSON。用于 createPet 操作的示例 Open API 工具
requestBody输入:{ "id": 1, "name": "Luna" }对于数据存储区工具,示例
requestBody,其中查询是必需的,其他字段是可选的。{ "query": "Where is my nearest store?", "filter": "country: ANY(\"United States\")", "userMetadata": { "userCity": "San Francisco", }, "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 Francisco Downtown", "uri": "https://www.example.com/San_Francisco_Downtown", "text": "Address for San Francisco Downtown .." } ] }
为确保 playbook 具有故障安全机制,
还应包含工具调用失败时
playbook 应如何响应的示例。
Open API 工具调用失败可以表示为工具输出中的错误字符串(“404 not found”)。对于数据存储区工具,fallback 输入可用于指定在没有摘要回答时如何响应。
如果您希望数据存储区工具在 playbook 响应中包含 URI,请添加包含您希望 playbook 响应的 URI 的示例。如果此 URI 来自数据存储区工具,则数据存储区工具输出应包含与 playbook 响应中的 URI 匹配的 URI。请注意,在这种情况下不能使用 fallback,因为它会停用 LLM playbook 的功能,使其无法改写数据存储区工具回答,从而无法在 playbook 回答中包含 URI。
包含工具使用操作的示例可能会非常冗长,并导致输入 token 限制消耗增加。为确保高效使用 token,请确保工具输出简洁明了,并包含与 playbook 目标相关的信息。对于数据存储区工具,请考虑从示例中移除代码段,因为它们可能会导致输入 token 消耗量过高。
Playbook 调用
当 playbook 应调用另一个任务 playbook 来满足用户查询时,会使用此操作。此操作应指定以下详细信息:
- Playbook:要调用的 playbook 的名称。
- Playbook 调用输入摘要:前面对话中与所调用 Playbook 相关部分的摘要。
- 输入参数:要传递给 playbook 的输入参数。
- Playbook 调用输出摘要:Playbook 在完成目标后应生成的内容的摘要。
- 输出参数:playbook 在完成目标后生成的输出参数。
Playbook 过渡
playbook 转换操作是一种终止操作(不应后跟其他操作),表示常规流程 playbook 已决定退出并转换到目标常规流程 playbook。请注意,由于此操作表示 playbook 退出,因此请将 playbook 的输出参数添加到示例的 playbook 输出中。
Flow 调用
当任务 playbook 应调用 flow 时,会使用此操作。 此操作应指定以下详细信息:
- Flow:要调用的流的名称。
- 流输入参数:要传递给流的输入参数。
- 流返回参数:从流返回的输出参数。
流程转换
流程转换操作是一种终止操作(不应后跟其他操作),表示常规流程 playbook 已决定退出并转换到目标流程。请注意,由于此操作表示 playbook 退出,因此请将 playbook 的输出参数添加到示例的 playbook 输出中。