推理

在语言模型中,推理(reasoning,又称模型思考)是一种模拟人类逐步分析求解问题的思维链(CoT)技术。SillyTavern 提供了多项功能,让推理模型在受支持的后端上使用起来更高效、更一致。

常见问题

  1. 使用推理模型时,模型的内部推理过程会占用回复 token 额度的一部分,即使该推理不会出现在最终输出中(例如 o3-mini 或 Gemini Thinking)。如果你发现回复不完整或为空,应尝试调整 AI 响应配置面板中的最大响应长度设置。对于推理模型,通常会使用比标准对话模型高得多的 token 上限——大约 1024 到 4096 个 token。

配置

推理区块在聊天中以可折叠的消息段落形式出现。它们可以手动添加、由后端自动添加,或通过解析回复来添加(见下文)。

默认情况下,推理区块处于折叠状态以节省空间。点击某个区块即可展开并查看其内容。你可以在推理设置中启用自动展开,让区块自动展开。

当推理区块展开后,你可以使用 复制 编辑按钮复制或编辑其内容。

部分模型支持推理,但不会回传其思考过程。对于这些模型,可以通过切换显示隐藏项设置,仍然显示带有推理时间的推理区块。

添加推理

手动添加

通过 消息编辑菜单向任意消息添加推理区块。在编辑时点击 即可添加推理段落。第三方扩展也可以在将消息对象加入聊天之前,向其 extra.reasoning 字段写入内容来添加推理。

通过命令

使用 /reasoning-set STscript 命令向消息添加推理。该命令接受 at(消息 ID,默认为最后一条消息)和推理文本作为参数。

stscript
/reasoning-set at=0 This is the reasoning for the first message.

由后端添加

如果你所选的 LLM 后端和模型支持推理输出,在 AI 响应配置面板中启用“请求模型推理”即可添加一个包含模型思考过程的推理区块。

受支持的来源:

  • Claude
  • DeepSeek
  • Google AI Studio
  • Google Vertex AI
  • OpenRouter
  • xAI (Grok)
  • AI/ML API
  • Z.AI
  • Pollinations
  • MistralAI
  • Electron Hub
  • Chutes
  • NanoGPT
  • Moonshot

各提供商相关说明:

  • Claude 和 Google(2.5 Flash)允许切换思考模式;参见推理强度
  • Z.AI (GLM)Moonshot (Kimi) 可以禁用推理。该设置映射到 thinking.type 参数。它们不支持“推理强度”。
  • 对于 OpenRouter,当关闭“请求模型推理”开关并将推理强度设为最低时,对支持该功能的模型会将思考设为禁用。该行为因模型而异;某些提供商可能会拒绝此类请求。

通过解析

高级格式化面板中启用“自动解析”,即可自动从模型输出中解析推理。

回复必须包含一个由配置好的前缀和后缀序列包裹的推理段落。默认提供的前后缀序列对应 DeepSeek R1 的推理格式。对于 MiniMax 或 Perplexity 等返回未解析推理的某些 API 来源,必须启用此功能。

以前缀 <think> 和后缀 </think> 为例:

<think>
This is the reasoning.
</think>

This is the main content.

使用推理进行提示

默认情况下,已识别的推理区块内容不会回传给模型。若要将推理包含在提示词中,请在 高级格式化面板中启用“加入提示词”。推理内容会被配置好的前缀和后缀序列包裹,并通过分隔符与主上下文分隔开。最大附加数这一数值设置控制可以包含多少个推理区块,从提示词末尾开始计数。

从推理继续

有一种特殊情况可以在未启用“加入提示词”开关的情况下将推理回传给模型:当生成被继续时(例如从 选项菜单中按“继续”),且被继续的消息只包含推理而没有实际内容。这让模型有机会完成未完成的推理并开始生成主要内容。提示词将按如下方式发送:

<think>
Incomplete reasoning...

正则脚本

来自 Regex 扩展的正则表达式脚本可以应用于推理区块的内容。在脚本编辑器的“影响范围”部分勾选“推理”,即可专门针对推理区块生效。

不同的临时性选项对推理区块的影响如下:

  1. 无临时性:推理内容被永久更改。
  2. 编辑时运行:当推理区块被编辑时,正则脚本会被重新求值。
  3. 修改聊天显示:正则应用于推理区块的显示文本,而非底层内容。
  4. 修改发出提示词:正则仅在推理区块发送给模型之前应用于其上。

推理强度

推理强度是 AI 响应配置面板中的一个聊天补全设置,用于影响可能用于推理的 token 数量。每个选项的效果取决于所连接的来源。对于下列来源,Auto 仅表示请求中不包含相关参数。

选项 Claude(无流式输出时 ≤ 21333) OpenAI(关键字) OpenRouter(关键字) xAI (Grok)(关键字) Perplexity(关键字) NanoGPT(关键字)
模型 Opus 4, Sonnet 4/3.7 o4-mini, o3*, o1* 适用模型 grok-3-mini sonar-deep-research 适用模型
Auto 不指定,不思考 不指定 不指定,效果取决于情况 不指定 不指定 不指定
Minimum 预算 1024 token "low" "low",或最大响应的 20% "low" "low" "none"
Low 最大响应的 15%,最小 1024 "low" "low",或最大响应的 20% "low" "low" "minimal"
Medium 最大响应的 25%,最小 1024 "medium" "medium",或最大响应的 50% "low" "medium" "low"
High 最大响应的 50%,最小 1024 "high" "high",或最大响应的 80% "high" "high" "medium"
Maximum 最大响应的 95%,最小 1024 "high" "high",或最大响应的 80% "high" "high" "high"
  • 对于不支持自适应思考的较早 Claude 模型,若禁用流式输出,预算上限为 21333。如果计算出的预算小于 1024,则最大响应会被改为 2048。
  • Claude 还支持 Opus 4.6+ 模型的自适应思考,可通过 config.yaml 中的 claude.enableAdaptiveThinking 启用(Opus 4.7+ 始终启用)。启用后,推理强度设置将映射到自适应思考等级,而非 token 预算。对于适用的模型,该设置的优先级高于“详略程度”设置。
  • 对于 OpenRouter、Pollinations、Perplexity、xAI、Chutes、DeepSeek、AI/ML API、xAI、Electron Hub,仅发送一个 OpenAI 风格的关键字。
  • 对于 OpenAI 上的 GPT-5.4 和 GPT-5.5 模型,“Minimum”推理强度对应“none”,即禁用推理。
  • 对于作为聊天补全自定义 API 来源运行的 KoboldCpp,推理强度以 reasoning_effort 参数发送,取值为 "minimal"、"low"、"medium"、"high" 和 "xhigh"。
  • 对于其他自定义(OpenAI 兼容)来源,仅当模型在官方 OpenAI 来源上支持推理强度时,才会发送该参数。

Google AI Studio 和 Vertex AI 如下:

模型 Auto(动态思考) Minimum Low Medium High Maximum
2.5 Pro thinkingBudget = -1 128 最大响应的 15%,最小 128 最大响应的 25% 最大响应的 50% 最大值或 32768 中较小者
2.5 Flash thinkingBudget = -1 0,不思考 最大响应的 15% 最大响应的 25% 最大响应的 50% 最大值或 24576 中较小者
2.5 Flash Lite thinkingBudget = -1 0,不思考 最大响应的 15%,最小 512 最大响应的 25% 最大响应的 50% 最大值或 24576 中较小者
3.0/3.1 Pro thinkingLevel = null "low" "low" "low" "high" "high"
3.0/3.1 Flash thinkingLevel = null "minimal" "low" "medium" "high" "high"
  • 对于 Gemini 2.5 Pro 和 2.5 Flash/Lite,无论流式输出设置如何,预算上限分别为 32768 或 24576 个 token。