Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat: add GPT-6 Astra to the known models catalog, price book, and chatd - #28955

Merged
ibetitsmike merged 3 commits into
mainfrom
mike/gpt-6-astra-prices
Sep 4, 2026
Merged

feat: add GPT-6 Astra to the known models catalog, price book, and chatd#28955
ibetitsmike merged 3 commits into
mainfrom
mike/gpt-6-astra-prices

Conversation

@ibetitsmike

@ibetitsmike ibetitsmike commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

Add GPT-6 Astra to the Agents-page known models list so it appears as a suggestion when an admin adds an OpenAI chat model in /agents settings, pick up its pricing in the AI Bridge price book, and teach chatd the two Astra facts the pinned provider SDK does not know: it speaks the Responses API and it rejects the none reasoning effort.

OpenAI released gpt-6-astra today (2026-09-03). models.dev does not list it yet, so overrides.jq injects the model from OpenAI's published model page and pricing table, guarded to fail the pipeline once upstream lists it so the injection gets dropped instead of shadowing upstream data. curation.json suggests it first under openai (ahead of gpt-5.6-sol, which it supersedes), and make gen/aibridge-prices regenerated both outputs. The chatd change (second and third commits) came out of Codex review. fantasyopenai.IsResponsesModel matches a static list plus gpt-4/gpt-5 substrings, so gpt-6-astra resolved to Chat Completions, where Astra does not support function calling. chatopenai.UsesResponsesAPI now owns the unset-override decision for both the client (WithResponsesAPIFunc) and TransportFor, defaulting Astra to Responses; openai_config.use_responses_api still wins when set. applyReasoningEffort clamps none and minimal to low for Astra (OpenAI's migration guidance), since the picker offers every level up to the configured max and the model config has no minimum. Both are red-green tested; ARCHITECTURE.md carries TODO markers in the two affected sections per the chatd rule.

Values

Field Value Source
model id gpt-6-astra (the only published snapshot/alias; there is no gpt-6 alias) https://developers.openai.com/api/docs/models/gpt-6-astra
display name GPT-6 Astra model page title
context window 1,050,000 (limit.context); 922,000 max input tokens (limit.input) model page
max output tokens 128,000 model page
input / cached input / cache write / output $10.00 / $1.00 / $12.50 / $50.00 per 1M tokens (Standard) https://developers.openai.com/api/docs/pricing (Standard table) and the model page
long-context tier (cost.tiers, informational; the generator emits flat prices only) above 272K input tokens: $20.00 / $2.00 / $25.00 / $75.00, i.e. 2x input and cache rates and 1.5x output for the full request pricing page Standard table and model page notes
reasoning efforts low, medium, high, xhigh, max; none returns HTTP 400 model page; https://developers.openai.com/api/docs/changelog
curated reasoningEffort medium editorial, same as gpt-5.6-sol; OpenAI publishes no default effort for Astra
knowledge cutoff 2026-04-30 model page
modalities and features text + image in, text out; function calling (Responses API only), structured outputs, streaming, prompt caching model page; changelog
unsupported parameters temperature, top_p, logprobs (temperature: false in the injected record) changelog

Known gap, unchanged by this PR: the price book is a flat per-model row, so Astra's >272K tier (like Sol's, 5.5's, 5.4's, and Gemini's upstream tiers) is not applied by aibridgedserver/cost.go; the tier is recorded in the injected cost.tiers for when tier-aware accounting lands, and the dogfood default entry caps context at 272,000.

Not published by OpenAI and therefore not set: a default reasoning effort for Astra, and any Azure, Bedrock, OpenRouter, or Vercel listing. The change is openai-only; the extra provider rows that exist for gpt-5.6-sol come from models.dev and will follow for Astra once upstream lists them. Batch/Flex (50%) and Fast mode (2x) pricing is documented on the pricing page but the price book carries Standard rates only, as for every other model.

File Change
scripts/aibridgepricesgen/overrides.jq guarded gpt-6-astra injection under openai
scripts/aibridgepricesgen/curation.json gpt-6-astra first under openai with reasoningEffort: medium
knownModelsGenerated.json new gpt-6-astra entry (1,050,000 context, 128,000 max output, $10 / $50 / $1 cache read / $12.5 cache write per 1M tokens); openrouter/deepseek/deepseek-v4-flash, openrouter/deepseek/deepseek-v4-pro, and vercel/zai/glm-5.3 repriced upstream
coderd/x/chatd/chatopenai/transport.go, chatprovider/chatprovider.go UsesResponsesAPI + IsGPT6Astra; the OpenAI client always gets a WithResponsesAPIFunc returning the decision ModelFromConfig resolves once through the same helper as TransportFor
coderd/x/chatd/chatprovider/reasoningeffort.go openAIReasoningEffort clamps none/minimal to low for Astra
coderd/x/chatd/ARCHITECTURE.md TODO markers in the reasoning-effort and OpenAI transport sections
coderd/aibridge/prices/data/prices.json added openai/gpt-6-astra; upstream drift since the last refresh: new openrouter/inclusionai/ling-3.0-flash-fin and vercel/zai/glm-5.3-fast, and 13 repriced rows (openrouter deepseek-chat, deepseek-chat-v3.1, deepseek-v4-flash, deepseek-v4-flash-vision-exp, deepseek-v4-pro, deepseek-v4-pro-0813, qwen2.5-vl-72b-instruct, qwen3.8-27b, tencent/hy3, ~moonshotai/kimi-latest, ~z-ai/glm-flash-latest, ~z-ai/glm-latest; vercel zai/glm-5.3)

Validation: go test ./scripts/aibridgepricesgen/... ./coderd/aibridge/prices/... ./coderd/x/chatd/chatopenai/ ./coderd/x/chatd/chatprovider/ plus the transport, Responses, and reasoning-effort tests in ./coderd/x/chatd/, vitest run on knownModels/ (52 tests), make lint/ts, golangci-lint on the touched packages, and biome check on the changed JSON all pass.

Companion dogfood PR enabling the model on dev.coder.com: https://github.com/coder/dogfood/pull/465

Xum opened this PR on behalf of @ibetitsmike.

OpenAI released gpt-6-astra on 2026-09-03 and models.dev does not list it yet, so overrides.jq injects the model from OpenAI's published model page and pricing table (guarded to fail once upstream lists it), curation.json suggests it ahead of gpt-5.6-sol, and make gen/aibridge-prices regenerates prices.json and knownModelsGenerated.json.

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-04T09:00:55.174972Z f7c11e8 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4388a300be

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/aibridgepricesgen/curation.json
Comment thread coderd/aibridge/prices/data/prices.json
Comment thread scripts/aibridgepricesgen/curation.json
…mp its efforts

The pinned fantasy SDK decides the OpenAI wire format from a static known-model list plus gpt-4/gpt-5 substring checks, so gpt-6-astra fell back to Chat Completions, where Astra does not support function calling. chatopenai.UsesResponsesAPI now owns the unset-override decision for both the client and TransportFor and defaults Astra to Responses. Astra also rejects the none effort (HTTP 400) and lists no minimal, so applyReasoningEffort clamps both to low for it.
@ibetitsmike ibetitsmike changed the title chore: add GPT-6 Astra to the known models catalog and price book feat: add GPT-6 Astra to the known models catalog, price book, and chatd Sep 3, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 23ae68a08d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread coderd/x/chatd/chatprovider/chatprovider.go Outdated
…truction

Snapshot the Responses decision instead of dereferencing the config override inside the SDK callback, so the client cannot drift from the transport NewModel records.

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: f7c11e8e8c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


During generation preparation, the effective effort is resolved as the chat's `last_reasoning_effort` if set, else the config's `default`; clamped to the config's `max` on the global scale `none < minimal < low < medium < high < xhigh < max`; and passed through to the provider. The provider verifies whether the configured value is valid for that model at runtime. If the model config has no `reasoning_effort`, any user-selected value is ignored. The resolved value is injected into the provider-native options by `chatprovider.ProviderOptionsForCall`, which converts the model config and applies the effort in one step. For Anthropic, the fantasy provider converts effort into enabled budget thinking on models older than Claude 4.6, which reject adaptive thinking.

TODO: document that `applyReasoningEffort` clamps `none` and `minimal` to `low` for GPT-6 Astra (`chatopenai.IsGPT6Astra`), which rejects `none` with HTTP 400 and lists no `minimal` effort.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove changes to that file.

@ibetitsmike
ibetitsmike marked this pull request as ready for review September 4, 2026 08:57
@ibetitsmike
ibetitsmike merged commit 9cd66d3 into main Sep 4, 2026
37 checks passed
@ibetitsmike
ibetitsmike deleted the mike/gpt-6-astra-prices branch September 4, 2026 09:19
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants