Skip to content

Moving between model versions

Model name strings, minor version bumps and leaving a managed assistants API for your own loop.

Changing which model your application calls looks like a one-line diff, and that is most of the trouble. The string you edit is not a stable identifier: depending on which suffix it carries it is either a pointer the provider repoints under you, or a frozen snapshot that will one day stop resolving. Neither of those is visible in the diff, and neither is visible in the response unless you went looking for it. The same one line can therefore mean “nothing changes until I say so” or “this changes whenever they ship”, and most codebases contain both without anyone having chosen.

These pages work outward from that. Where the identifier lives and how each host spells it; what a same-family version bump actually moves and what it leaves alone; how to build a harness that answers the question for your prompts rather than in general; and — at the far end of the same problem — what you take on when you leave a provider’s managed threads-and-runs API and run the loop yourself. The last two pages are about one migration, but the accounting they do is the accounting every managed abstraction eventually asks for.

Checking Model Name Strings Before a Migration

Why a model identifier is either a mutable pointer or an expiring snapshot, and which of the two you are holding.

9 min read

A Checklist for Rotating Out a Deprecated Model String

The places a hardcoded model identifier hides — fallbacks, fixtures, migrations, dashboards — and an order of operations that misses none of them.

9 min read

What Actually Changes When You Bump a Model's Minor Version

The five things a same-family snapshot bump can move — distribution, tokenisation, defaults, refusal boundary and tool formatting — and the two it cannot.

9 min read

Testing Prompt Behaviour Before and After a Model Version Bump

A small harness that runs a fixed prompt set against two model snapshots and reports structural divergence rather than text difference.

10 min read

Migrating Away From a Provider's Native Assistants API

Mapping threads, runs, tool submission and file retrieval onto an explicit chat loop you own, including the parts with no counterpart.

11 min read

What You Lose Moving From a Managed Threads API to Your Own Loop

A managed threads and runs abstraction is a set of decisions, not a convenience, and leaving it means making all of them yourself.

9 min read

Other topics