跳到导航

自由格式流程

用自然语言编写的任务专属指令

概述

自由格式流程使用简明自然的语言描述一项任务。智能体会理解指令,并根据具体情况调整措辞和顺序。自由格式流程可以调用工具(包括结束通话等系统工具)、查询知识库文档,以及串联其他流程。

何时使用自由格式流程

当智能体可以根据具体情况调整措辞和顺序,而你希望用自然语言快速编写时,请使用自由格式流程。有关它与结构化流程、workflow 和系统提示词的区别,请参阅何时使用流程。

流程结构

以下是编辑器中的退款流程:

退款流程
示例

一个流程包含两个主要部分:触发条件和内容。两者都可以包含对其他资源的内联引用,在上方截图中显示为带扳手图标的标签。每个流程还有一个显示在控制台中的名称。

名称

用于在控制台中识别流程的简短标签。名称永远不会发送给 LLM,因此不会影响智能体行为。

触发条件

描述智能体何时应使用此流程,例如 当用户要求退款订单时。

仅在创建子流程时将触发条件留空。

内容

以 Markdown 编写的流程正文。内容描述智能体应执行的操作:提问、查询订单、调用工具或结束通话。它可以是一系列编号步骤,也可以是针对该情况的通用指引。每个步骤或指引可以是一句话(询问用户的订单 ID),也可以是一段简短文字,说明做什么及原因。

对有顺序的操作使用编号步骤,在单个步骤内的要求或子项目使用项目符号。

内联引用

流程可以内联引用不同类型的资源:

  • 工具(例如查询订单、扣款、结束通话、转接人工客服)
  • 知识库文档
  • 其他流程

只要某个步骤需要智能体使用工具、知识库文档或其他流程,就应使用内联引用。引用会自动将资源附加到流程中,供智能体使用。普通文字提及(例如 在这里使用计算器工具)同样有效,但前提是资源已附加到智能体。

在触发条件或内容中输入 /,然后从斜杠菜单中选择资源,即可插入引用。引用会在编辑器中显示为可点击标签。点击标签可打开对应资源并确认其配置。

通过 API 编写自由格式内容时,请使用以下语法插入引用:

[tool id="tool_abc123"]
[kb id="kb_abc123"]
[procedure id="agtprc_abc123"]
[system_tool id="end_call"]
{{customer_id}}

内联流程引用必须使用同一智能体中的流程。有关智能体范围和重复行为,请参阅限制。

触发条件中的引用可让流程根据资源输出触发,例如 _当 get_user 返回层级 ‘gold’ 时 _。内容中的引用则会指示智能体在该步骤调用或查询资源。

流程中引用的知识库文档始终使用 auto 使用模式:当智能体启用 RAG 时,智能体会检索相关段落,而不是将完整文档放入提示词。如果该文档也附加到了智能体,则会改为使用智能体为该文档设置的使用模式;因此,如需将完整文本保留在提示词中,请以 prompt 使用模式将其附加到智能体。

流程编辑器中的斜杠菜单

如果之后删除了引用的资源,或者账户失去了访问权限,标签将显示为损坏。编辑器顶部的 错误 徽章会列出这些引用:如果资源已不存在,则标记为 无效;如果资源存在但账户无权访问,则标记为 不可用。打开徽章可查看受影响的步骤,并修复或移除引用。

列出无效
引用的错误对话框

子流程

子流程的触发条件为空。智能体只能从引用它的其他流程中运行它。

使用子流程可在同一智能体内共享步骤,并减少同时可用的流程数量。为入口流程设置触发条件,在其内容中引用相关子流程,并将子流程的触发条件留空。

升级子流程可以包含将对话转交给人工客服的步骤。可从退款和取消流程中引用它,并将其触发条件留空。智能体可以作为任一流程的步骤进行升级,但在这些流程之外,该子流程仍不可用。

从文档导入

你可以基于现有标准操作流程(SOP)快速开始。在流程列表的 + 菜单中选择 从 SOP 导入,然后上传文件。

支持格式:PDF、DOCX、TXT、MD、HTML、EPUB。文件必须不超过 20 MB。

导入器会分析文档,识别最多 10 个不同流程,并为每个流程创建草稿,其中包含生成的名称、触发条件和内容。打开每个草稿进行完善。如果文档包含超过 10 个 SOP,请在上传前将其拆分为较小文件。

上传 SOP 对话框

管理自由格式流程

在控制台中打开智能体,然后选择 流程。 使用 + 创建自由格式流程。添加触发条件,并在内容编辑器中编写指令, 然后发布智能体更改。

最佳实践

智能体需要根据触发条件选择正确的流程,并遵循其中内容。随着流程数量增加,能力更强的 模型能更可靠地完成这些操作。有关选项,请参阅 模型。

要写好流程,需要同时写好两部分:在应触发时运行流程的触发条件,以及智能体能够遵循的内容。

迭代优化流程

建议从小处开始,并使用智能体测试,在进行下一项更改前检查每次更改。

1

编写简短流程

编写触发条件和简短内容。仅当测试显示智能体 需要更多指令时,再扩展内容。

2

添加触发条件测试

为应启动流程的请求,以及不应启动流程的类似请求 创建模拟测试。大多数失败都来自触发条件,因此此类测试应多于完整 模拟测试。

3

添加完整模拟

创建一个运行完整流程并检查结果的模拟测试。

4

运行测试并修复失败

测试失败时,修复触发条件或内容,然后重新运行所有测试。

若要快速迭代触发条件,可创建一个模拟测试,让其聊天 历史以用户的 请求结束,并将 最大对话轮数 设为 1。智能体只回复一次,这足以 判断请求是否启动了正确流程,并且每次运行都很短。将成功 标准写为 智能体启动了退款流程。如果没有聊天历史,带有首条 消息的智能体会把唯一一轮用在问候上,测试就不会检查任何内容。

当测试或实际对话失败时,请寻找背后的错误类型。如果智能体说错了话,添加 不要这样说 只能修复一次对话。请搜索过去的对话中是否有类似失败,并编写一条能涵盖所有情况的指令。原因也可能出在知识库或智能体配置中。Architect 可以完成此搜索:打开失败的对话,选择 Architect,并要求它查找类似失败并提出修复方案。Architect 还可以将对话转为测试。

编写触发条件

重叠或模糊的触发条件会导致运行错误流程。相比 当用户询问账户问题时,应优先使用 _当用户要求 取消订阅时 _。

描述用户的请求,而不是智能体应做什么。以智能体 操作为表述的触发条件可靠性较低。相比 _取消 用户的订阅 _,应优先使用 _当用户要求取消订阅时 _。

当用户换一种表达方式时,过于狭窄的触发条件可能会遗漏真实请求。请包含 用户可能说出的变体。相比 当用户请求退款时,当用户要求退款、退货或取回订单款项时 的运行可靠性更高。通过搜索过去 对话了解用户如何 表达请求。

用户有时会在流程进行到一半时改变请求,仅靠触发条件可能无法 启动正确流程。对于过去对话中经常出现的切换,请在第一个流程内容中添加 对另一个流程的内联引用。例如,编写 _如果用户想要 退款而非换货,则运行 _,后接退款流程的内联引用。如果大多数流程都需要交接, 应让触发条件更有区分度。

编写内容

将步骤写成对智能体的指令:查询客户的上一笔订单,而不是 _你 应该查询客户的上一笔订单 _。直接指令比 建议更容易遵循。

推理可以泛化到流程未列举的边缘情况。一句简短的 因为需要 订单 ID 才能退款 有助于智能体处理步骤未预料到的情况。 如果一句解释即可达到同样效果,请避免全大写的“必须”和僵硬脚本。

描述你想要的行为。如果找不到订单,请让用户确认订单 ID 比 不要编造订单详情 效果更好。对于代价高昂的错误,也请添加 护栏。

当智能体必须按固定顺序执行操作时,编号步骤会有所帮助。对于需要判断的情况,几句 指引通常效果更好,尤其是搭配能力更强的模型时。

流程描述智能体在某种情况下应做什么。价格、套餐详情或营业时间等 具体信息应放在知识 库中。请从需要这些信息的 流程中引用该文档。例如,不要在流程中列出每个套餐的价格, 而应编写 引用以下文档中的价格,后接定价文档的内联引用。

组合流程

如果一种情况被拆分为多个狭窄流程,智能体需要从更多触发条件中 选择,也更容易启动错误流程。如果两个流程会因相同 请求启动,请将它们合并。超过约 3,000 个字符的内容通常涵盖了不止一种 情况。

如果多个流程中出现相同步骤(验证客户身份、查询 订单、升级至人工客服),请将其提取为子流程,并通过斜杠菜单从 每个需要它的流程中引用。将共享步骤维护在同一位置, 可确保每个使用它们的流程保持一致。

对于仅应在其他流程请求时运行的操作(如身份验证或升级), 请使用子流程。由于没有触发条件,它不会在对话开始时与入口 流程竞争。更少的触发条件选项可让路由更聚焦。

应从使用工具的流程中引用它,而不是将它附加到整个智能体。这样, 该工具就不会出现在无关对话中。在自由格式流程中,工具 仅在该流程属于最近启动的 5 个流程之一时可用,因此也要在 触发条件中提及工具的任务,例如 或当你需要查询订单时。请参阅 限制。

语气、身份、拒绝策略和护栏应放在系统 提示词中。将任务专属步骤放在 流程中。

流程是智能体配置的一部分,因此发布新智能体版本时会一同创建快照。若要回滚到较早的一组流程, 请恢复较早的智能体版本。请参阅智能体版本控制。

如果团队已有 SOP,请使用导入器将其转换为草稿,然后在此基础上完善。