Model Deprecation Runbook for AI API Gateways: Inventory, Test, Migrate og Roll Back Before End-of-Life
En praktisk runbook til at behandle model-id'er som administrerede afhængigheder: lageranvendelse, registrering af afskrivninger, scoreudskiftninger, kør kompatibilitetstest, skyggetrafik, udrul gradvist og bevar faktureringstilskrivning.
Hårdkodede model-id'er er stille produktionsafhængigheder. De fungerer, indtil en udbyder omdøber et slutpunkt, trækker et dateret snapshot tilbage, ændrer et alias, fjerner en forhåndsvisningsmodel eller introducerer en API-inkompatibilitet. Fejlen optræder sjældent som én ren udfald. Det viser sig som skemafejl, højere latenstid, uventede afvisninger, forskellige argumenter for værktøjsopkald, ændrede omkostninger eller kundebilletter fra lejere, hvis arbejdsbelastninger opførte sig anderledes efter en forhastet migrering.
Den praktiske løsning er at behandle model-id'er som administrerede afhængigheder, ikke statiske strenge i applikationskoden. I en AI API-gateway betyder det, at der skal opbygges en gentagelig modelafskrivningsrunbook: opgørelse, detekter, vurder påvirkning, testerstatninger, skyggetrafik, udrul gradvist og rul hurtigt tilbage, når kompatibiliteten bryder sammen.
Fakta, anbefalinger og forudsigelser
Fakta: Større modeludbydere udgiver modelkataloger, versionsvejledning, udfasningsmeddelelser og migreringsvejledning. Disse ressourcer viser, at modeltilgængeligheden ikke er statisk. Nogle udbydere skelner bekvemmelighedsaliasser fra specifikke model-id'er, og nogle migreringer kan omfatte API-niveauforskelle, der bryder eksisterende integrationer.
Anbefalinger: Sæt modellivscykluskontrol i gatewayen. Vis logiske modelnavne for applikationsteams, spor brugen af udbydermodeller centralt, overvåg udfasningskilder og kør kompatibilitetstest, før du skifter produktionstrafik.
Forudsigelser: Modellivscyklusoperationer bliver en normal del af AI-platformsudvikling. Teams, der kører systemer med flere udbydere, vil i stigende grad have behov for afhængighedslignende kontroller til modeller: versionsbeholdning, ændringsvinduer, regressionstjek, tilbagerulningsplaner og kundemeddelelser.
Fejltilstanden: udbydermodel-id'er spredt gennem applikationskode
En almindelig implementering starter ganske enkelt:
{
"model": "provider-model-preview-2025-06",
"messages": [
{"role": "user", "content": "Extract the invoice fields as JSON."}
]
}
Dette er nemt for en prototype og risikabelt i produktionen. Modelstrengen kan duplikeres på tværs af backend-tjenester, scripts, workflows med lav kode, interne værktøjer, kundeintegrationer og partnerprodukter. Når modellen nærmer sig udløbet, kan ingen enkelt ejer besvare grundlæggende spørgsmål:
- Hvilke API nøgler sender stadig trafik til den?
- Hvilke lejere afhænger af JSON-skema, værktøjskald, streaming, vision, lyd eller lang kontekst?
- Hvad er eksponeringen for dagligt forbrug og omsætning?
- Hvilke arbejdsbelastninger kan tåle en billigere model, og hvilke kræver en kvalitetsgennemgang?
- Kan teamet rulle tilbage uden at omimplementere alle applikationer?
En gateway er det naturlige sted at løse dette, fordi den allerede ser anmodninger, nøgler, lejere, udbydere, omkostninger, ventetid og fejl.
Trin 1: Opret en modelbeholdningstabel
Start med en holdbar beholdning. Stol ikke kun på udbyderens dashboards, fordi du har brug for din egen lejer, nøgle, fakturering og workflow-kontekst.
En praktisk model_inventory tabel kan omfatte:
logical_model_name support-fast
provider provider_a
provider_model_id model-x-preview-2025-06
endpoint_type chat_completions
alias_status pinned_snapshot | provider_alias | internal_alias
status active | deprecated | blocked | retired
replacement_candidates ["support-fast-v2", "support-balanced"]
first_seen_at timestamp
last_seen_at timestamp
deprecation_announced_at timestamp
shutdown_at timestamp
admin_override text
owner_team support-platform
Så tilslut dig dette med brugsdata. For hver udbydermodel og logisk model skal du spore:
- Aktiverede lejere og API nøgler
- Anmodninger pr. dag og tokens pr. dag
- Forbrug, margin eller intern omkostningsfordeling
- Latenspercentiler, ikke kun gennemsnit
- 5xx rate, provider error rate, timeout rate, and re try rate
- Brug af struktureret output og skemafejlfrekvens
- Bivirkninger ved brug af værktøjsopkald og værktøjsudførelse
- Streamingbrug
- Modaliteter såsom tekst, billede, lyd og filinput
- Kontekstlængdefordeling
Denne beholdning forvandler en meddelelse om udfasning fra en panik til en forespørgsel.
Trin 2: Rute gennem logiske modelnavne
Applikationsteams bør ikke have behov for at kende alle udbyderes modellivscyklusregler. Giv dem stabile logiske navne, der repræsenterer hensigten med arbejdsbelastning:
support-fastsupport-qualitycoding-premiuminvoice-extractor-v2content-moderation-default
Gatewayen knytter disse navne til udbydermodel-id'er:
{
"logical_model": "invoice-extractor-v2",
"routing_policy": {
"primary": {
"provider": "provider_a",
"model": "model-x-stable-2025-09"
},
"constraints": {
"requires_json_schema": true,
"max_input_tokens": 64000,
"region": "eu"
}
}
}
Dette betyder ikke, at alle udbyderoplysninger skjules. Det betyder at lægge udbyderspecifikke muligheder i gateway-metadata i stedet for at sprede dem gennem produktkode. En god abstraktion siger både hvad applikationen vil have og hvad udbyderen rent faktisk kan gøre.
Trin 3: Overvåg udfasninger som planlagte operationer
En udfasningsmonitor bør køre efter en tidsplan og understøtte manuelle tilsidesættelser. Det bør tjekke udbydermodelkataloger, udfasningssider, ændringslogs, udgivelsesbemærkninger og interne administratorposter. Ikke alle livscyklussignaler vil være tilgængelige via en ren maskinlæsbar API, så tillad en operatør at tilføje eller rette datoer.
Når monitoren registrerer en livscyklushændelse, skal du oprette en intern registrering:
provider_model_id: model-x-preview-2025-06
status: deprecated
shutdown_at: 2026-02-15
recommended_replacements:
- model-x-stable-2025-09
- model-y-mini-2025-10
source_type: provider_deprecation_page
confidence: confirmed
Udløs derefter konsekvensanalyse automatisk. En meddelelse om udfasning bør ikke sidde i en chatkanal, før nogen husker at undersøge den.
Trin 4: Generer en effektrapport
Konsekvensrapporten bør være specifik nok for ingeniør-, økonomi-, support- og partnerteams. Inkluder:
- Forældet udbydermodel og berørte logiske navne
- Lukningsdato og anbefalet beslutningsfrist
- Berørte lejere, teams og API nøgler
- Daglig anmodningsvolumen og tokenvolumen
- Daglige omkostninger, kundefaktureringseksponering og margenpåvirkning, hvis relevant
- Bedste slutpunkter eller produkter, der bruger model
- Promptkategorier eller gemte promptskabeloner
- Brug af JSON skemaer, funktions- eller værktøjskald, streaming, billeder, lyd, filer eller lang kontekst
- Aktuelle latenspercentiler og fejlfrekvenser
- Kendte kontraktmæssige eller data-residency-begrænsninger
For partner API-brugere skal du blotlægge en filtreret version af disse metadata, så bureauer, forhandlere og indlejrede AI-produktbyggere kan advare deres egne kunder, før en udbydernedlukning påvirker downstream-tjenester.
Trin 5: Byg en erstatningsliste efter kapacitet
Vælg ikke en erstatning med varemærkenavn alene. Score kandidater i forhold til arbejdsbyrden.
| Kriterium | Spørgsmål til besvarelse |
|---|---|
| Kontekstvindue | Kan det håndtere den nuværende p95-inputlængde plus forventet vækst? |
| Struktureret output | Understøtter det den skemaadfærd, som arbejdsgangen kræver? |
| Værktøjsopkald | Er værktøjsnavne, argumentformer og opkaldsbestilling kompatible? |
| Modaliteter | Understøtter den nødvendige tekst-, billede-, lyd-, fil- eller streaming-input? |
| Latency | Kan den opfylde rutens timeoutbudget på p95 eller p99? |
| Pris | Hvad er de forventede input-, output- og genforsøgsomkostninger? |
| Sikkerhedsadfærd | Vil afvisningsmønstre bryde legitime arbejdsgange? |
| Region og fastholdelse | Opfylder det lejerspecifikke overholdelsesbegrænsninger? |
Den nyeste flagskibsmodel er ikke altid den bedste erstatning. En mindre nyere model kan bevare ventetiden og omkostningerne for store arbejdsbelastninger. En mere dygtig model kan være nødvendig for komplekse kodnings-, udtræks- eller ræsonnement-arbejdsgange. Runbook bør gøre dette eksplicit i stedet for som standard at omdanne enhver udfasning til en opgradering.
Trin 6: Kør en kompatibilitetsevalueringspakke
Før du ændrer produktionsruten, skal du køre en evalueringspakke, der afspejler den faktiske risiko for arbejdsbelastning.
Minimumsevalueringssæt
- Gyldne meddelelser: stabile eksempler med forventede karakteristika, ikke nødvendigvis ét nøjagtigt svar.
- Skemavaliditetstest: JSON parse succes, obligatoriske felter, enum-værdier, længdegrænser og indlejrede objekttjek.
- Værktøjsopkaldstest: korrekt valg af værktøj, gyldige argumenter, ingen usikre kopierede bivirkninger.
- Sikkerheds- og afvisningstjek: bekræfter, at legitime forretningsanmodninger stadig er fuldført.
- Omkostningssammenligning: inputtokens, outputtokens, genforsøg og eventuelle duplikerede opkald.
- Latenssammenligning: p50, p95, p99, timeouthastighed og streaming-første token-forsinkelse, hvor det er relevant.
- Menneskelig gennemgang: påkrævet for værdifulde eller tvetydige arbejdsgange, hvor automatiserede kontroller er utilstrækkelige.
For strukturerede arbejdsgange er et enkelt kvalitetsresultat på naturligt sprog ikke nok. Udskiftningen skal producere output, som downstream-kode kan parse og stole på.
Trin 7: Skygge produktionstrafik sikkert
Skyggetest betyder, at du kopierer en prøve af produktionsanmodninger til kandidatmodellen, mens du kun returnerer den aktuelle models svar til brugeren. Gem kandidatsvaret separat til sammenligning.
if route.shadow_enabled and request.is_safe_to_shadow:
primary_response = call(current_model, request)
enqueue_shadow_call(candidate_model, request, trace_id)
return primary_response
Skygg ikke alt. Undgå at duplikere anmodninger, der indeholder side-effektende værktøjskald, medmindre værktøjsudførelseslaget er deaktiveret eller hånet. Vær forsigtig med følsomme data, opbevaringsregler og lejerkontrakter. Skyggetest øger det midlertidige tokenforbrug, men det giver beviser fra rigtige prompter i stedet for kun håndplukkede testsager.
Sammenlign skyggeresultater på:
- Skemavaliditet
- Tool-call-kompatibilitet
- Outputlængde
- Pris pr. vellykket anmodning
- Latensdistribution
- Afvisnings- og fejlmønstre
- Opgavespecifikke gennemgangresultater
Trin 8: Udrul med procentbaseret routing
Når kandidaten har bestået evalueringen, skal du rulle ud gradvist. Foretrækker routingkontrol ved gatewayen efter lejer, nøgle eller logisk model frem for at ominstallere hver applikation.
En konservativ sekvens:
- Kun interne lejere
- 1 % af kvalificeret produktionstrafik
- 5 %
- 25 %
- 50 %
- 100 %
Definer tilbagerulningsgrænser før udgivelsen starter:
rollback_if:
schema_failure_rate_increase: "> 1.0 percentage point"
provider_5xx_rate: "> 2x baseline"
p95_latency_increase: "> 30%"
cost_per_successful_request: "> 25% over approved budget"
tool_argument_validation_failures: "> 0.5%"
tenant_blocklist_hit: "any critical tenant"
Tærskler bør justeres efter arbejdsbelastning. En chatbot kan ofte tolerere mere formuleringsvariation end en fakturaudtrækningspipeline. Et baggrundsopsummeringsjob kan tolerere højere latenstid end en interaktiv supportassistent.
Trin 9: Bevar faktureringstilskrivning under migrering
Modelmigrering kan forvrænge brugsanalyse, hvis gatewayen kun registrerer udbydermodel-id'er. Bevar både logiske og fysiske modeldimensioner:
tenant_id
api_key_id
logical_model_name
provider
provider_model_id
migration_id
input_tokens
output_tokens
provider_cost
customer_charge
latency_ms
status
schema_valid
migration_id betyder noget. Det giver økonomi og support mulighed for at sammenligne gammel og ny adfærd under udrulningsvinduet. Hvis en erstatningsmodel er dyrere, kan virksomheden beslutte, om den vil absorbere forskellen, opdatere priser, flytte nogle lejere til en mindre model eller kræve kundens godkendelse.
Trin 10: Før en revisionslog og tilbagerulningsplan
Hver migrering bør efterlade en post:
- Udgået model og erstatningsmodel
- Logiske modelnavne påvirket
- Beslutningsejer og godkendere
- Konsekvensrapportlink
- Evalueringsresultater
- Skyggetrafikoversigt
- Tidsstempler for udrulning
- Tærskelværdier for tilbagerulning
- Kunde- eller partnermeddelelser
- Endelig status og erfaringer
En tilbagerulningsplan skal være operationel, ikke aspirationsorienteret. Hvis den gamle udbydermodel snart lukkes ned, kan tilbagerulning betyde routning til en anden erstatningskandidat, deaktivering af en funktion, brug af en strengere prompt eller midlertidig begrænsning af berørte lejere. Dokumenter de tilgængelige muligheder før cutover.
Afvejninger at administrere
- Fastgjorte model-id'er forbedrer reproducerbarheden men øger risikoen for slutningen af livet, når øjebliksbilleder trækkes tilbage.
- Udbyderaliasser reducerer vedligeholdelse men kan ændre adfærd under en applikation, så de har brug for regressionsovervågning.
- Attraktion på gatewayniveau forenkler migration men kan skjule udbyderspecifikke funktioner, medmindre kapacitetsmetadata er eksplicitte.
- Skyggetest forbedrer tilliden men øger det midlertidige tokenforbrug, fordi anmodninger duplikeres.
- Automatisk migrering reducerer risikoen for udfald men kan skabe semantiske regressioner, hvis erstatninger kun vælges ud fra pris eller generiske benchmarkscore.
- Per-lejer-tilsidesættelser beskytter vigtige kunder men øger driftskompleksiteten og supportbyrden.
- Strenge kompatibilitetsporte beskytter strukturerede arbejdsgange men kan forsinke overtagelsen af bedre modeller, der kræver prompt eller skemaændringer.
Implementeringstjekliste
- Opret en central fortegnelse over udbydermodeller og logiske modelnavne.
- Bloker direkte udbydermodel-id'er fra applikationsteams, hvor det er muligt.
- Tilføj udbyderlivscyklusovervågning og manuelle administratortilsidesættelser.
- Generer effektrapporter for hver udfasningshændelse.
- Score erstatninger efter kapacitet, omkostninger, latenstid, overholdelse og kompatibilitet.
- Kør gyldne prompter, skematjek, værktøjsopkaldstjek, sikkerhedstjek og prissammenligninger.
- Skyggesikker produktionstrafik før udskiftningen afsløres.
- Rul ud efter lejer, nøgle eller procentdel med foruddefinerede tilbagerulningstærskler.
- Spor logisk model, udbydermodel og migrerings-id i brugsanalyse.
- Afslør udfasningsmetadata gennem partnervendte API'er, når downstream-kunder er berørt.
Aktiv konklusion
Det sikreste tidspunkt at designe en modeludfasningsproces er før den næste nedlukningsmeddelelse. Start med én regel: applikationer anmoder om logiske modelnavne, og gatewayen ejer udbydertilknytningen. Tilføj derefter det operationelle lag omkring denne regel: opgørelse, overvågning, konsekvensrapporter, evalueringer, skyggetrafik, trinvis udrulning, rollback og revisionslogfiler.
Dette forvandler modelmigrering fra en strengerstatning i sidste øjeblik til en administreret afhængighedsarbejdsgang. Målet er ikke at fastfryse modeladfærd for altid. Målet er at ændre modeller bevidst og samtidig bevare kvalitet, omkostninger, forsinkelse, struktureret output-adfærd og faktureringstilskrivning.