代理体验
设计模型所看到的内容,以便它能找到所需信息、安全行动,并将上下文用于任务。这是指导而非清单。
- 从最小上下文开始: 首先暴露目的、可用操作和约束;在需要时加载详细指令。
- 让发现变得明确: 每个延迟加载的资源都需要清晰的描述和可靠的检索方式。
- 保持关键约束可见: 权限、破坏性影响和所需的验证应在相关操作之前出现。
- 优先使用有界输出: 返回简洁的结果,附带标识符或路径以供检索详细信息;避免倾泻整个日志或文档。
- 利用局部性: 在操作结果中包含一小部分可能需要的相邻上下文。例如,在回复一个帖子时附带前面的几条消息。明确标记遗漏和截断,并提供检索更多内容的途径。
- 评估总工作量: 节省上下文仅在不导致更多搜索、重复读取或错误的前提下才有用。
工具定义
- 删除显而易见的约束。 省略模型能从调用结果中学会的规则,例如读取失败的文件或未送达的发送。
- 描述行为,而非实现。 说明工具做什么以及返回什么;省略内部机制、模型在结果中看到的输出标记以及执行细节。
- 将参数规则放在参数上。 默认值、取值范围、配对关系以及何时设置的规则应属于该参数的描述或模式中;随配置变化的描述通常意味着变化的部分属于某个参数。
- 每个事实只说一次。 不要在工具定义的系统提示部分重复工具定义,不要在参数描述中重复工具描述,也不要在另一个工具中重复某个工具的规则。
- 衡量变化。 在修改工具定义前后,比较第一轮提示的令牌数量。
技能与代理指令
- 描述即是触发器。 技能的描述使用用户或任务可能使用的词语说明何时使用它;正文则说明如何使用。
- 保持入口文件简短并链接细节。 将工作流和护栏放在技能文件中;将校准示例和长引用移至按需加载的文件中,并从入口文件直接链接这些文件。
- 明确说明范围限制。 例如“此为指导,而非清单”或“报告发现而不进行编辑”会改变模型应用该工作流的方式。
- 指向真实来源。 指令链接到拥有该信息的文档,而不是重新陈述它,从而避免信息漂移。