Repository navigation
List the GPT-6.1 Sol Bedrock Runtime profiles in model discovery - #3115
schroderfernando16 wants to merge 1 commit into
Conversation
Add openai.gpt-6.1-sol to the Bedrock Runtime capability catalog so discovery offers its us. and global. inference profiles. The model rejects reasoning effort none and function tools on Chat Completions, so those requests go to Runtime Responses, like openai.gpt-6-astra. Refs mnfst#3113
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3115 +/- ##
=======================================
Coverage 96.21% 96.21%
=======================================
Files 674 674
Lines 39772 39772
Branches 11156 11107 -49
=======================================
Hits 38267 38267
Misses 521 521
Partials 984 984
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
4 issues found across 7 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".changeset/bedrock-runtime-gpt-6-1-sol.md">
<violation number="1" location=".changeset/bedrock-runtime-gpt-6-1-sol.md:5">
P3: This release note overstates the routing behavior: `BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false` deliberately disables the Responses route. Mention the default and opt-out so operators are not misled about how these requests are handled.</violation>
</file>
<file name="packages/backend/src/routing/__tests__/bedrock-runtime-chat-routing.spec.ts">
<violation number="1" location="packages/backend/src/routing/__tests__/bedrock-runtime-chat-routing.spec.ts:109">
P3: `gpt-6.1-sol` is marked `rejectsReasoningNone`, but this test never sends `reasoning_effort: 'none'`; a regression that mishandles that value can pass these assertions. Add an explicit `none` case.</violation>
</file>
<file name="packages/backend/src/routing/proxy/__tests__/provider-client.bedrock-gpt-responses.spec.ts">
<violation number="1" location="packages/backend/src/routing/proxy/__tests__/provider-client.bedrock-gpt-responses.spec.ts:211">
P2: This regression test does not verify that gpt-6.1-sol omits `reasoning_effort`; add the assertion so an unsupported default effort cannot leak onto the Responses request.</violation>
</file>
<file name="packages/backend/src/routing/bedrock-runtime-capabilities.ts">
<violation number="1" location="packages/backend/src/routing/bedrock-runtime-capabilities.ts:59">
P2: This entry is treated as supported for every generic CRIS scope, including `eu.` and `apac.`, although GPT-6.1 Sol exposes only `us.` and `global.` Runtime profiles. Store allowed scopes per catalog entry or validate the profile scope before publishing Runtime endpoints.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Re-trigger cubic
|
|
||
| expect(url).toBe(RUNTIME_RESPONSES_URL); | ||
| expect(sent.tools).toEqual([flatWeatherTool]); | ||
| expect(sent).not.toHaveProperty('reasoning'); |
There was a problem hiding this comment.
P2: This regression test does not verify that gpt-6.1-sol omits reasoning_effort; add the assertion so an unsupported default effort cannot leak onto the Responses request.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/backend/src/routing/proxy/__tests__/provider-client.bedrock-gpt-responses.spec.ts, line 211:
<comment>This regression test does not verify that gpt-6.1-sol omits `reasoning_effort`; add the assertion so an unsupported default effort cannot leak onto the Responses request.</comment>
<file context>
@@ -203,6 +203,15 @@ describe('ProviderClient: Bedrock Runtime GPT chat with function tools and reaso
+
+ expect(url).toBe(RUNTIME_RESPONSES_URL);
+ expect(sent.tools).toEqual([flatWeatherTool]);
+ expect(sent).not.toHaveProperty('reasoning');
+ expect(sent).not.toHaveProperty('messages');
+ });
</file context>
| expect(sent).not.toHaveProperty('reasoning'); | |
| expect(sent).not.toHaveProperty('reasoning'); | |
| expect(sent).not.toHaveProperty('reasoning_effort'); |
| verifiedAt: VERIFIED_AT, | ||
| }, | ||
| { | ||
| modelId: 'openai.gpt-6.1-sol', |
There was a problem hiding this comment.
P2: This entry is treated as supported for every generic CRIS scope, including eu. and apac., although GPT-6.1 Sol exposes only us. and global. Runtime profiles. Store allowed scopes per catalog entry or validate the profile scope before publishing Runtime endpoints.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/backend/src/routing/bedrock-runtime-capabilities.ts, line 59:
<comment>This entry is treated as supported for every generic CRIS scope, including `eu.` and `apac.`, although GPT-6.1 Sol exposes only `us.` and `global.` Runtime profiles. Store allowed scopes per catalog entry or validate the profile scope before publishing Runtime endpoints.</comment>
<file context>
@@ -55,6 +55,14 @@ export const BEDROCK_RUNTIME_CAPABILITY_CATALOG: readonly BedrockRuntimeCapabili
verifiedAt: VERIFIED_AT,
},
+ {
+ modelId: 'openai.gpt-6.1-sol',
+ apis: CHAT_AND_RESPONSES,
+ chatTokenParameter: 'max_completion_tokens',
</file context>
| 'manifest': patch | ||
| --- | ||
|
|
||
| Bedrock discovery now lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses, which drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles. |
There was a problem hiding this comment.
P3: This release note overstates the routing behavior: BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false deliberately disables the Responses route. Mention the default and opt-out so operators are not misled about how these requests are handled.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .changeset/bedrock-runtime-gpt-6-1-sol.md, line 5:
<comment>This release note overstates the routing behavior: `BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false` deliberately disables the Responses route. Mention the default and opt-out so operators are not misled about how these requests are handled.</comment>
<file context>
@@ -0,0 +1,5 @@
+'manifest': patch
+---
+
+Bedrock discovery now lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses, which drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles.
</file context>
| Bedrock discovery now lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses, which drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles. | |
| By default, Bedrock discovery lists the `us.` and `global.` Runtime inference profiles of GPT-6.1 Sol. Chat Completions requests with function tools to these profiles are served through Runtime Responses; set `BEDROCK_RUNTIME_CHAT_VIA_RESPONSES=false` to disable that route. Runtime Responses drops sampling parameters such as `temperature` and `top_p`, as for the other Bedrock Runtime GPT profiles. |
| expect( | ||
| bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }), | ||
| ).toBe(true); |
There was a problem hiding this comment.
P3: gpt-6.1-sol is marked rejectsReasoningNone, but this test never sends reasoning_effort: 'none'; a regression that mishandles that value can pass these assertions. Add an explicit none case.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/backend/src/routing/__tests__/bedrock-runtime-chat-routing.spec.ts, line 109:
<comment>`gpt-6.1-sol` is marked `rejectsReasoningNone`, but this test never sends `reasoning_effort: 'none'`; a regression that mishandles that value can pass these assertions. Add an explicit `none` case.</comment>
<file context>
@@ -102,6 +102,15 @@ describe('bedrockRuntimeChatNeedsResponses', () => {
+ const model = 'us.openai.gpt-6.1-sol';
+
+ expect(bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool] })).toBe(true);
+ expect(
+ bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }),
+ ).toBe(true);
</file context>
| expect( | |
| bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }), | |
| ).toBe(true); | |
| expect( | |
| bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'high' }), | |
| ).toBe(true); | |
| expect( | |
| bedrockRuntimeChatNeedsResponses(model, { tools: [functionTool], reasoning_effort: 'none' }), | |
| ).toBe(true); |
|
@schroderfernando16 please check cubic issues |
Refs #3113
Summary
Adds
openai.gpt-6.1-solto the Bedrock Runtime capability catalog, so discovery offers itsus.andglobal.inference profiles. Onmain, a Bedrock connection lists only the Mantle base idopenai.gpt-6.1-sol.global.openai.gpt-6.1-solandus.openai.gpt-6.1-solare ACTIVE in AWS, but discovery only offers Runtime profiles of catalogued models, and this one was not catalogued.The AWS model card lists the Standard tier, short context (up to 272K input tokens), per 1M tokens: Global CRIS $2.00 in / $10.00 out; US CRIS and Mantle regional $2.20 / $11.00. The Global profile is the cheaper option the issue asks for.
What changes
bedrock-runtime-capabilities.ts: one catalog entry (both APIs,max_completion_tokens,rejectsReasoningNone: true, the model card assourceUrl,verifiedAt: 2026-11-05).manifest, patch).rejectsReasoningNoneis set because of what the Runtime does with this model (below). With the Responses route from #3110, Chat Completions requests with function tools to these profiles go to Runtime Responses.Measured on Bedrock Runtime (
global.openai.gpt-6.1-sol, us-east-1, 2026-11-05)max_tokensmax_completion_tokensonly)reasoning_effortlow / medium / high / xhighreasoning_effortnoneorminimallow, medium, high, xhigh, maxas supported)/v1/responses")highnonenoneunsupported)reasoningreasoning.effortnoneThis is the same behaviour as
openai.gpt-6-astra, which already hasrejectsReasoningNone. Forus.openai.gpt-6.1-solI measured only the no-tools Chat Completions request directly (200); its other cases ran through Manifest (below).Through Manifest
This branch, local build, fresh database, a Bedrock API key. Discovery lists
openai.gpt-6.1-sol,global.openai.gpt-6.1-solandus.openai.gpt-6.1-solnext to the threegpt-6-solones.POST /v1/chat/completionsreturned 200 for both profiles in all four cases: no tools, and function tools with no effort,highandmax. The three tool cases returned a tool call.Not verified, and limits
nullon my local instance, forgpt-6-solas well, so I could not see the $2.00 / $10.00 option appear. The price data comes from theamazon-bedrockprovider of models.dev, which listsglobal.openai.gpt-6.1-solat 2 / 10. This PR makes the profile available; the reporter or a maintainer should confirm the price in the UI.reasoning_effort: "none"with function tools still returns 400: the model rejectsnoneon Responses too.temperature,top_p,stopandseed, as described in fix: serve Bedrock Runtime GPT chat with function tools and reasoning through Responses #3110.openai.gpt-6.1-terra,openai.gpt-5.6-solandopenai.gpt-5.6-terra(ACTIVE profiles, not catalogued). Each needs its own verification, so they are left out of this PR.Tests
Backend unit: 523 suites, 9952 tests passing, with
bedrock-runtime-capabilities.tsat 100%.tsc,eslint(0 errors),prettierand the changeset check are clean. Removing the catalog entry makes 7 of the new tests fail, and restoring it brings them back to passing.Summary by cubic
Adds
openai.gpt-6.1-solto the Bedrock Runtime capability catalog so model discovery lists itsus.andglobal.inference profiles. The profiles follow theopenai.gpt-6-astrabehavior:max_completion_tokensonly, noreasoning_effort: none, and Chat Completions with function tools routed to Runtime Responses, which addresses the #3113 request for the cheaperglobal.profile.Notes
amazon-bedrockprovider and was not visible in the local dashboard.openai.gpt-6.1-terra,openai.gpt-5.6-sol, andopenai.gpt-5.6-terrahave the same discovery gap and are left for separate PRs.Written for commit 29173d3. Summary will update on new commits.