令牌限制
每个大型语言模型(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 等方面的疑问。