How to Draft a LiteLLM Router Config from a Model List

Router YAML invents sk- keys. Placeholders only from the Secrets list.
The matching generator is the LiteLLM Router Config from a Model List (No Invented API Keys) (Litellm Router Config From Model List No Invented Keys) prompt. Browse related cards in the PromptDig library (Browse more prompts). When a filled run survives, share the version you actually use (Share a prompt).
Map every model line before you emit an entry
Draft a LiteLLM router YAML/JSON sketch from a pasted model list and routing rules. Never invent API keys, spend caps, or unlisted models. Start by filling Inputs, not by asking the model to remember last week's run. If a field is blank, write NONE or NOT IN INPUTS and leave it blank through Generate. The card is built so the model cannot honestly invent a number, owner, URL, or command that you did not paste.
Paste these fields before you hit run:
Model list (name, provider hint, rpm if known): [Models]
Routing rules I lock (or NONE): [Rules]
Fallback order I lock (or NONE): [Fallback]
LiteLLM version I lock (or NONE): [Version]
Secret placeholder style I lock (env var names only or NONE): [Secrets]
Words I must not use: [Banned]
What I must never invent: [Never]
Output format: [Format]
Language: [Lang]
Max model entries: [Max]
That inventory is the honesty ledger. Anything that does not appear there is forbidden in the draft. If you catch yourself adding a nice-to-have after the run, you are no longer using the card. You are ghostwriting. Put the extra fact in Inputs and run again.
Lock fallbacks from Inputs, not from vibes
Generate is numbered on purpose. Do not skip a step because the first paragraph looked done. The early steps exist to stop later prose from smuggling claims.
Walk the Generate list in order:
- Honesty ledger: model count, Rules status, Fallback status, Version status, Secrets status, Lang, Max. Forbidden: invented keys, invented spend, invented models.
- Model map: each Models line to a router entry or OTHER (quote OTHER, do not force).
- Config body: Format as Format. Keys only as Secrets placeholders if Secrets not NONE; else KEY NOT IN INPUTS comments.
- Provenance: each config model mapped to a Models line number.
- Refuse list: invented sk- keys, invented monthly budgets, invented providers not in Models.
- Diff notes: Banned/Never cuts. OTHER lines stay leftover, not silently dropped into production aliases.
- Version note: quote Version or write unknown.
- Compliance pass: Banned/Never hits. Entry count vs Max. Gaps list of five. Format as Format.
If a step asks for a version lock, quote the version from Inputs in the output. If a step asks for a refuse list, keep the refuse list in the published artifact, not in a sidebar you delete. Reviewers should see what the model was not allowed to do.
Refuse invented spend caps and providers
Most failures are the same shape: a missing field gets a confident fill. A conversion rate appears. A Gradle task appears. A flash point appears. A caption appears on a job that asked for slide text only. Your review is to search the draft for numbers, names, and commands, then grep Inputs. No match means cut.
Honor the constraints as hard stops, not vibes:
- LiteLLM router from Models and Rules only. Not a billing essay and not an agent framework tutorial.
- Never invent API keys, spend caps, or unlisted models.
- Stay at or under Max model entries.
- No emojis.
When the card says not legal advice, not certification, not an exam dump, or not a caption engine, that sentence belongs at the top of the output. Deleting it to look more finished is how you inherit risk.
Print entry count against the max
Finish with the compliance pass the prompt already asks for. Quote the banned-word hits. Cut them. Print character counts when the job has a cap. Print word counts when the job has a budget. List gaps as gaps. Five missing facts are more useful than one smooth paragraph.
Tags on the card (litellm router config, no invented api keys, model list routing) are a reminder of the job shape, not an invitation to wander into a neighboring cluster. If you need a different surface, open a different PromptDig card rather than stretching this one.
Fill the card, then run
Replace every bracket. Run on ChatGPT, Claude, or Gemini. Read the ledger first, then the artifact. If the model invents a commit, KPI, DOI, PEL, bid, or logo, discard the run. Tighten Inputs. Run again. Share the filled card that survived, not the first draft that sounded done.