September 25, 2026
For the simple requests that don't need a frontier model, we recommend GMI Router. Your prompt runs verbatim on the model the router selects, so the prompt text you send to GPT-6 Astra today can go through unchanged. You set Cost, Balanced, or Quality on each request, the router reads the task behind the prompt, and it picks from an Allowed Model Pool that your org owner approves. Routing is free during the preview, and you pay only for the model that runs your prompt.
One condition shapes the setup: GMI Router chooses only from the models in your approved pool, so Astra is a routing candidate only if your pool includes it. Requests that must run on Astra itself can stay on your current OpenAI integration while you route everything else, and our team can tell you which models your pool can include.
Other routers handle Astra and your existing code differently. OpenRouter's catalog includes openai/gpt-6-astra, and its Auto Router is called like any other model on an OpenAI-compatible API, though a catalog listing alone does not make a model one of the Auto Router's candidates. Microsoft Foundry model router is a single Foundry deployment, and its current supported-model list includes gpt-6-astra, with availability depending on region and the model subset you configure. Not Diamond recommends a model and leaves the call to you. Amazon Bedrock Intelligent Prompt Routing works only within Amazon, Anthropic, and Meta model families, so it doesn't apply to OpenAI traffic. Whichever you choose, two questions decide whether it pays off: how much of your Astra bill is simple work, and what "without rewriting prompts" costs you in code.
Start with spend, not request counts. Simple requests such as classification, extraction, reformatting, and short summaries are often the majority of calls but a smaller share of the bill, because they are short and produce little output. Long reasoning, code generation, and multi-step agent work use more input, output, and reasoning tokens per call, so a few of those requests can outweigh many simple ones.
Your OpenAI usage logs already hold what you need. For a representative window, such as the last two to four weeks:
The ceiling on savings is then S × (1 − r) of your current Astra bill. As an illustration with round numbers: simple requests at 60% of calls but 25% of spend, moved to a model that costs one tenth as much per request, give a ceiling of 25% × 90%, or 22.5% of the bill. The formula assumes the same set of requests, answers from the lower-cost model that meet your quality bar, and an r that reflects the full cost of each request, including retries and any change in output length. Real savings land below the ceiling, because the router keeps some simple-looking requests on stronger models when quality calls for it, and because hard requests still pay frontier prices.
For a sense of what routing does across a broad mix of tasks, GMI's internal benchmark across eight task categories found that GMI Router in Quality mode scored 2.4 points higher than always using GPT-5.5, at 28% lower cost per task, and that Balanced mode cost 84% less per task than always using Opus 4.8. Those figures compare against GPT-5.5 and Opus 4.8, not Astra; they are directional and not independently audited, and routing ran within the allowed pool. Your own number comes from S and r.
A router can leave your prompts alone and still require code changes. Separate the change into three layers.
The prompt text. The test for any router is whether the prompt that reaches the model is the one you sent. GMI Router runs your prompt verbatim: system messages, few-shot examples, and user content arrive as written.
The request wrapper. Your application calls a new endpoint with a new key. GMI Router has a dedicated endpoint, authenticated with your GMI API key, and it takes the same OpenAI-style messages array you already build:
curl -X POST https://console.gmicloud.ai/api/v1/ie/recommendation/autoroute \
-H "Authorization: Bearer $GMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "system", "content": "<your existing system prompt>" },
{ "role": "user", "content": "<your existing user message>" }
],
"mode": "cost",
"stream": false
}'
The documented request fields are messages, mode, and stream, and unknown fields are ignored. The model field goes away, because the router chooses. Calls that depend on tool definitions, a JSON response format, or specific sampling settings are the ones to keep on a direct model endpoint. The router is stateless, so resend the full conversation on every request, the same way a chat completions call works.
The response parser. A non-streaming response returns model, message, and a routing_metadata object with selected_model, task_type, selected_mode, fallback_models, and recommendation_id. Point your parser at message instead of a choices array, and log the metadata. Streaming is the default and sends the routing metadata as a separate event after the text. The GMI Router documentation covers both formats and the status codes.
For most applications that is a change to one API client, not to the prompts.
The worry with a cost-focused router is that it sends a hard request to a weak model. GMI Router is designed around the opposite split: it saves your strongest models for hard tasks and uses cost-efficient models where quality holds. Two controls decide how far it leans each way.
With no routing rules in place, the simplest starting point is to set the mode per call site rather than per prompt. Background jobs such as tagging and summarization can send mode: "cost", customer-facing answers can send balanced, and the features where a wrong answer is expensive can send quality. That is one setting per feature, not a rule set to maintain, and the router still decides each request inside that setting. Requests that must run on Astra itself and are not covered by your pool stay on your existing OpenAI call.
The routers differ on the two points that matter here: whether Astra can stay among the candidates, and what changes in your code.
| Router | Can Astra stay a candidate? | What changes in your code |
|---|---|---|
| GMI Router | The router picks only from your approved pool, so Astra is a candidate only if your pool includes it | New endpoint and GMI API key; request carries messages, mode, stream; response parser reads message and routing_metadata; prompts unchanged |
| OpenRouter Auto Router | OpenRouter's catalog includes openai/gpt-6-astra, but the Auto Router chooses among the models it ranks for each task type and cost tier; allowed_models and excluded_models only narrow that set, so a catalog listing does not by itself make Astra a candidate |
Set model to openrouter/auto on an OpenAI-compatible API, plus an OpenRouter key and base URL |
| Microsoft Foundry model router | Microsoft's current router model list includes gpt-6-astra; availability depends on region and the configured model subset | Deploy the router as a Foundry deployment and call it like any other Foundry model; mode and model subset are set per deployment |
| Not Diamond | Not Diamond's published supported-model list for routing goes up to GPT-5.5 among OpenAI models | Add a call that returns a recommended model, then call that model yourself with your existing SDK |
| Amazon Bedrock Intelligent Prompt Routing | Supported models come from the Amazon, Anthropic, and Meta families only, with exactly two models from one family per configured router | Not an option for OpenAI traffic without changing model families |
Two notes on prompts. OpenRouter documents a context-compression plugin that removes or truncates messages from the middle of a prompt, on by default for endpoints with 8,192 tokens of context or less, so check that setting before you count on verbatim delivery. Not Diamond also sells prompt optimization, which rewrites a prompt for each target model; its routing works without it.
Run a short check before moving production traffic. Paste a handful of your simple and hard Astra prompts into Test Routing in the GMI console and see which model each mode selects. Then send a few hundred logged simple requests through the routing endpoint with mode: "cost", which runs the selected model and bills its usage. A separate API key for this batch makes the trial traffic easier to pick out. Compare the answers with the Astra answers you already have and record selected_model and task_type for each request. After the first batch, confirm how the routed requests appear on the Serverless Usage page (it can be filtered by API key and model), then recompute r from what you actually paid. S × (1 − r) then becomes a number you can defend in a budget review.
Routing pays when simple work is a real share of spend. A few patterns cap the savings:
Open Test Routing, paste the prompts you send to Astra most often, and compare the picks across Cost, Balanced, and Quality. To discuss what your Allowed Model Pool can include for your workloads, contact our team.
Colin Mo
GMI Cloud helps you architect, deploy, optimize, and scale your AI strategies
