推理模型

思考演示

基础用法

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' 设置。

该警告说明:

  1. 由于模型未在 accepts_settings 中列出该设置,因此不会生效
  2. 您可以使用 --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               # <---

此配置会:

  1. 告知 Aider 该模型接受 reasoning_effort 设置
  2. 表明该模型不接受 thinking_tokens(因为它未被列出)
  3. 使 Aider 忽略针对该模型传递的任何 --thinking-tokens
  4. 当尝试对该模型使用 --thinking-tokens 时生成警告

你可以使用 --no-check-model-accepts-settings 覆盖此行为,这将:

  1. 强制 Aider 应用所有通过命令行传递的设置
  2. 跳过所有兼容性检查
  3. 如果模型确实不支持该设置,可能导致 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"]

目录