diff --git a/src/api/providers/__tests__/openai.spec.ts b/src/api/providers/__tests__/openai.spec.ts index 73b542dbc73..5299c297e8e 100644 --- a/src/api/providers/__tests__/openai.spec.ts +++ b/src/api/providers/__tests__/openai.spec.ts @@ -635,7 +635,6 @@ describe("OpenAiHandler", () => { temperature: 0, tools: undefined, tool_choice: undefined, - parallel_tool_calls: true, }, { path: "/models/chat/completions" }, ) @@ -684,7 +683,6 @@ describe("OpenAiHandler", () => { ], tools: undefined, tool_choice: undefined, - parallel_tool_calls: true, }, { path: "/models/chat/completions" }, ) diff --git a/src/api/providers/base-openai-compatible-provider.ts b/src/api/providers/base-openai-compatible-provider.ts index fc3d769ae2a..e87f1478992 100644 --- a/src/api/providers/base-openai-compatible-provider.ts +++ b/src/api/providers/base-openai-compatible-provider.ts @@ -95,7 +95,7 @@ export abstract class BaseOpenAiCompatibleProvider stream_options: { include_usage: true }, tools: this.convertToolsForOpenAI(metadata?.tools), tool_choice: metadata?.tool_choice, - parallel_tool_calls: metadata?.parallelToolCalls ?? true, + ...(metadata?.parallelToolCalls === true && { parallel_tool_calls: true }), } // Add thinking parameter if reasoning is enabled and model supports it diff --git a/src/api/providers/openai.ts b/src/api/providers/openai.ts index 87589b93960..db0606ceed2 100644 --- a/src/api/providers/openai.ts +++ b/src/api/providers/openai.ts @@ -161,7 +161,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl ...(reasoning && reasoning), tools: this.convertToolsForOpenAI(metadata?.tools), tool_choice: metadata?.tool_choice, - parallel_tool_calls: metadata?.parallelToolCalls ?? true, + ...(metadata?.parallelToolCalls === true && { parallel_tool_calls: true }), } // Add max_tokens if needed @@ -229,7 +229,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl // Tools are always present (minimum ALWAYS_AVAILABLE_TOOLS) tools: this.convertToolsForOpenAI(metadata?.tools), tool_choice: metadata?.tool_choice, - parallel_tool_calls: metadata?.parallelToolCalls ?? true, + ...(metadata?.parallelToolCalls === true && { parallel_tool_calls: true }), } // Add max_tokens if needed @@ -348,7 +348,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl // Tools are always present (minimum ALWAYS_AVAILABLE_TOOLS) tools: this.convertToolsForOpenAI(metadata?.tools), tool_choice: metadata?.tool_choice, - parallel_tool_calls: metadata?.parallelToolCalls ?? true, + ...(metadata?.parallelToolCalls === true && { parallel_tool_calls: true }), } // O3 family models do not support the deprecated max_tokens parameter @@ -382,7 +382,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl // Tools are always present (minimum ALWAYS_AVAILABLE_TOOLS) tools: this.convertToolsForOpenAI(metadata?.tools), tool_choice: metadata?.tool_choice, - parallel_tool_calls: metadata?.parallelToolCalls ?? true, + ...(metadata?.parallelToolCalls === true && { parallel_tool_calls: true }), } // O3 family models do not support the deprecated max_tokens parameter