fix(ai-amazon-bedrock): strip thinking from additionalModelRequestFields when using generateObject#6206
Open
Zelys-DFKH wants to merge 1 commit intoEffect-TS:mainfrom
Conversation
…lds when using generateObject
🦋 Changeset detectedLatest commit: 763ad9b The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Type
Description
generateObjectfails with "Thinking may not be enabled when tool_choice forces tool use" when extended thinking is configured viawithConfigOverride. This affects both directgenerateObjectcalls and the common case where a parentgenerateTextpropagates theConfigservice (viaEffect.provideService) into a tool handler that internally callsgenerateObject.Root cause
makeRequestbuilds the Bedrock request by spreading...configfirst, which putsadditionalModelRequestFields.thinkinginto the request object. TheadditionalModelRequestFieldsoverride at the end of the request object only fires whenadditionalToolsis present. WhenadditionalToolsisundefined(the usual case), nothing overwrites thethinkingkey that...configalready placed, and the request is rejected.Fix
Pre-compute
requestAdditionalFieldsbefore the request object. In the json path (generateObject), mergeconfig.additionalModelRequestFieldswithadditionalToolsand stripthinking. Return an explicit object even when empty so the final spread overwrites whatever...configput in the request. When no additional fields are configured at all, returnundefinedto avoid injecting an empty object.Tests
Adds
packages/ai/amazon-bedrock/test/AmazonBedrockLanguageModel.test.tswith four cases:thinkingis stripped forgenerateObject(forced toolChoice) andtoolChoice.toolis set correctlythinkingis preserved forgenerateText(no forced toolChoice)additionalModelRequestFieldsis set when none was configured andgenerateObjectis usedthinkingbeing stripped from a mixedadditionalModelRequestFieldsNote: PR #6160 is also open and adds
AmazonBedrockLanguageModel.test.ts(token usage in streaming). If that merges first, the two files can be merged with no conflicts - the describe blocks cover unrelated behavior.Related