From 40debd150d9b1cf50bab2f1c57676ee908895fca Mon Sep 17 00:00:00 2001 From: Sergey Kozyrenko Date: Fri, 26 Jun 2026 00:52:49 +0700 Subject: [PATCH] test(providers): pin openaicompat providers off adaptive thinking (M7) Adaptive thinking (thinking.type=adaptive + output_config.effort) is an Anthropic-protocol mode the langchaingo OpenAI transport cannot emit, and the openaicompat Call path never threads PrepareAdaptiveCallOptions. So an adaptive reasoning mode declared in an openaicompat provider's models.yml would silently no-op. Assert that none of the openaicompat-backed providers (qwen, glm, deepseek, kimi, minimax) resolve to adaptive thinking for any agent type. The day someone adds an adaptive model/mode to one of their configs, this fails loudly instead of dropping the thinking budget in silence. Co-Authored-By: Claude Sonnet 4.6 --- .../providers/openaicompat_adaptive_test.go | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 backend/pkg/providers/openaicompat_adaptive_test.go diff --git a/backend/pkg/providers/openaicompat_adaptive_test.go b/backend/pkg/providers/openaicompat_adaptive_test.go new file mode 100644 index 00000000..a5adeb1b --- /dev/null +++ b/backend/pkg/providers/openaicompat_adaptive_test.go @@ -0,0 +1,45 @@ +package providers + +import ( + "testing" + + "pentagi/pkg/providers/deepseek" + "pentagi/pkg/providers/glm" + "pentagi/pkg/providers/kimi" + "pentagi/pkg/providers/minimax" + "pentagi/pkg/providers/pconfig" + "pentagi/pkg/providers/qwen" +) + +func TestOpenAICompatProvidersDoNotUseAdaptiveThinking(t *testing.T) { + t.Parallel() + + providers := []struct { + name string + config func() (*pconfig.ProviderConfig, error) + models func() (pconfig.ModelsConfig, error) + }{ + {"qwen", qwen.DefaultProviderConfig, qwen.DefaultModels}, + {"glm", glm.DefaultProviderConfig, glm.DefaultModels}, + {"deepseek", deepseek.DefaultProviderConfig, deepseek.DefaultModels}, + {"kimi", kimi.DefaultProviderConfig, kimi.DefaultModels}, + {"minimax", minimax.DefaultProviderConfig, minimax.DefaultModels}, + } + + for _, p := range providers { + cfg, err := p.config() + if err != nil { + t.Fatalf("%s: DefaultProviderConfig() error: %v", p.name, err) + } + models, err := p.models() + if err != nil { + t.Fatalf("%s: DefaultModels() error: %v", p.name, err) + } + + for _, opt := range pconfig.AllAgentTypes { + if cfg.UsesAdaptiveThinking(models, opt) { + t.Errorf("%s/%s resolves to adaptive thinking, but the openaicompat transport never emits it (M7): adaptive thinking is Anthropic/Bedrock-only", p.name, opt) + } + } + } +}