Launch in Days, Not Weeks
Professional one-page website. Only a few slots left this month
A model may need replacing because its provider retires it, its behaviour no longer meets requirements, or another option performs better in your evaluation. Separating model integration from application logic can reduce the scope of that change. It does not guarantee a configuration-only upgrade.
Model and API lifecycles can require planned migrations. Providers publish retirement notices; for example, OpenAI lists deprecations and shutdown dates. Track the exact models and endpoints your system uses. A new version can affect behaviour, supported features, and cost, so test it rather than assuming improvement.
Tight coupling creates a standing cost: model-specific prompt workarounds, SDKs called from deep inside business logic, fine-tuning jobs that only exist on one vendor, and no baseline for “what good looks like.” When the vendor deprecates the ID, you find all of that at once.
A proposed design is to keep business rules in application code, model interaction behind an interface, and prompts under version control. For example, an internal assistant could put retrieval, permissions, and ticket-writing above a LanguageModel interface. Switching providers would then involve an adapter, prompt testing, and any feature gaps. This is an illustrative design, not a claim about a completed Fernside client project.
Separate “talk to a model” from “run the business.”
[Tickets, CRM, permissions, RAG]
|
v
Application services
|
v
LanguageModel port (your interface)
|
+--------+--------+
v v v
Adapter Adapter Adapter
(OpenAI) (Claude) (Gemini / Llama host)
The port should look like your needs, not like one vendor’s REST resource: messages in, tools in, text or structured data out, plus usage (tokens, latency, model ID). Adapters translate. They are allowed to use provider extras. prompt caching, specific tool protocols. behind a capability flag. The application must not sprinkle if model == "gpt-…" through domain code.
Practical rules:
Retrieval belongs on the same side of the line as the application, not inside the adapter. Chunk IDs, scores, and citations are your data. The model only sees text you chose to send. That is what lets you change AI provider without touching the knowledge base.
Version prompts alongside the models and tests they were evaluated with. Recheck them when the model changes.
answer.v12.claude and answer.v12.gpt can share the same tool schema and output contract. If a variant cannot meet the contract, that model does not ship on that task.Run the existing prompt on the candidate model and compare the results with the baseline. Change instructions where the results justify it. Neither automatic prompt rewriting nor blindly retaining every workaround is a reliable migration method.
You cannot unit-test your way to “this model is safe.” You need a fixed evaluation set and a habit of running it.
Build a golden set of representative inputs and expected outcomes. A small initial set can expose obvious problems, but no fixed count such as 50–200 proves suitability for every assistant. Include important task types, known failures, access-control cases, conflicting sources, and adversarial inputs, then expand coverage according to risk.
On every candidate model or prompt version, run the set and compare to the current production baseline:
Have a qualified reviewer examine failures and a sample of accepted outputs. Validate automated graders against human judgements. Set task-specific acceptance criteria and explain how the test set supports them; a single overall average can hide a critical regression.
Schedule the change when the responsible team can monitor it and respond to failures.
Do this during hours you have people watching. An upgrade can cause API failures or less visible quality regressions, where requests succeed but answers get worse. Logs, alerts, and the rollback switch are the operational layer. not just “the model is wired up.”
We can help design AI systems with model interfaces, versioned prompts, evaluations, and rollout procedures. For an existing system, we assess the dependencies and migration risks before proposing a change. Ongoing evaluations and cutovers can be scoped within managed systems.
Want an architecture that can change models without a rewrite? Book a discovery call and we will map what is coupled today and what a portable layer would look like on your stack.