From 706eaeae36e7471f9af061591d54409ce980ca4c Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Wed, 8 Apr 2026 11:16:44 +0400 Subject: [PATCH] fix: use max_completion_tokens for OpenAI provider Newer OpenAI models (gpt-4o, gpt-5.x) reject the max_tokens param and require max_completion_tokens instead. Other providers still use max_tokens. --- studio/backend/core/inference/external_provider.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/studio/backend/core/inference/external_provider.py b/studio/backend/core/inference/external_provider.py index 55f271e6da..d1c612b4eb 100644 --- a/studio/backend/core/inference/external_provider.py +++ b/studio/backend/core/inference/external_provider.py @@ -91,7 +91,11 @@ class ExternalProviderClient: "presence_penalty": presence_penalty, } if max_tokens is not None: - body["max_tokens"] = max_tokens + # OpenAI newer models (gpt-4o, gpt-5.x) reject max_tokens + if self.provider_type == "openai": + body["max_completion_tokens"] = max_tokens + else: + body["max_tokens"] = max_tokens url = f"{self.base_url}/chat/completions" logger.info( @@ -406,7 +410,10 @@ class ExternalProviderClient: "presence_penalty": presence_penalty, } if max_tokens is not None: - body["max_tokens"] = max_tokens + if self.provider_type == "openai": + body["max_completion_tokens"] = max_tokens + else: + body["max_tokens"] = max_tokens response = await _http_client.post( f"{self.base_url}/chat/completions",