fix: inject thinking param for OpenAI-compatible APIs with reasoning_effort #11397
+118
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related GitHub Issue
Closes: #11395
Description
This PR attempts to address Issue #11395. When using the OpenAI-compatible provider with APIs like VolcEngine (
ark-code-latest), enabling "Reasoning Effort" sendsreasoning_effortin the request body but does NOT send athinkingparameter. VolcEngine's API defaultsthinkingtodisabledwhen omitted, and the combinationreasoning_effort: "high"+thinking: disabledis rejected as HTTP 400.How it works:
A custom
fetchwrapper (createThinkingAwareFetch) is passed to thecreateOpenAIprovider factory. For any request body that already containsreasoning_effortbut lacks athinkingfield, the wrapper injectsthinking: { type: "enabled" }. Standard OpenAI endpoints silently ignore unknown body fields, so this is safe for all OpenAI-compatible providers.Key details:
createOpenAIpath)thinkingfield if one is already presentTest Procedure
createThinkingAwareFetchcovering:thinkingwhenreasoning_effortis presentthinkingwhenreasoning_effortis absentthinkingparameterfetchis passed tocreateOpenAIopenai.spec.tspassRun tests:
cd src && npx vitest run api/providers/__tests__/openai.spec.tsPre-Submission Checklist
Documentation Updates
Additional Notes
Feedback and guidance are welcome.