From d8db79b4e5c8c73e21a0e0a520972542cfaa450c Mon Sep 17 00:00:00 2001 From: Enrico Ros Date: Thu, 7 Aug 2025 14:44:17 -0700 Subject: [PATCH] AIX: OpenAI does not support Web Search with reasoning:minimal --- .../chatGenerate/adapters/openai.chatCompletions.ts | 4 +++- .../chatGenerate/adapters/openai.responsesCreate.ts | 4 +++- src/modules/llms/models-modal/LLMParametersEditor.tsx | 9 +++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.chatCompletions.ts b/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.chatCompletions.ts index 6fd366859..1930c7909 100644 --- a/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.chatCompletions.ts +++ b/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.chatCompletions.ts @@ -107,7 +107,9 @@ export function aixToOpenAIChatCompletions(openAIDialect: OpenAIDialects, model: _fixVndOaiRestoreMarkdown_Inline(payload); } // [OpenAI] Vendor-specific web search context and/or geolocation - if (model.vndOaiWebSearchContext || model.userGeolocation) { + // NOTE: OpenAI doesn't support web search with minimal reasoning effort + const skipWebSearchDueToMinimalReasoning = model.vndOaiReasoningEffort === 'minimal'; + if ((model.vndOaiWebSearchContext || model.userGeolocation) && !skipWebSearchDueToMinimalReasoning) { payload.web_search_options = {}; if (model.vndOaiWebSearchContext) payload.web_search_options.search_context_size = model.vndOaiWebSearchContext; diff --git a/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.responsesCreate.ts b/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.responsesCreate.ts index 689159b34..8ac624388 100644 --- a/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.responsesCreate.ts +++ b/src/modules/aix/server/dispatch/chatGenerate/adapters/openai.responsesCreate.ts @@ -94,7 +94,9 @@ export function aixToOpenAIResponses(model: AixAPI_Model, chatGenerate: AixAPICh } // Tool: Search: for search models, and deep research models - if (hotFixForceSearchTool || model.vndOaiWebSearchContext || model.userGeolocation) { + // NOTE: OpenAI doesn't support web search with minimal reasoning effort + const skipWebSearchDueToMinimalReasoning = model.vndOaiReasoningEffort === 'minimal'; + if ((hotFixForceSearchTool || model.vndOaiWebSearchContext || model.userGeolocation) && !skipWebSearchDueToMinimalReasoning) { if (!payload.tools?.length) payload.tools = []; const webSearchTool: TRequestTool = { diff --git a/src/modules/llms/models-modal/LLMParametersEditor.tsx b/src/modules/llms/models-modal/LLMParametersEditor.tsx index ea52e2422..433aff02d 100644 --- a/src/modules/llms/models-modal/LLMParametersEditor.tsx +++ b/src/modules/llms/models-modal/LLMParametersEditor.tsx @@ -145,6 +145,9 @@ export function LLMParametersEditor(props: { const gemTBSpec = modelParamSpec['llmVndGeminiThinkingBudget']; const gemTBMinMax = gemTBSpec?.rangeOverride || defGemTB.range; + // Check if web search should be disabled due to minimal reasoning effort + const isOaiReasoningEffortMinimal = llmVndOaiReasoningEffort4 === 'minimal'; + return <> {!temperatureHide && { if (value === _UNSPECIFIED || !value) @@ -289,7 +293,8 @@ export function LLMParametersEditor(props: { { if (!checked)