From 2ed027da7c14bd954d02ca406a6955edc5bde856 Mon Sep 17 00:00:00 2001 From: newkirk Date: Thu, 30 Jul 2026 15:26:28 -0400 Subject: [PATCH] fix: scope reasoning_effort=none to OpenAI provider only (Xiaomi rejects 'none') --- internal/providers/helpers.go | 1 - internal/providers/openai.go | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/providers/helpers.go b/internal/providers/helpers.go index f10b6605..6b0d35d3 100644 --- a/internal/providers/helpers.go +++ b/internal/providers/helpers.go @@ -191,7 +191,6 @@ func BuildOpenAIBody(request *models.UnifiedRequest, messagesJSON []interface{}, } } body["tools"] = sanitizedTools - body["reasoning_effort"] = "none" // pontytail: OpenAI reasoning models reject tools + reasoning_effort } if request.ToolChoice != nil { var toolChoice interface{} diff --git a/internal/providers/openai.go b/internal/providers/openai.go index dcaff0a0..7cf18e72 100644 --- a/internal/providers/openai.go +++ b/internal/providers/openai.go @@ -57,6 +57,9 @@ func (p *OpenAIProvider) ChatCompletion(ctx context.Context, req *models.Unified delete(body, "max_tokens") body["max_completion_tokens"] = maxTokens } + if len(req.Tools) > 0 { + body["reasoning_effort"] = "none" + } } resp, err := p.client.R(). @@ -169,6 +172,9 @@ func (p *OpenAIProvider) ChatCompletionStream(ctx context.Context, req *models.U delete(body, "max_tokens") body["max_completion_tokens"] = maxTokens } + if len(req.Tools) > 0 { + body["reasoning_effort"] = "none" + } } resp, err := p.client.R().