推理模型
基础用法
Aider 已配置为开箱即用地支持大多数主流推理模型。您可以这样使用它们:
# Sonnet 使用思考令牌预算
aider --model sonnet --thinking-tokens 8k
# o3-mini 使用低/中/高推理强度
aider --model o3-mini --reasoning-effort high
# R1 不支持可配置的思考/推理
aider --model r1
在 aider 聊天界面中,您可以使用 /thinking-tokens 4k
或 /reasoning-effort low
来调整推理强度。使用 /thinking-tokens 0
可禁用思考令牌。
本文档其余部分将描述更多高级细节,主要适用于需要配置 aider 以支持较冷门的推理模型或通过非常规提供商提供的模型的情况。
推理设置
不同模型支持不同的推理设置。Aider 提供了多种控制推理行为的方式:
推理强度
您可以使用 --reasoning-effort
开关来控制支持此设置的模型的推理强度。该开关特别适用于 OpenAI 的推理模型,这些模型接受 “low”(低)、”medium”(中)和 “high”(高)参数。
思考令牌
您可以使用 --thinking-tokens
开关来请求模型使用特定数量的思考令牌。该开关特别适用于 Sonnet 3.7。您可以指定令牌预算如 “1024”、”1k”、”8k” 或 “0.01M”。使用 “0” 可禁用思考令牌。
模型兼容性与设置
并非所有模型都支持这两项设置。Aider 使用 模型的元数据 来判断每个模型接受哪些设置:
- name: o3-mini
...
accepts_settings: ["reasoning_effort"]
如果您尝试使用模型不明确支持的设置,Aider 会发出警告:
警告:o3-mini 不支持 'thinking_tokens' 设置,已忽略。
使用 --no-check-model-accepts-settings 可强制应用 'thinking_tokens' 设置。
该警告说明:
- 由于模型未在
accepts_settings
中列出该设置,因此不会生效 - 您可以使用
--no-check-model-accepts-settings
来强制应用该设置
此功能有助于避免 API 错误,同时仍允许您在需要时进行设置实验。
每个模型在其配置中都有预定义的受支持设置列表。例如:
- OpenAI 推理模型通常支持
reasoning_effort
- Anthropic 推理模型通常支持
thinking_tokens
accepts_settings
工作原理
模型通过 accepts_settings
属性定义它们接受哪些推理设置:
- name: a-fancy-reasoning-model
edit_format: diff
use_repo_map: true
accepts_settings: # <---
- reasoning_effort # <---
此配置会:
- 告知 Aider 该模型接受
reasoning_effort
设置 - 表明该模型不接受
thinking_tokens
(因为它未被列出) - 使 Aider 忽略针对该模型传递的任何
--thinking-tokens
值 - 当尝试对该模型使用
--thinking-tokens
时生成警告
你可以使用 --no-check-model-accepts-settings
覆盖此行为,这将:
- 强制 Aider 应用所有通过命令行传递的设置
- 跳过所有兼容性检查
- 如果模型确实不支持该设置,可能导致 API 错误
这在测试新模型或通过自定义 API 提供商使用模型时很有用。
XML 标签中的思考标记
还有一个 reasoning_tag
设置,它接受模型用于包裹其推理/思考输出的 XML 标签名称。
例如,当使用 Fireworks 的 DeepSeek R1 时,推理内容会返回在 <think>...</think>
标签内,因此 aider 的设置中包含 reasoning_tag: think
。
<think>
用户希望我向他们问好!
</think>
你好!
Aider 会显示思考/推理输出, 但这些内容不会被用作文件编辑指令或添加到聊天历史记录等。 Aider 将依赖非思考输出来获取如何进行代码更改等操作的指令。
模型特定的推理标签
不同模型使用不同的 XML 标签进行推理: 当使用自定义或自托管模型时,您可能需要在配置中指定适当的推理标签。
- name: fireworks_ai/accounts/fireworks/models/deepseek-r1
edit_format: diff
weak_model_name: fireworks_ai/accounts/fireworks/models/deepseek-v3
use_repo_map: true
extra_params:
max_tokens: 160000
use_temperature: false
editor_model_name: fireworks_ai/accounts/fireworks/models/deepseek-v3
editor_edit_format: editor-diff
reasoning_tag: think # <---
推理模型的限制
许多”推理”模型在使用方式上有诸多限制: 它们有时会禁止流式传输、禁止使用温度参数和/或禁止系统提示。 Aider 已针对主流提供商 API 提供的流行模型进行了适配配置。
如果您通过其他提供商(如 Azure 或自定义部署)使用模型, 当遇到与温度参数或系统提示相关的错误时, 您可能需要配置模型设置。
请将新提供商的设置包含在项目根目录或家目录下的 .aider.model.settings.yml
文件中。
温度参数、流式输出与系统提示
推理模型通常对这些设置有特定要求:
设置项 | 描述 | 常见限制 |
---|---|---|
use_temperature |
是否使用温度采样 | 许多推理模型要求设为 false |
streaming |
是否启用流式响应 | 部分推理模型不支持流式输出 |
use_system_prompt |
是否使用系统提示 | 部分推理模型不支持系统提示 |
建议参考现有模型配置中您感兴趣的模型设置,例如 o3-mini:
- name: o3-mini
edit_format: diff
weak_model_name: gpt-4o-mini
use_repo_map: true
use_temperature: false # <---
editor_model_name: gpt-4o
editor_edit_format: editor-diff
accepts_settings: ["reasoning_effort"]
注意这些必须设为 false
的配置项(针对特定推理模型):
use_temperature
streaming
use_system_prompt
自定义服务商配置示例
以下是通过 Azure 使用 o3-mini 的配置示例。虽然 aider 已预置这些配置,但可作为如何为不同服务商调整主模型设置的参考:
- name: azure/o3-mini
edit_format: diff
weak_model_name: azure/gpt-4o-mini
use_repo_map: true
use_temperature: false # <---
editor_model_name: azure/gpt-4o
editor_edit_format: editor-diff
accepts_settings: ["reasoning_effort"]