fix: 12980 align nativeStructuredOuptut across bedrock and anthropic#12981
Closed
heiwen wants to merge 2 commits intovercel:mainfrom
Closed
fix: 12980 align nativeStructuredOuptut across bedrock and anthropic#12981heiwen wants to merge 2 commits intovercel:mainfrom
heiwen wants to merge 2 commits intovercel:mainfrom
Conversation
42191a9 to
1b1907e
Compare
Comment on lines
+990
to
+999
| function supportsAnthropicNativeStructuredOutput(modelId: string): boolean { | ||
| // only version 4+ supports structured output | ||
| const v = modelId.indexOf('-4-'); | ||
| if (v < 0) return false; | ||
|
|
||
| // versions before 4-1 don't suport structured outputs yet | ||
| // reject bedrock style claude-opus-4-20250514-v1:0 | ||
| return modelId[v + 3] !== '-' && modelId[v + 4] === '-'; | ||
| } | ||
|
|
Collaborator
There was a problem hiding this comment.
imo this is very brittle logic. we would keep coming back to this whenever newer models are added
Comment on lines
+86
to
+94
| const supportedStructuredOutputGenerateUrl = `${baseUrl}/model/${encodeURIComponent( | ||
| supportedStructuredOutputModelId, | ||
| )}/converse`; | ||
| const supportedStructuredOutput41GenerateUrl = `${baseUrl}/model/${encodeURIComponent( | ||
| supportedStructuredOutput41ModelId, | ||
| )}/converse`; | ||
| const dateBasedStructuredOutput4GenerateUrl = `${baseUrl}/model/${encodeURIComponent( | ||
| dateBasedStructuredOutput4ModelId, | ||
| )}/converse`; |
Collaborator
There was a problem hiding this comment.
not sure why we have to create these 3 vars globally instead of locally in the tests
Collaborator
|
closed in favour of #14126 |
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.
Background
@ai-sdk/anthropicand@ai-sdk/amazon-bedrockhad different decision logic for Anthropic structured outputs.In Bedrock, native structured output (
output_config.format) was tied to reasoning being enabled, which caused supported models to fall back to JSON tool mode when reasoning was off. This made behavior inconsistent and less reliable.Summary
bedrock-chat-language-modelsimple (explicit-4-<minor>style detection), including4-1support and excluding date-based4-2025...variants.bedrock-chat-language-model.test.tsto cover:4-1model native output4-20250514fallback to JSON toolChecklist
pnpm changesetin the project root)Future Work
Extract and share Anthropic structured-output capability detection from a single internal source so Bedrock and Anthropic providers cannot drift.
Related Issues
Fixes #12980