Playbook 使用明确定义的参数接受和发出上下文信息。参数用于存储对话信息,例如用户选择和操作结果。您可以在 playbook 和流之间传递这些参数的值。
参数声明
参数具有名称、说明和以下类型之一:
- 字符串
- 数字
- 布尔值
- 工具专用参数类型
您还可以指定参数是否为列表。
输入(读取)参数
对于每个 playbook,您可以定义输入参数(也称为读取参数),以便 playbook 使用从 flow 和其他 playbook 传递的值。例如,playbook 可能会接收用户的首选名称作为参数,并使用该名称亲自感谢用户;或者,它可能会接收订单标识符作为参数,并使用该标识符通过工具检索订单详情。
输入参数是按 playbook 定义的,默认情况下,playbook 无法访问其他 Dialogflow CX 控制台参数类型。当一个流程转换到某个 playbook 时,如果目标 playbook 具有同名的输入参数,则页面和会话参数会传播到该 playbook。如需在转换期间将信息从流传达给 playbook,请定义与转换前存在的会话或页面参数同名的 playbook 输入参数。
创建示例,以控制输入参数值应如何影响操作。 例如,如果输入参数应该影响代理如何称呼用户,请创建为该参数定义值的示例,然后在示例中的话语操作中使用相同的值。如需了解详情,请参阅传递参数。
输出(写入、返回)参数
对于每个 playbook,您可以定义输出参数(也称为写入参数和返回参数),以便 playbook 发出供其他 flow 或 playbook 使用的信息。例如,playbook 可能会从用户那里收集订单号,并通过输出参数发出该订单号;或者 playbook 可能会使用工具预订航班,并通过输出参数发出确认号。
创建示例,以控制 playbook 如何确定每个输出参数的值。例如,如果表示确认编号的输出参数的值来自工具使用输出,请创建工具输出与 playbook 输出参数值匹配的示例。
传递参数
与 flow 不同,playbook 不支持使用特定语法注入参数值。而是依赖于指令和少样本提示词示例来确定应如何使用和决定参数值。
常规流程 playbook 到流
如需将参数从常规流程 playbook 传递到流,请执行以下操作:
- 为常规流程 playbook 定义写入参数,这些参数在常规流程 playbook 完成后会成为会话参数。
- 在流程中使用会话参数。
- 在说明和示例中包含参数用法。
流转到常规流程 playbook
如需将参数从流传递到常规流程 playbook,请执行以下操作:
- 写入流中的会话参数。
- 为常规流程 playbook 定义同名的读取参数。
- 在说明和示例中包含参数用法。
任务 playbook 到 flow
如需将参数从任务 playbook 传递到 flow,请执行以下操作:
- 在流程设置中,定义同名的输入参数。
- 在说明和示例中包含参数用法。
流程到任务 playbook
如需将参数从流传递到父任务 playbook,请执行以下操作:
- 在流设置中,定义返回参数。
- 在说明和示例中包含参数用法。
如需将参数从流程传递到子任务 playbook,请执行以下操作:
- 在任务 playbook 中定义与流中的会话参数同名的任务输入参数。
- 在说明和示例中包含参数用法。
常规流程 playbook 到任务 playbook
如需将参数从常规流程 playbook 传递到任务 playbook,请执行以下操作:
- 使用相同的名称为任务 playbook 定义输入参数。
- 在说明和示例中包含参数用法。
涉及工具的示例
假设某个代理专为活动门票销售而设计,并具有以下任务 playbook:
- 一个名为
Ticket ordering的 playbook,它使用名为Ticket sales API的工具下单。- 此 playbook 接受名为
event_id的number类型输入参数。 Ticket sales API工具需要一个包含event_id的请求。
- 此 playbook 接受名为
- 名为
Event selection的 playbook,可帮助用户选择活动,然后将用户转到Ticket ordering并使用参数event_id购买门票。
在此示例中,为确保 event_id 能够可靠地从 Event selection 传递到 Ticket ordering,以及从 Ticket ordering 传递到 Ticket sales API,您需要提供多个示例。
Ticket ordering playbook 应包含多个示例,这些示例应:
- 使用在每个示例中都不同的实际值指定输入参数
event_id。 - 添加一个工具使用操作,其请求正文包含与输入参数中指定的相同的真实
event_id值。
Event selection playbook 应包含多个示例,这些示例应:
- 添加一个用户话语,其中选择了一个具有真实
event_id的事件,每个示例中的 ID 各不相同。 - 添加一个
Ticket ordering的 playbook 调用,将event_id参数设置为与所选内容确定的相同实际event_id。
除了添加示例之外,还可以在指令、目标或工具详情中添加具体指令,说明应如何使用参数。
例如,Ticket ordering playbook 可以包含以下指令:
- Use parameter event_id to send a buy_tickets request with ${TOOL: Ticket sales API}
有了上述示例和说明,Event selection playbook 就能根据用户的选择正确决定 event_id,并将其作为名为 event_id 的输入参数传递给 Ticket ordering playbook。然后,Ticket ordering 在向 Ticket sales API 发出的请求的正文中传递相同的 event_id。Playbook 依赖于具有不同参数值的示例来帮助其推断参数的使用方式。