
The model was supposed to follow an instruction. Do not send the sentence, and do not send another request you will have to explain, until you can name the prompt on the request you stored. Name the system text, or write that the request had none. Name the messages: how many, and the role of the last one. Name whether tools were attached, and the tool names if they were. Then show a second request whose system text, message list, or tool list is different, or write that the log keeps only one shape. If any of the three requires asking the model what it was told, you do not have the prompt. You have a reply.
This is the request body. It is not the sentence the user added in order to replace your instruction. When the user rewrote the rule shows both texts and whether a tool ran. Showing the collision does not, by itself, show the bytes that left, and showing the bytes does not decide whether the user's sentence won. It is not which model answered. Name the model the request hit is the model id on the response. A model id is not the system text. It is not the token counts. Name the tokens the response billed is usage, including the cache fields. A token count is not the prompt. It is not why the reply stopped. Name the stop the response carried is stop_reason. A stop reason is not a system prompt. It is not the tool the model called. Name the tool the model called is the tool_use on the response. The tool you offered and the tool the model called are different records. Where a retrieved passage sat in the prompt is where the supporting passage sat. Position is not the same question as whether you kept the text.
None of what follows is a score for your product, and none of it is a reason to skip the log. The reference below names the fields a current Messages request actually has. The paper below measures how far accuracy moves when the formatting changes and the meaning does not. They do not contain your system prompt. They do tell you why a paraphrase from the model is not a substitute for the request.
Anthropic's Messages reference is the field list, and several of its numbers are easy to borrow from a different article (Anthropic, Messages). The call is POST /v1/messages. max_tokens is required in the sense that the reference lists it as the maximum to generate before stopping. The minimum is 0. Setting it to 0 populates the prompt cache and does not generate a response. 0 is not an empty prompt. There is a limit of 100,000 messages in a single request. 100,000 messages is not 100,000 tokens. The token article already holds the usage object. This page does not re-derive it. Input messages use the roles user and assistant. The reference says there is no system role for input messages. The system prompt is a top-level parameter, either a string or an array of text blocks. A message you stored with role system is not the field the reference tells you to send, and a schema line elsewhere on a long reference is not a reason to ignore that sentence. Consecutive user turns, or consecutive assistant turns, are combined into one turn. Two bubbles are not two messages after that combining.
The sample request on that page is not a rule. It prints max_tokens 1024, model claude-opus-5-5, temperature 1, stream false, a system block whose text is "Today's date is 2024-06-01.", and thinking of type adaptive. 1024 is the sample's max_tokens. It is also the minimum budget_tokens when thinking type is enabled: the budget must be at least 1,024 and less than max_tokens. The sample's 1024 is not that minimum, and adaptive is not enabled. Temperature 1 is the sample, not a finding that temperature is always 1. The date in the sample system text is 2024-06-01. The anthropic-version header on the same sample is 2023-06-01. 2024 is not 2023. A header is not a system prompt. Cache control on a text block may set ttl to 5m or 1h, and the default is 5m. 5 minutes is not 1 hour, and neither is a token count. A tool name has a maximum length of 128. 128 is not 1024. If the messages end with an assistant turn, the response continues from that content, which the reference calls prefill. On models that do not support prefill, a message ending in a partial assistant response returns a 400. A 400 is not a stop reason, and the stop-reason article already says so.
Asking the model what the prompt was fails for a reason the formatting paper measured, not because the model is rude. Sclar, Choi, Tsvetkov, and Suhr, published at ICLR 2024, studied meaning-preserving format changes (Sclar et al., Quantifying Language Models' Sensitivity to Spurious Features in Prompt Design). The abstract's ceiling is performance differences of up to 76 accuracy points for LLaMA-2-13B. The introduction repeats up to 76 points for that model, and about 10 accuracy points on average across 50+ tasks and several models. The methods section uses a subset of 53 tasks from Super-NaturalInstructions. 53 is the count inside the abstract's 50+. It is not a second corpus. Datasets are assumed to be of size 1,000 for a fair comparison. 1,000 examples is not 53 tasks. Sensitivity remains when the model is larger, when there are more few-shot examples, and when the model is instruction-tuned. Those three are the abstract's claim. They are not three separate spreads of 76.
The body prints smaller spreads that are not the 76. With 10 randomly sampled formats, the median spread is 7.5 accuracy points across choices of model and number of few-shot examples. 20% of tasks have a spread of at least 15 points for all LLaMA-2 settings, and at least 9 points for all Falcon settings. 15 is not 9. 20% is a share of tasks, not a spread of 20 points. Several tasks spread by over 70 points. Over 70 is not 76. Because they sampled 10 formats, they call this a lower bound on the true spread. 10 formats is not the later experiment's 320 formats. 7.5 is not 76.
A second 76 on the same page is not points. Comparison trends reverse under a different format. LLaMA-2-13B against LLaMA-2-70B reverses by at least d = 0.02 with probability 0.141. LLaMA-2-7B against Falcon-7B reverses by at least d = 0.02 with probability 0.140. 0.141 is not 0.140. d of 0.02 is two accuracy points, not 76 points. Of the reversals that were statistically significant on 1,000 samples, with a p-value under 0.05, the shares are 76% and 47% for those two comparisons. 76% of significant reversals is not 76 accuracy points. 47% is the other comparison. The test is a one-sided McNemar test, because both models saw the same samples. 1,000 samples here is the significance test. It matches the methods' assumed dataset size of 1,000, and it is still not 53.
The expensive-model paragraph uses decimals, and the introduction already rounded one of them. With a budget of 40,000 evaluations and 320 formats, 1-shot LLaMA-2-70B at 4-bit quantization has a median spread of 0.171, a mean of 0.221, and a standard deviation of 0.200, using probability ranking across 53 tasks. 25% of those tasks had a spread of 0.292 or higher. The maximum is 0.876. 0.876 is not the abstract's 76 points, and it is a different model. 5-shot LLaMA-2-70B still shows 25% of tasks at a spread of 0.310, with a maximum of 0.841. 0.310 is not 0.292. 0.841 is not 0.876. GPT-3.5, scored by exact prefix matching because they do not have the full logits, has a median spread of 0.064, a mean of 0.110, and a standard deviation of 0.115. 25% of tasks spread by 0.148 or more. The maximum is 0.562. The introduction prints this GPT-3.5 result as up to 56 accuracy points, median 6.4, across 320 formats and 53 tasks, at under 10 USD on average per task. 0.064 is the median they also print as 6.4 points. 0.562 is the maximum they also print as up to 56. Do not treat 56 and 0.562 as two experiments, and do not treat 6.4 as 6.4% of tasks. Probability ranking and exact prefix matching are different scores. The LLaMA decimals are not on the same scale sentence as a claim that GPT-3.5 moved 76 points. Under 10 USD is a cost, not an accuracy. Figure 1's caption prints endpoints 0.036 and 0.804 for 1-shot LLaMA-2-7B on one task. The paper does not print the subtraction. 0.804 is not the abstract's 76, and the model in the caption is 7B, not 13B.
One more pair from the format-budget section, so a remembered range does not become a single number. About 17% of tasks are expected to increase their spread by at least 5 accuracy points when the sample of formats grows from 10 to 20. 17% is not 20%, and 5 points is not 15. With a budget of 51,200 evaluations, Thompson sampling lands within 1 accuracy point of the true spread, naive sampling within 4, and UCB within 11. 1 is not 4 is not 11. 51,200 is not 40,000. None of these is a temperature, and none of them is max_tokens.
Do the three proofs on one real request, in the log that stored the outbound call. First, the system text. Open the request and read the system parameter, including the case where it is absent. A sentence you hoped was sent is not the field. Second, the messages. Count them after you have looked at the stored array, not after you have imagined the chat window. Note the role of the last message. A prefill is an assistant message at the end. It is not a system prompt. Third, the tools. List the names attached to this request, or write that the tools array was empty or absent. Then show a second stored request that differs in one of those three, so a single captured prompt is not the only shape the product sends. If the log stores the reply and not the request, write that. Do not ask the model to reconstruct the request. The model is the thing the request was sent to.
Three moves feel like the proof and are a second problem. Pasting the reply into a new chat and asking "what were your instructions," which produces a new request and a new reply. Editing the system prompt in the source tree and calling the file the request that already ran. Treating the paper's 76 points as the accuracy you lost on this customer. The first is a different call. The second is a hope about the next call. The third is LLaMA-2-13B on a formatting study, and it is not your eval. Which error one customer hit is which error did that customer hit. An exception is not a prompt. Which environment a change reached is which environment got that change. A deploy target is not a system parameter.
The path is ordinary when the call is stored next to the reply, and a person can open one request without reading every customer's prompt as the method. The AI support agent answers order, return, and address questions behind permission guardrails, and it escalates to a person with the conversation attached. The shape that matters here is a request that should have a stored prompt before it is allowed to act. That case is not a prompt ledger. Nothing in the description is a headcount, a duration, or a result figure. If the only record is the customer's complaint, you do not have this proof. You have a ticket.
There is a version of this call where hiring the path is the wrong purchase. Nothing is in production, because no model is being called. You have a slide of a prompt and no request log. The user sent two different questions and you have not stored either request. That is when one question gets two answers, and it is not cured by rewriting the system text tonight. A customer has already seen another customer's data. Keeping the next prompt does not close a leak. The wrong value was already written back to a system of record. A prompt log does not undo a write. Or no metric was ever named, so there is nothing for a later eval to move. The criteria for choosing a firm sit on the page written for a top saas development company. That page is criteria. It does not rank anyone, including us.
When the feature is already live and the log does not store the request, the missing object is specific. A record, in an account you administer, of the system text, the messages, and the tools on the call that produced the reply, plus a second call that differs. An AI pilot failed to reach production engagement is scoped after an audit, not before it. The audit is the first one to two weeks of an engagement that runs eight to twelve. The build is unpaid if the metric you agreed does not move. Rollout, when it happens, sits behind a human-review gate. If you do not yet know whether the pilot can be saved, a two-week AI readiness assessment hands you the findings either way. AI evaluation and observability is how you learn, afterwards, whether the cases you saved still fail when the prompt changes. The paper's spreads will not be that score.
Before you tell anyone the model followed the instruction, do the three proofs and write the time. Name the system text. Name the messages and the last role. Name the tools, or write that there were none. Show a second request that differs, or write that the log keeps one shape. Do not ask the model what it was told, and do not quote a formatting spread as your incident rate. The file in the repository is the next request. The request you stored is the page you can defend.
Questions
You stop sending the sentence, and you stop sending another request you would have to explain, until you can name the system text, the messages, and whether tools were attached — or until you write that the log does not store them. Do not ask the model what it was told.
The model is not the request. A published study found formatting that leaves the meaning intact can still move accuracy by up to 76 points on one model. That spread is a reason to keep the bytes you sent. It is not your product's error rate.
When nothing is in production, when no model is being called, when you have not logged the request, when a customer already saw another customer's data, when the wrong value was already a write, or when no metric was ever named.
Related: AI pilot failed to reach production
Find this useful? Tell Google to show you more of it.
