Mapping capabilities and parameters
Logit bias, logprobs, seeds, caching, structured output, context windows — the features that do not map one to one.
Most of a migration between two model providers is mechanical. The message array becomes a slightly different message array, the token limit is spelled differently, the streaming events carry the same text under other names. That part is tedious and it is finishable. What decides whether the migration lands is the small set of things on the source side that have no counterpart on the target side at all — a parameter the new provider does not accept, a response field it never populates, a guarantee it declines to make.
These pages are about that residue. Each one takes a capability, says what the concept actually is, shows how each API expresses it, and then spends most of its length on the part that does not survive the translation: what breaks quietly, what you can rebuild from other primitives, and what you have to stop doing. Where a capability simply does not exist on the target, the honest page is the one that says so and tells you what to do instead.
Mapping Content Moderation and Safety Fields Between APIs
The same safety event arrives as a separate endpoint, a finish-reason value, an empty candidate list or an HTTP 400 depending on whose API you call.
9 min read
What "Function Calling" Meant Before "Tool Calling", and What Changed
The rename from functions to tools changed four shapes at once, and a migration that updates only the request keeps failing on the reply.
10 min read
Fixing "function_call is deprecated, use tool_calls"
Where that warning is actually emitted, the five-line rewrite that clears it, and the four errors a half-finished rewrite produces.
8 min read
Migrating Logit Bias Usage Between Providers
A token-id-keyed bias map is not portable between models, let alone between providers, and most uses of it have a better replacement anyway.
10 min read
What to Do When the Target Provider Has No Logprobs Support
Which uses of token probabilities can be rebuilt from sampling and constrained output, and which cannot be rebuilt at all.
10 min read
Mapping Seed and Determinism Parameters Between APIs
Four providers spell the seed differently and none of them promises it works; the mapping that matters is the list of other things you must pin alongside it.
9 min read
Why "Deterministic" Output Is Not Deterministic After a Migration
The seed you carried across pins the sampler, and the sampler was never the part that differed between the two providers.
9 min read
Migrating a Chatbot's Conversation Memory Format
Converting a framework's stored memory object into a plain message array, including the four cases where the stored object holds something a message array cannot express.
10 min read
What Breaks in a RAG App's Prompt Template After a Provider Swap
Separate the retrieval change from the generation change first, because a provider swap usually moves the embedding model too and that is a different bug.
10 min read
Auditing Every Hardcoded Provider Assumption in a Codebase
Nine grep passes that turn an unknown-size migration into an inventory, ranked by which assumptions fail loudly and which fail silently.
10 min read
Writing an Adapter Layer to Isolate Provider-Specific Code
Build a thin chat interface so that changing model provider touches one file instead of every call site, and know which leaks the interface must not paper over.
10 min read
Migrating Retry and Backoff Logic Between Providers
Why retry logic ported unchanged retries errors that will never succeed, and how to rebuild the retryable-error classifier around the new provider's conventions.
10 min read
Mapping HTTP Status Codes to Error Meaning Across Providers
Why the same status code carries different underlying causes on different model APIs, and where the real discriminator lives in the response.
9 min read
Migrating a Prompt-Caching Setup Between Providers
How explicit cache breakpoints and automatic prefix matching differ in what they demand of your prompt, and what has to be restructured for caching to keep working after a switch.
11 min read
What Happens to Cache Hit Rates Right After a Provider Migration
Why a fresh cache starts at zero hit rate, how long it takes to recover the old cost baseline, and how to tell a warm-up from a structural break.
10 min read
Migrating Structured Output Schemas Between Providers
Which JSON Schema keywords survive the move between providers' structured-output features, and how to write one schema that passes on both.
10 min read
Fixing "Invalid Schema" After Moving Structured Outputs to a New Provider
Reading the error message down to the offending keyword, and fixing the four causes that only appear after a provider switch.
9 min read
Migrating Multi-Modal Prompts Between Providers
Rewriting a prompt that carries an image for a different provider's content-block format, including the encoding difference that silently breaks the payload.
10 min read
Auditing Context Window Assumptions Before a Model Migration
Measuring the largest prompt your code actually sends, against the new model's real limit, before the truncation shows up in production.
10 min read
What Happens When a Migration Target Has a Smaller Context Window
The error you get, the triage procedure that tells you which fix applies, and the honest tradeoffs of truncation, summarisation and chunking.
11 min read
Other topics
- LLM fundamentals & architecture
- Tokens, tokenization & context windows
- Prompt engineering
- Reasoning models & test-time compute
- Multimodal AI: vision, audio, video
- RAG & retrieval
- Embeddings & vector search
- AI agents & tool use
- Structured output & function calling
- Fine-tuning & post-training
- Local inference errors, string by string
- Running local models day to day
- Testing code that calls an LLM
- Snapshot and property testing for model output
- Regression suites for prompts
- Eval gates in CI
- Flaky tests against a model
- Determinism and the cost of testing
- Contract and streaming tests
- Testing tool calls and retrieval
- Inference, serving & latency
- Rolling out a prompt change
- Testing AI systems in practice
- Forecasting a time series
- Machine learning on tabular data
- Geospatial data and models
- Understanding audio that is not speech
- Understanding video
- Core computer vision tasks
- Machine learning on graphs
- Point clouds and 3D
- Evaluation, benchmarks & LLM-as-judge
- Sensor and IoT data
- Logs and event streams
- Models over biological sequences
- Machine learning on molecules
- Embedding and searching code
- Extracting invoices and purchase orders
- Receipts, statements and tax forms
- Insurance policies and contracts
- Deeds, court filings and patents
- Extracting from medical records
- Observability & LLMOps
- CVs, certificates and identity documents
- Shipping, customs and technical documents
- Meetings, email, chat and filled-in forms
- Building an extraction pipeline
- Business, property and inspection documents
- Contract clauses and insurance claims
- Regulated and compliance documents
- Consumer, travel and closing documents
- Mapping one chat API onto another
- SDK and framework migrations
- Hallucination & failure modes
- Re-embedding and model deprecation
- Cutting over between providers
- Parity gaps, shims and legacy endpoints
- Moving between model versions
- Migrating vector stores and caches
- Migrating pipelines and agents
- Contracts, runbooks and rollback
- Auditing a codebase before a cutover
- Compliance and fine-tune migration
- LLM cost engineering
- Routing, cost tracking and multi-tenancy
- What a migration does to your prompts
- AI security & prompt injection
- Privacy, compliance & data residency
- AI governance, policy & society
- Building reliable AI applications
- AI hardware, GPUs & compute
- Open-weight models & local inference
- AI for developers & coding agents
- AI in industry: vertical playbooks
- AGI, superintelligence, alignment & the long future
- Machine learning foundations
- NLP fundamentals & classical tasks
- Data engineering for AI
- Synthetic data & dataset curation
- AI product design & UX
- Search, ranking & recommendation
- Enterprise adoption & change management
- AI careers, skills & teams
- Reading AI research
- AI in science & discovery
- Robotics & embodied AI
- AI economics, markets & business models
- AI myths, hype & media literacy
- Context engineering
- Shipping AI features: patterns & anti-patterns
- Build it: end-to-end AI tutorials
- Python for AI: hands-on recipes
- TypeScript, React and the web
- Frameworks and SDKs
- Errors and troubleshooting
- AI facts, numbers and statistics
- The history of AI
- The maths behind AI
- Architectures beyond the transformer
- Reinforcement learning
- Diffusion and generative media
- Speech, audio and voice engineering
- Benchmarks, one at a time
- AI search visibility
- Infrastructure and operations
- Databases and storage for AI
- Knowledge graphs and structured knowledge
- Classical ML in production
- Regulation, jurisdiction by jurisdiction
- Prompt recipes and pattern library
- AI for people who do not write code
- Writing, media and creative work
- Edge and on-device AI
- Interpretability and model internals
- Field notes
- OpenAI model behaviour
- Claude model behaviour
- Gemini model behaviour
- Llama model behaviour
- Mistral model behaviour
- Qwen model behaviour
- DeepSeek model behaviour
- Cohere model behaviour
- Grok model behaviour
- Small model behaviour
- Hybrid model architectures
- Token cost by language and script
- Transliteration, romanization and script handling
- Locale-correct output
- Multilingual generation quality
- Multilingual pipelines
- The EU AI Act, article by article
- AI under the GDPR and EU data law
- US AI regulation, state and sector
- International AI governance and standards
- AI litigation and enforcement
- Running AI workloads on AWS
- Running AI workloads on Google Cloud
- Running AI workloads on Azure
- AI at the edge: Workers, Vercel and Netlify
- Serving models on Kubernetes
- Operating AI infrastructure
- Quantization formats and what they cost
- llama.cpp, flag by flag
- Ollama and the desktop local-model runtimes
- Local models on Apple Silicon
- Hardware for local inference
- Running speech and embedding models locally
- Model files, adapters and conversion
- VRAM arithmetic for local models