自由格式流程
自由格式流程
用自然语言编写的任务专属说明
概述
自由格式程序用自然语言描述一项任务。智能体会理解指令,并根据具体情况调整措辞和顺序。自由格式程序可以调用工具(包括结束通话等系统工具)、查询知识库文档,以及串联其他程序。
何时使用自由格式程序
当智能体可以根据情况调整措辞和顺序,并且你希望快速用自然语言编写时,请使用自由格式程序。有关它与结构化程序、工作流和系统提示词的对比,请参阅何时使用程序。
程序结构
以下是编辑器中的退款程序:

一个程序包含两个主要部分:触发条件和内容。两者都可以包含对其他资源的内联引用,上方截图中显示为带扳手图标的标签。每个程序还会在控制台中显示名称。
名称
用于在控制台中识别程序的简短标签。名称绝不会发送给 LLM,因此不会影响智能体行为。
触发条件
描述智能体何时应使用此程序,例如 当用户要求退款订单时。
仅在创建子程序时将触发条件留空。
内容
以 markdown 编写的程序正文。内容描述智能体应执行的操作:提问、查询订单、调用工具或结束通话。它可以是一组需要依次执行的编号步骤,也可以是适用于该情况的通用指导。每个步骤或准则可以是一句话(询问用户的订单 ID),也可以是一小段说明该做什么及原因的文字。
连续操作使用编号步骤,一个步骤内的要求或子项使用项目符号。
内联引用
程序可以内联引用不同类型的资源:
- 工具(例如查询订单、扣款、结束通话、转接人工客服)
- 知识库文档
- 其他程序
只要某个步骤需要智能体使用工具、知识库文档或其他程序,就应使用内联引用。引用会自动将资源附加到程序,以便智能体使用。纯文本提及(例如 在这里使用计算器工具)同样有效,但前提是该资源已附加到智能体。
在触发条件或内容中输入 /,然后从斜杠菜单中选择资源,即可插入引用。引用在编辑器中显示为可点击标签。点击标签可打开相应资源并确认其配置。
通过 API 编写自由格式内容时,请使用以下语法插入引用:
内联程序引用必须使用同一智能体中的程序。有关智能体范围和复制行为,请参阅限制。
触发条件中的引用可让程序根据资源输出触发,例如 _当 get_user 返回等级“gold”时 _。内容中的引用会指示智能体在该步骤调用或查阅资源。

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

子程序
子程序的触发条件为空。智能体只能从引用它的其他程序中运行它。
使用子程序可在单个智能体内共享步骤,并减少同时可用的程序数量。为入口程序设置触发条件,在其内容中引用相关子程序,并将子程序的触发条件留空。
升级处理子程序可以包含将对话转交给人工客服的步骤。在退款和取消程序中引用它,并将其触发条件留空。智能体可以将升级处理作为任一程序中的一个步骤,但在这些程序之外,该子程序不可用。
从文档导入
你可以从现有的标准操作程序(SOP)开始。在程序列表的 + 菜单中选择 从 SOP 导入,然后上传文件。
支持格式:PDF、DOCX、TXT、MD、HTML、EPUB。文件必须不超过 20 MB。
导入器会分析文档,识别最多 10 个不同程序,并为每个程序创建草稿,其中包含生成的名称、触发条件和内容。打开每个草稿进行完善。如果文档包含超过 10 个 SOP,请在上传前将其拆分为较小文件。

管理自由格式程序
通过控制台创建
通过 API 管理
在控制台中打开智能体,然后选择 程序。 使用 + 创建自由格式程序。添加触发条件,并在内容编辑器中编写指令, 然后发布智能体更改。
最佳实践
智能体需要根据触发条件选择正确的程序,并遵循其内容。随着程序数量增加,能力更强的 模型能更可靠地完成此操作。有关选项,请参阅 模型。
要写好程序,需要同时写好两部分:能在适当时运行程序的触发条件,以及智能体可以遵循的内容。
编写触发条件
保持触发条件具体且互不重叠
重叠或模糊的触发条件会导致运行错误的程序。与其写 当用户对账户有疑问时,不如写 _当用户要求 取消订阅时 _。
从用户视角编写
描述用户的请求,而不是智能体应执行的操作。以智能体操作表述的触发条件可靠性较低。
涵盖用户实际的提问方式
如果用户换一种说法,过于狭窄的触发条件可能会错过真实请求。应包含用户可能使用的 不同表述。当用户要求退款、退货或退回订单款项时 比 当用户请求退款时 的触发效果更可靠。
编写内容
使用祈使句
将步骤写成对智能体的指令:查询客户最近的订单,而不是 _你 应查询客户最近的订单 _。直接指令比建议更容易遵循。
说明步骤的重要原因
原因说明能适用于程序未列举的边缘情况。一句简短的 因为需要订单 ID 才能退款 可以帮助智能体处理步骤未预料到的情况。不要使用全大写的“必须”或僵硬的脚本,一句解释就能达到相同效果。
让每个程序专注于一项任务
如果一个程序开始分支到不相关的结果,请将其拆分为更小的程序, 让智能体在它们之间路由。
组合程序
将共享步骤提取为独立程序
如果多个程序中都出现相同步骤(验证客户身份、查询 订单、升级至人工客服),请将它们提取为专用程序,并通过斜杠菜单从每个需要它的程序中引用。将共享步骤集中在一处维护,可确保使用它们的每个程序保持一致。
对响应式操作使用子程序
对于仅应在其他程序请求时运行的操作,例如身份验证或升级处理,请使用子程序。由于没有触发条件,它不会在对话开始时与入口 程序竞争。更少的触发条件选项能让路由更专注。
将全局行为放入系统提示词
语气、身份、拒绝策略和防护措施应放在系统 提示词中。将任务专属步骤放入 程序。
程序随智能体版本控制
程序是智能体配置的一部分,因此发布新智能体版本时会一同创建快照。 如需回滚到较早的一组程序,请还原较早的智能体版本。请参阅智能体版本控制。
从现有文档开始
如果团队已有 SOP,请使用导入器将其转换为草稿,然后在此基础上完善。