This prompt is a machine-to-machine instruction designed for a routing proxy or orchestration layer, not for direct human interaction. Its primary job is to activate a fallback model when a primary model request fails due to specific, detectable conditions: capacity exhaustion (e.g., rate limiting, 503 errors), unacceptable latency, a hard refusal from a safety policy, or an output that fails a defined quality threshold. The prompt's purpose is to assemble a new, self-contained request for a secondary model, carrying forward the essential context and explicitly constraining the fallback model's behavior to prevent it from attempting actions it isn't authorized or equipped to perform.
Prompt
Fallback Model Routing Instruction Prompt

When to Use This Prompt
Defines the precise operational context for activating a fallback model routing instruction within a model cascade, and clarifies when it should not be used.
You should integrate this prompt into your application's failure-handling middleware. When your primary model call throws a qualifying exception, your code must capture the original [INPUT], the [CONVERSATION_HISTORY], and the specific [FAILURE_REASON]. These are injected into the prompt's placeholders before it is sent to the designated fallback model. The prompt instructs the fallback model to acknowledge its secondary role, operate within a strict [CAPABILITY_CONSTRAINT], and produce an output that conforms to the original [OUTPUT_SCHEMA] where possible. A critical implementation detail is to log the routing_criteria and fallback_model_id alongside the response for observability, allowing you to monitor cascade frequency and fallback model performance.
Do not use this prompt for simple retry logic against the same model; that wastes tokens and latency on a model that has already failed. It is also not a substitute for application-level routing decisions based on cost or intent classification—those decisions should be made before a request fails. This prompt is exclusively for the reactive 'break-glass' scenario where a primary model is unavailable or non-performant, and you need a structured, constrained handoff to a backup system to maintain service availability.
Use Case Fit
Where the Fallback Model Routing Instruction Prompt works, where it fails, and the operational prerequisites for production use.
Good Fit: Multi-Model Cascades
Use when: you operate a primary model (e.g., GPT-4) and a cheaper or faster fallback (e.g., GPT-3.5, Claude Haiku) for cost or latency optimization. Guardrail: define explicit routing criteria (error codes, timeout thresholds, content policy flags) so the prompt triggers deterministically, not on ambiguous quality signals.
Bad Fit: Single-Model Deployments
Avoid when: you only have one model available or your fallback is the same model with a different prompt. Guardrail: if you lack a distinct fallback model, use a retry or self-correction prompt instead. Routing to the same model with a different instruction is prompt chaining, not model routing.
Required Input: Routing Criteria Schema
What to watch: the prompt must receive a structured routing decision payload (failure type, error code, confidence score) from the application layer. Guardrail: never ask the failing model to decide whether to route itself. Use application-level checks (HTTP status, parse failure, content filter flag) to trigger the routing prompt.
Required Input: Context Transfer Package
What to watch: the fallback model needs the original user request, any partial results, and the failure reason. Guardrail: define a strict context transfer schema (original_input, failure_reason, partial_output, user_messages) and validate it before calling the fallback. Missing context causes the fallback to hallucinate prior work.
Operational Risk: Silent Context Loss
What to watch: tool outputs, retrieved documents, or multi-turn history may not transfer cleanly to the fallback model, especially if context windows differ. Guardrail: log the full context package sent to the fallback model and compare output quality against a baseline where the primary model succeeded. Alert on context truncation.
Operational Risk: Capability Mismatch
What to watch: the fallback model may lack tool-calling, structured output, or multilingual capabilities that the primary model had. Guardrail: declare fallback model capabilities explicitly in the routing prompt and instruct it to degrade gracefully (e.g., 'You cannot call tools. Explain what you would need and ask the user to retry later.').
Copy-Ready Prompt Template
A copy-ready system prompt for a fallback model that must take over a conversation when the primary model fails, preserving context and clearly communicating its limited capabilities.
This prompt template is designed to be injected as the system instruction for a secondary, fallback model in a model-cascading architecture. It is activated when the primary model's request fails due to a timeout, an error response, or a content filter refusal. The prompt's core job is to prevent a dead-end user experience by acknowledging the handoff, summarizing what it knows, and transparently declaring its reduced capability set. It is not a general-purpose assistant prompt; it is a reliability contract.
code<SYSTEM> You are the fallback assistant. The primary AI model that was handling this user's request is currently unavailable. Your job is to provide a graceful, honest, and helpful degraded experience. You must follow these rules in strict priority order: 1. **Acknowledge the Handoff:** Begin your first response by briefly and calmly informing the user that the primary assistant is temporarily unavailable and that you are a backup system with limited capabilities. 2. **Summarize the Context:** Review the provided conversation history in [CONVERSATION_HISTORY]. Identify the user's last clear intent and any unresolved questions. State what you understand the user was trying to do. 3. **Declare Your Capabilities:** You are a fallback model. Your capabilities are strictly limited to the following: - Answering general knowledge questions based on your training data. - Summarizing the conversation so far. - Helping the user draft a message to save for later. - Guiding the user to alternative support channels listed in [ESCALATION_PATHS]. You are FORBIDDEN from performing any action not on this list, including calling tools, accessing external data, or making changes to user accounts. 4. **Offer a Path Forward:** Based on the user's intent, suggest one of the following: - Retrying the request later when the primary system may be available. - Saving the current state or draft for later use. - Escalating to a human support channel as defined in [ESCALATION_PATHS]. 5. **Maintain Tone:** Your tone must be helpful, apologetic for the inconvenience, and transparent about your limitations. Do not pretend to be the primary assistant. Do not fabricate capabilities. 6. **Safety First:** The safety policies in [SAFETY_POLICY] are your highest priority and override all other instructions. If a request violates these policies, you must refuse using the standard refusal language. [CONVERSATION_HISTORY] [ESCALATION_PATHS] [SAFETY_POLICY] </SYSTEM>
To adapt this template, your orchestration layer must replace the bracketed placeholders before the request reaches the fallback model. [CONVERSATION_HISTORY] should be a compressed, structured summary of the last N turns, not the raw full history, to manage context window limits. [ESCALATION_PATHS] must be a concrete list of available human queues, help center URLs, or support ticket forms. [SAFETY_POLICY] should be a copy of the same top-level safety and refusal instructions used by the primary model to ensure consistent policy enforcement. The prompt's strict capability declaration is a defense-in-depth measure; it prevents the fallback model from hallucinating tool calls or actions it cannot execute, which is a common failure mode in degraded states.
Prompt Variables
All placeholders that must be populated by the orchestration layer before the fallback model receives the request. Missing or null values will cause routing ambiguity or context loss.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[PRIMARY_MODEL_ID] | Identifier of the model that failed or timed out | gpt-4o-2024-08-06 | Must match a known model ID in the routing registry; reject unknown IDs |
[FAILURE_REASON] | Machine-readable reason code for the primary model failure | timeout | Must be one of: timeout, rate_limit, content_filter, tool_error, max_tokens, null_output, parse_failure, unknown |
[ORIGINAL_SYSTEM_PROMPT] | The full system prompt sent to the primary model | You are a financial analyst assistant... | Must be non-null and non-empty; truncate to [MAX_CONTEXT_TOKENS] if needed |
[CONVERSATION_HISTORY] | Last N turns of the conversation before failure | [{"role":"user","content":"..."}] | Must be valid JSON array; max [MAX_HISTORY_TURNS] turns; null allowed if no history exists |
[LAST_USER_MESSAGE] | The most recent user input that triggered the failed request | What is the Q3 revenue breakdown? | Must be non-null and non-empty; this is the request the fallback model must attempt |
[TOOL_DEFINITIONS] | Tool schemas available to the primary model, if any | [{"name":"search",...}] | Must be valid JSON array of OpenAI-compatible tool schemas; null allowed if no tools were in use |
[FALLBACK_CAPABILITY_CONSTRAINTS] | Explicit list of capabilities the fallback model lacks compared to primary | No tool calling, no image analysis, max 4K output tokens | Must be a non-empty string; used to set user expectations and prevent the fallback model from attempting unsupported actions |
[MAX_CONTEXT_TOKENS] | Token budget ceiling for the assembled fallback prompt | 8000 | Must be a positive integer; orchestration layer must truncate [CONVERSATION_HISTORY] and [ORIGINAL_SYSTEM_PROMPT] to fit within this budget minus output reservation |
Implementation Harness Notes
How to wire the fallback model routing instruction into a model routing proxy or orchestration layer with validation, retries, and observability.
This prompt is designed to sit inside a model routing proxy or orchestration layer, not as a standalone chat instruction. When a primary model returns a failure signal—such as a refusal, a timeout, a malformed output that fails validation, or an explicit FALLBACK_REQUIRED flag—the routing layer should inject this prompt as the system instruction for the fallback model call. The prompt expects the routing layer to provide [ORIGINAL_USER_REQUEST], [PRIMARY_MODEL_FAILURE_REASON], [PRIMARY_MODEL_PARTIAL_OUTPUT] (if any), and [FALLBACK_MODEL_CAPABILITIES] as runtime variables. Do not hardcode these values into the prompt template; they must be populated dynamically by the harness at invocation time.
Wiring pattern: In a typical proxy implementation, you'll maintain a model registry with capability tags (e.g., supports_function_calling, max_context_tokens, supports_vision). When the primary model fails, the router queries this registry to select an appropriate fallback and populates [FALLBACK_MODEL_CAPABILITIES] with a concise, machine-readable list of what the fallback can and cannot do. The harness should also attach the original conversation context, but truncate it to fit the fallback model's context window before injection. A pre-call validator should confirm that all required placeholders are non-empty; if [PRIMARY_MODEL_PARTIAL_OUTPUT] is null, the harness should substitute an explicit [NO_PARTIAL_OUTPUT_AVAILABLE] token to prevent the fallback model from hallucinating prior work.
Validation and retries: After the fallback model responds, run the output through the same schema validator used for the primary model. If the fallback also fails validation, do not retry the fallback model more than once with the same prompt—instead, escalate to a human review queue with the full failure chain logged. For high-risk domains, implement a mandatory human-approval gate before any fallback-generated output reaches the end user. Log every routing decision with: primary model ID, failure reason, fallback model ID, latency for both calls, placeholder population audit (were all variables filled?), and whether the fallback output passed validation. This trace data is essential for tuning routing thresholds and detecting when fallback models are being overused due to primary model degradation.
What to avoid: Do not use this prompt as a catch-all error handler that swallows failures silently. If the fallback model also fails, surface a clear degradation message to the user rather than looping through additional models indefinitely. Never pass raw stack traces or internal error codes into [PRIMARY_MODEL_FAILURE_REASON]—sanitize them into user-safe descriptions. Finally, test your harness with simulated primary failures (timeouts, refusals, malformed JSON, empty responses) before production deployment to ensure the routing logic correctly populates all placeholders and that the fallback model's output contract matches what downstream consumers expect.
Expected Output Contract
Validation rules for the fallback model's structured response. Every field must be parseable and verifiable before the response reaches the user or downstream system.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
routing_decision | string enum | Must equal 'fallback_activated'. Any other value triggers a routing error and retry. | |
fallback_model_id | string | Must match the exact model identifier string provided in [FALLBACK_MODEL_ID]. Case-sensitive check. | |
primary_failure_reason | string | Must be a non-empty string from the allowed enum in [FAILURE_REASON_CODES]. Reject if missing or unrecognized. | |
context_preserved | boolean | Must be true or false. If true, the [CONTEXT_INTEGRITY_HASH] must match the hash of the transferred context object. | |
capability_constraints | array of strings | Must be a non-empty array. Each element must match an entry in [FALLBACK_CAPABILITY_LIST]. Reject if array is empty or contains unknown capabilities. | |
user_facing_message | string | Must be a non-empty string under 300 characters. Must not contain the primary model's name or imply full capability. Reject if empty or over character limit. | |
escalation_flag | boolean | Must be true if primary_failure_reason is in [CRITICAL_FAILURE_CODES], otherwise false. Inconsistency triggers a validation error. | |
trace_id | string | Must be a valid UUID v4 string matching the pattern ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$. Reject on format mismatch. |
Common Failure Modes
Model routing cascades fail silently, expensively, or confusingly. These are the most common production failure patterns and the guardrails that catch them before users notice.
Routing Criteria Ambiguity
What to watch: The primary model completes the request but produces a low-quality or irrelevant response that doesn't trigger the fallback threshold. The routing prompt lacks clear, measurable failure signals beyond HTTP errors. Guardrail: Define explicit, testable routing criteria—empty output, schema validation failure, confidence below threshold, or specific error codes. Never route on vague signals like 'bad response.'
Context Truncation on Handoff
What to watch: When routing to the fallback model, the full conversation history, tool outputs, or system instructions exceed the fallback model's context window. Critical context is silently dropped mid-escalation. Guardrail: Implement a context compression step before handoff that prioritizes the original request, failure reason, and essential state. Validate that the compressed context fits within the fallback model's documented limits.
Capability Mismatch After Routing
What to watch: The fallback model receives the request but lacks the tool access, function definitions, or domain knowledge the primary model had. It either hallucinates capabilities or fails with a different error, creating a cascade. Guardrail: Attach an explicit capability declaration to the fallback prompt stating exactly which tools and data are available. Instruct the fallback model to refuse gracefully if the request exceeds declared capabilities rather than attempting unsupported actions.
Infinite Routing Loops
What to watch: The fallback model also fails, and the routing logic sends the request back to the primary model or to another fallback tier without a termination condition. Latency spikes and costs multiply with no resolution. Guardrail: Implement a hard retry budget with a maximum cascade depth. After the final fallback tier fails, route to a static degradation response or human queue. Log every routing hop with a trace ID for observability.
Silent Degradation Without User Signal
What to watch: The system successfully routes to a fallback model and returns a response, but the user has no indication that capabilities are reduced. They trust a degraded answer as fully capable. Guardrail: Require the fallback response to include a capability transparency marker when operating in degraded mode—brief, honest, and actionable. Validate that every fallback output path includes this signal before returning to the user.
Routing Decision Not Observable
What to watch: The routing decision happens in application code with no structured telemetry. When users report quality issues, the team cannot determine which model served which request or why routing occurred. Guardrail: Emit a structured trace event for every routing decision including: trigger reason, primary model ID, fallback model ID, latency added, context size before and after compression, and final outcome. Feed into existing observability pipelines for alerting and debugging.
Evaluation Rubric
Run these checks against a golden dataset of primary model failure scenarios to validate routing decision accuracy and context preservation.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Routing trigger accuracy | Fallback route activated for all primary model failure types in golden set; no activation for healthy primary responses | Fallback route missed on timeout, refusal, or malformed output; false activation on valid primary output | Run golden dataset with simulated primary failures; compare routing decisions to expected labels |
Context preservation across model boundary | All fields in [CONTEXT_TRANSFER_SCHEMA] present in fallback model input with no hallucinated values | Missing required context fields; fabricated user intent or history not present in original conversation | Diff original context payload against fallback model input; assert field-level equality for transferred fields |
Fallback capability constraint compliance | Fallback model output contains only actions within [FALLBACK_CAPABILITY_LIST]; no attempted tool calls outside declared scope | Fallback model attempts tool calls or actions not in capability list; promises capabilities it cannot fulfill | Parse fallback output for tool calls; assert all function names exist in capability allowlist |
Routing latency threshold | Routing decision completes within [MAX_ROUTING_LATENCY_MS]; fallback model receives context within timeout window | Routing decision exceeds latency threshold; context transfer timeout causes fallback model to operate with stale or missing state | Instrument routing step with timing; assert p95 latency below threshold across 100 runs |
User-facing transition message quality | Transition message includes reason code from [ESCALATION_REASON_CODES], honest capability statement, and next step | Transition message is empty, misleading about cause, or promises full capability when degraded | LLM-as-judge eval against rubric: honesty score >= 4/5, actionability score >= 4/5, tone consistency with [BRAND_VOICE] |
Retry exhaustion before escalation | Escalation occurs only after [MAX_RETRY_ATTEMPTS] exhausted; retry count logged accurately in trace | Escalation triggers before retry budget exhausted; retry count missing or incorrect in audit fields | Inject failures that resolve on retry N; assert escalation only fires when N > max retries; parse retry count from trace |
Routing decision audit trail completeness | Audit record contains: timestamp, trigger reason, primary model ID, fallback model ID, context hash, routing latency | Missing audit fields; null values in required fields; context hash mismatch prevents traceability | Schema-validate audit output against [AUDIT_SCHEMA]; assert all required fields non-null; verify context hash matches payload |
Fallback model output validation | Fallback output passes [OUTPUT_SCHEMA] validation with same strictness as primary model output contract | Fallback output fails schema validation; produces format inconsistent with downstream parsers; missing required fields | Run output validator on fallback responses; assert pass rate >= primary model pass rate on same golden inputs |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single fallback model and minimal routing logic. Hardcode the fallback model name and keep context transfer simple: pass the original user message and the primary model's error type. Skip structured output requirements for the routing decision.
codeIf the primary model returns an error or empty response, route to [FALLBACK_MODEL] with the original user input and a note: 'Primary model failed with [ERROR_TYPE]. Please respond to the user's request.'
Watch for
- No validation that the fallback model actually received the full context
- Silent failures when the fallback model also errors
- Routing decisions made on ambiguous signals (partial outputs, timeouts)

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us