
The model was supposed to answer. Do not treat the sentence as that model's, and do not start another request you will later have to explain, until you can name the model identifier on the response, show whether the string you sent was that identifier, and show a request that stayed on the identifier you meant. If the log does not store the identifier, write that, and stop. Do not ask the model which model it is. A model that answers the question has produced another sentence. It has not produced the field.
This is the identifier on one call. It is not the prime-number pair already printed on the evaluation suite. That page records GPT-4 moving from 84.0% to 51.1%, and GPT-3.5 from 49.6% to 76.2%, on one task, between two dates. Those four figures are a behavior. They are not the string in the model field, and this page does not re-derive them. It is not the retirement calendar. Model drift is the published date after which a request to a retired model fails, and the notice that comes before it. A date on a deprecation page is not the identifier on Tuesday's call. Two different sentences for one question are when one question gets two answers. A user text that replaced the instruction is when the user rewrote the rule. A tool the model was allowed to run is a different record from the model that was asked to run it. Do not store any of those on this page.
The paper those dates come from is Chen, Zaharia, and Zou, arXiv, July 2023. They compared the March 2023 and June 2023 versions of GPT-4 and GPT-3.5. They queried with the user prompt only, left the system prompt at its default, and set temperature to 0.1. 0.1 is not 0, and it is not 1. They say the services were opaque about when and how they updated, and that the two versions available through the API at the time of writing were snapshotted in those two months. They do not print a snapshot string in the sections this page uses. The absence is the point. A product name plus a month is not an identifier you can copy onto a ticket. They also say the benchmarks do not comprehensively cover the models' behavior, and that the goal was to show drift on simple tasks, not to give a holistic score. A holistic score is not hiding in a cell they did not print (Chen, Zaharia, and Zou, How Is ChatGPT's Behavior Changing over Time?).
The evaluation suite's four percentages are the chain-of-thought column of the prime task, whose dataset is 1,000 questions, 500 primes and 500 composites. The same table's other column, no chain-of-thought, is GPT-4 March 59.6% and June 51.0%, GPT-3.5 March 50.5% and June 60.4%. 59.6 is not 84.0. 51.0 is not 51.1. 50.5 is not 49.6. 60.4 is not 76.2. The table's June delta for GPT-4 is +0.1%. The caption says the chain-of-thought boost "dropped to -0.1% in June." The prose says the June accuracy "was actually 0.1% worse." Those are three statements. +0.1 matches 51.1 minus 51.0. -0.1 and "worse" do not match that subtraction. Do not repair the paper. The prose also says GPT-3.5 gained +6.3% from chain-of-thought in March. The table's March delta for GPT-3.5 is -0.9%. +6.3 is not -0.9. The June delta on that row is +15.8%, which the prose and the table both print. One agreement does not fix the March cell. None of these is the model field.
A second math task is not the prime task. Counting happy numbers used 500 queries. GPT-4's accuracy fell from 83.6% to 35.2%. GPT-3.5's rose from 30.6% to 48.2%. The prose calls the GPT-3.5 movement a 17.8% accuracy gain. The cells are 30.6 and 48.2. Do not subtract them and replace 17.8. GPT-4's average reply shrank from 2163.5 characters to 10.0. GPT-3.5's length "increased by more than 60%," which is their phrase, not a character count. 67.6% of GPT-4's extracted answers changed between the two months, and 77.2% of GPT-3.5's. Mismatch, in their definition, compares extracted answers, not the raw text. 67.6 is not 77.2. 2163.5 is not 10.0. 83.6 is not 84.0, and 35.2 is not 51.1. 500 is not 1,000.
Code generation is a third task, on 50 LeetCode easy problems, the latest 50 at the time of writing, with public solutions no earlier than December 2022. Directly executable means the online judge accepted the generation. GPT-4 fell from 52.0% in March to 10.0% in June. GPT-3.5 fell from 22.0% to 2.0%. "Over 50%" is their phrase for the 52.0. "Only 10%" is their phrase for the 10.0. GPT-4's verbosity "increased by 20%," a phrase, not a character count, and not the happy-number 2163.5. After they stripped non-code text, Table 4 is GPT-4 March 52.0% / 52.0% / 0.0, and June 10.0% / 70.0% / 60.0. GPT-3.5 March 22.0 / 46.0 / 24.0, and June 2.0 / 48.0 / 46.0. The prose says GPT-4's performance increased from 52% to 70% once the extra text was removed. That is the second column, June against March, not the first column's drop from 52.0 to 10.0. 10.0 is not 70.0. 60.0 is not 0.0. A "2% improvement" for GPT-3.5 is their phrase for the second column's 46.0 to 48.0. 2 is not 22, and 2.0 is not 48.0. 50 problems is not 500 and not 1,000. A formatting change that makes code fail a judge is still a behavior of a named month. It is not an identifier.
Sensitive questions are a fourth task, 100 queries they labeled by hand. The response rate is how often the service answered directly, which on this task is the failure. Table 3: GPT-4 plain text 21.0% in March and 5.0% in June; the jailbreak they call AIM, 78.0% and 31.0%. GPT-3.5 plain text 2.0% and 8.0%; AIM 100.0% and 96.0%. 21.0 is not 5.0. 78.0 is not 31.0. 2.0 is not 8.0. 100.0 is not 96.0. The two 2.0 figures are different rows: GPT-3.5's March plain-text cell, and GPT-3.5's June code cell on the other task. GPT-4's reply length on this task "dropped from more than 600 to about 140." More than 600 is not the prime task's 638.3, and about 140 is not that task's 3.9, and neither is the happy-number 2163.5. 100 queries is not 50. Do not cite 5% as this product's refusal rate. Do not cite 52% as this product's code rate. The paper's product names are GPT-4 and GPT-3.5 in two months of 2023. They are not a Claude identifier, and they are not the model field on your request.
A vendor's own model page is where an alias and an identifier either differ or are printed as the same string, and you do not get to choose which. Anthropic's models overview, read as a current page, says every Claude model ID is a pinned snapshot, "including the dateless IDs used from the 4.6 generation on." For models before that generation, "the alias is a convenience pointer that resolves to the dated ID." For the dateless IDs, "the alias row repeats them." On the current comparison table the Claude API ID and the Claude API alias are the same string for each row, including claude-opus-5-5. The same row's Amazon Bedrock ID is anthropic.claude-opus-5-5. Those two strings are not the same. Foundry "deployments default to the Claude API model ID (the alias, where one exists); the deployment name is what you send." A deployment name is not the API id unless you have read both. Amazon Bedrock and Google Cloud set their own lifecycle dates. That sentence is also on the deprecation page the drift article already uses. This page does not relist those dates. A knowledge cutoff of June 2026 is printed on more than one current row. A cutoff is not an identifier. A context window of one million tokens, printed on more than one row, is not an identifier either (Anthropic, Models overview).
The same page warns you off a shortcut that looks like reading the id. Each model has a line field. Claude Opus 4.5 and Claude Opus 4.6 both report opus. "Read line instead of inferring it from the model's id." line is null when a model belongs to no line. "Don't treat the set of values as fixed." opus is not claude-opus-5-5, and it is not anthropic.claude-opus-5-5. A picker grouped by line has not named the model the request hit. The overview's suggestion, if you are unsure which model to use, is to start with Claude Opus 5.5. A suggestion is not the identifier on the call you already made. Chen's 52.0 and 10.0 are not a rate for any of these strings. A 2023 API snapshot and a 2026 model page are two documents. Do not paste a percentage from the first onto an id from the second.
Do the three proofs on one real request, in the log the product actually stores. First, the identifier. Open the response record and read the model field. Copy the string. If the field is absent, write absent, and do not fill it with the name on the pricing page or the name in the prompt. Second, the string you sent. Put it next to the string that came back. If they differ, you have an alias, a fallback, or a router, and you name which of those you can see. If they are the same, write that they are the same. Anthropic's current note that a dateless id is repeated on the alias row is a reason the two strings might match. It is not a reason to skip the comparison. A policy that refuses any request whose model string is an alias is a refusal you can show. A policy you have not turned on is a sentence in a document. Third, the request that stayed. One call you intended to pin still carries that identifier on the response. If every call you can find was rewritten to a different id, you do not have the third proof. You have a router. Write that.
Three moves feel like the proof and are a second problem. Asking the model "what model are you?", which spends a call in order to believe the answer. Reading the line field, or the marketing name, and filing it as the id. Changing the id in the client and not reading the response, which edits the request and leaves the fallback invisible. The first is a fiction. The second is a group. The third is a hope. A passage you cannot place in the prompt is where the supporting passage sat. A position is not a model id. A page the answer cited that you cannot open is open the page the answer cited. A URL is not an identifier.
The shape of a support agent is not a study of model identifiers. An AI support agent for a DTC ecommerce brand answers from order data, policies, and a catalog, can look up an order, start a return, or change an address behind permission checks, and escalates on confidence. That case is explicitly not a model-id study. Nothing in that description is a headcount, a duration, or a result figure. If the only record of the call is the sentence the customer saw, you do not have the identifier. You have the sentence.
There is a version of this where hiring the record is the wrong purchase. Nothing is in production, so there is no request to open. No model is being called, because the feature is still a prompt in a chat window and the identifier was never your problem. The user sent two questions and got two answers, which is the other article, not a missing id. A customer has already seen another customer's data. Naming the model does not close a leak. The wrong value was already written into a system of record. The identifier does not undo the write. Or no metric was ever named, so there is nothing a later engagement could be measured against. Name the metric, or finish the observation, before you buy a repair.
When the answer is already in front of a customer and the log does not store the identifier, the remaining work is specific. An audit of what is salvageable, in the first one to two weeks. An engagement finished in eight to twelve weeks, scoped after that audit, not before it. One metric agreed up front. If the engagement does not move it, the build is on us and you do not pay for it. Rollout, when it happens, sits behind a human-review gate. That is what an AI pilot failed to reach production engagement is for. The harness that scores a pinned identifier against the alias, on your examples, is AI evaluation and observability. If you do not yet know whether the pilot can be saved, a two-week AI readiness assessment hands you the findings either way. Those are the terms. They are not a promise that a 2023 formatting drop will recur, and they are not a rate. Chen's 10.0% is a judge's acceptance on 50 public problems. It will not appear on the invoice.
A sign-in you can show, and a version a lockfile resolved, are different stops: show the login they did not make and name the package the lockfile pinned. Do not record either on this page. An authentication event is not a model id. A package version is not a response field.
Why that response stopped is a different field, name the stop the response carried. An identifier is not a stop reason. The tokens that response billed are a different object, name the tokens the response billed. An identifier is not a count. Before you tell anyone which model answered, do the three proofs and write the strings. The identifier on the response, or the fact that it was not stored. The string you sent, next to it, same or not. A request that stayed on the identifier you meant. Do not ask the model its name. A month on a paper is a behavior you can cite. The field is the page you can defend.
Related: AI pilot failed to reach production
Find this useful? Tell Google to show you more of it.
