令牌限制

每个大型语言模型(LLM)对每次请求能处理的令牌数量都有限制:

  • 模型的上下文窗口限制了它能处理的输入和输出令牌总数
  • 每个模型对能产生的输出令牌数量也有限制

当模型响应表明已超出令牌限制时,Aider会报告错误。 错误信息会包含建议操作,帮助避免触及令牌限制。

以下是一个错误示例:

模型 gpt-3.5-turbo 已达到令牌限制!

输入令牌:768 / 16385
输出令牌:4096 / 4096 —— 超出输出限制!
总令牌数:4864 / 16385

减少输出令牌的方法:
- 每次请求更小的改动
- 将代码拆分成更小的源文件
- 尝试使用更强大的模型如 DeepSeek V3 或 Sonnet,它们能返回差异

更多信息:https://aider.chat/docs/token-limits.html

Aider从不强制实施令牌限制,它只是报告API提供商返回的令牌限制错误。 Aider报告的令牌计数是估算值

输入令牌与上下文窗口大小

最常见的问题是尝试向模型发送过多数据, 超出了其上下文窗口。 从技术上讲,如果输入过大或输入加输出过大, 都可能导致上下文窗口耗尽。

像GPT-4o和Sonnet这样的强大模型具有相当大的上下文窗口, 因此这类错误通常只在使用较弱模型时出现。

最简单的解决方案是尝试通过从聊天中移除文件来减少输入令牌。 最好只添加Aider完成请求需要编辑的文件。

  • 使用/tokens查看令牌使用情况
  • 使用/drop从聊天会话中移除不需要的文件
  • 使用/clear清除聊天历史记录
  • 将代码拆分成更小的源文件

输出令牌限制

大多数模型都有较小的输出限制,通常低至4000个令牌。当您要求aider进行影响大量代码的大规模修改时,大型语言模型(LLM)在尝试返回所有变更时可能会触及输出令牌限制。

为避免触及输出令牌限制,您可以:

  • 每次请求时要求进行较小规模的修改
  • 将代码拆分为较小的源文件
  • 使用能返回差异的强大模型如gpt-4o、sonnet或DeepSeek V3
  • 使用支持无限输出的模型

其他原因

有时令牌限制错误是由以下原因引起的:

  • 不符合规范的API代理服务器
  • 您用于托管本地模型的API服务器存在bug

aider在直接连接主要LLM云服务提供商API时经过充分测试。对于本地模型服务,已知Ollama能与aider良好配合。

建议尝试不使用API代理服务器,或直接连接推荐的云API,观察令牌限制问题是否得到解决。

更多帮助

如需更多帮助,请查阅我们的 GitHub issues 页面,如果您的问题未被讨论过,请提交新 issue。 或者加入我们的 Discord 与我们交流。

在报告问题时,提供以下信息将非常有帮助:

  • Aider 版本号
  • 您使用的 LLM 模型

包含 aider 启动时打印的 “announcement” 信息 是分享这些有用信息的简便方式。

Aider v0.37.1-dev
Models: gpt-4o with diff edit format, weak model gpt-3.5-turbo
Git repo: .git with 243 files
Repo-map: using 1024 tokens

使用 /help <问题>获取关于使用 aider 的帮助, 包括自定义设置、故障排除、使用 LLM 等方面的疑问。


目录