Skip to main content

提高代理质量以优化 AI 使用情况

了解构建更高质量代理的策略,使其能够以更少的尝试完成任务,从而减少 AI credits 的使用。

Introduction

当代理的职责范围界定清晰、指令明确,并在清晰的约束条件下运行时,令牌效率自然会提升。 高质量的代理在更少的尝试中完成任务,遵循更清晰的工作流,减少返工,并避免成本高昂的调试和更正周期。

本文概述了提高代理质量和 AI credits 效率的五种策略:

1.为正确的任务选择正确的模型

模型选择是提高代理质量和成本效益的最快方法之一,但通常被忽视。 常见的模式是默认为每个任务最有能力的模型,但这通常会增加令牌使用量,而不会改善结果。 在某些执行密集型方案中,过度使用推理模型可能会降低质量,因为模型可能会过度思考任务或引入不必要的更改。

根据手头的工作选择模型。 Copilot自动选择模型 还可以根据实时系统运行状况和模型性能自动处理此问题。

  • 推理模型:最适合需要更深入分析的体系结构决策、复杂调试、系统设计和任务。
  • 中层模型:最好是计划已经明确,代理需要高效执行。
  • 较轻的模型:最适合重构、格式设置、文档更新和其他常规、范围良好的更改。

按任务需要尽可能多地使用能力,同时尽可能少用。 匹配任务功能可改善结果,并直接控制大规模成本。

有关按模型和任务类型的细分,请参阅 使用不同任务比较 AI 模型

2.在提示中提供明确的指导

提示为代理所做的一切设置方向。 当提示较为模糊时,智能体必须推断用户意图,进一步了解更多上下文,并自行作出判断。 这通常会导致反复重试、范围蔓延以及不必要的 token 消耗。

结构良好的提示有三种品质:

  • 明确的任务定义。 而不是“修复此问题”,而是解释问题所在、发生位置以及预期结果的外观。
  • 预先提供的相关上下文。 如果已经知道哪些文件、服务、日志、错误或输入很重要,请包括这些文件。 这有助于智能体避免不必要的探索。
  • 明确的停止条件。 告诉代理“完成”是什么样子。 如果没有停止点,代理可以通过添加额外的提交、重构不相关的代码或扩展范围来继续超越目标。

这些新增的指导不会明显增加 token 使用量,但可以显著减少代理为得出正确结果所需的运行次数。

有关提示工程最佳做法,请参阅 GitHub Copilot 对话助手的提示设计

3. 研究,计划,然后实施

与智能体高效协作的一个重大转变,是不再试图在单次会话中完成所有事情。 当研究、规划和实施一起发生时,上下文会迅速增长,无关的信息累积,代理质量会随着时间的推移而下降。

将工作分解为明确的阶段:

  • 研究: 使用代理浏览代码库、识别相关文件以及了解依赖项。
  • 计划: 在进行更改之前创建详细的结构化计划或规范。 这就是推理模型最有价值的位置。
  • 实现: 使用重点上下文和适合执行的模型针对计划执行。

在阶段之间启动新会话可防止转发不必要的上下文。 在合理范围内完成的单个会话利用缓存。 沿用前面阶段的上下文可能会增加 token 用量、引入偏差,并降低代理的判断清晰度。 每个阶段都应只使用其所需的资源。 有关有效确定会话范围的指导,请参阅 使用GitHub Copilot处理任务的最佳做法

4. 添加确定性防护措施

智能体具有非确定性,因此并非每次都能给出正确结果,尤其是在多步工作流中。 如果缺乏约束机制,小错误就会迅速累积:代理会基于错误的输出继续推进,越来越偏离目标,并使调试成本更高、耗时更长。

确定性控制机制引入了明确的通过/失败信号:

  • 单元测试 验证代理的更改是否生成了预期行为。
  • Linters 强制实施结构和一致性,防止格式设置问题、样式偏移和可避免的清理工作。
  • 安全扫描可以及早发现风险模式,以免后续更难处理。

这些控制机制共同形成了一个紧密的反馈闭环:智能体做出更改后,会由测试、规则或扫描对其进行评估,而智能体会在继续推进之前先作出调整。 这可以防止一连串错误更改,而这正是令牌浪费的主要原因之一。

投入这些防护措施的团队会发现,重试次数更少,任务完成速度更快,而且代理行为更可预测。 即使单个步骤提前使用稍微多一些令牌,它们也会减少令牌消耗总量。

5. 保持简洁 copilot-instructions.md

持久指令可提高代理交互的一致性,但其价值完全取决于它们写入方式。 copilot-instructions.md存储库级别的文件是对本指南进行编码的最直接方法。 个人和组织级别的说明可以分层,以便实现更广泛的一致性。

最佳说明是简短的、具体且以实际观察到的代理行为为基础—不是一般最佳做法,这些最佳做法听起来不错,但不适用于系统。

要包括的内容:

  • 所需的框架、库或设计模式
  • 代理往往会重复犯的已知陷阱
  • 输出预期,如“简洁”或“仅返回代码”
  • 代理必须遵循的团队特定约定
  • 构建、测试和代码检查命令

要避免的事项:

  • 长文档,通用文档
  • AI 生成的指南不反映实际系统
  • 一次性首选项或很少使用的详细信息
  • 造成上下文嘈杂的过多指令

随着代码库、体系结构、标准和工作流的发展,请不断更新说明。 由于这些指令包含在代理的上下文中,因此即使是较小的改进也会减少重复的错误,并随着时间的推移降低浪费的令牌使用量。

有关详细信息,请参阅“为GitHub Copilot添加存储库自定义说明”。