From f2aae9d37ff25381d171d71f08dff3fa8e2860ee Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Mon, 1 Jun 2026 12:08:03 +0200 Subject: [PATCH] fix: Using adaptive thinking for Claude opus 4.8 - 4.6 --- providers/ClaudeProvider.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/providers/ClaudeProvider.cpp b/providers/ClaudeProvider.cpp index cb3262e..4303790 100644 --- a/providers/ClaudeProvider.cpp +++ b/providers/ClaudeProvider.cpp @@ -66,9 +66,28 @@ void ClaudeProvider::prepareRequest( }; auto applyThinkingMode = [&request](const auto &settings) { + const QString model = request.value("model").toString().toLower(); + const bool useAdaptiveThinking = model.contains("opus-4-8") || model.contains("opus-4-7") + || model.contains("opus-4-6") || model.contains("sonnet-4-6"); + QJsonObject thinkingObj; - thinkingObj["type"] = "enabled"; - thinkingObj["budget_tokens"] = settings.thinkingBudgetTokens(); + if (useAdaptiveThinking) { + thinkingObj["type"] = "adaptive"; + + const int budget = settings.thinkingBudgetTokens(); + QString effort = "high"; + if (budget < 8000) + effort = "low"; + else if (budget < 24000) + effort = "medium"; + + QJsonObject outputConfig; + outputConfig["effort"] = effort; + request["output_config"] = outputConfig; + } else { + thinkingObj["type"] = "enabled"; + thinkingObj["budget_tokens"] = settings.thinkingBudgetTokens(); + } request["thinking"] = thinkingObj; request["max_tokens"] = settings.thinkingMaxTokens(); request["temperature"] = 1.0;