Skip to content
Insights · AI Agents

Which detail did that response omit?

Name the detail that response omitted: the status, the reason, and the token cap. A different response can share a status. Another log omits it.

Scroll
AI AgentsOct 30, 202612 min readBy Salman Naqvi, Founder & CEO
Which detail did that response omit?

A customer says the model stopped halfway, or says the reply is the whole answer. Do not treat a finished sentence as the detail the response omitted, and do not ask the model why it stopped, until you can name the status, the reason, and the token cap, or write that incomplete_details was null. Show a different response whose status, or whose reason, is not this one. Show another log that does not hold this response. If any of the three needs a log you cannot open, you have not named the detail. You have a paragraph and a guess.

This is the incomplete detail on one response. It is not the output the response held. Which output did that response hold? is an item id, a type, and a status. An output can be completed while incomplete_details is null, and a message id is not a reason. It is not the input the response sent. Which input did that response send? is an input item id and a text. A text is not a token cap. It is not the clock a test froze. Which clock did that test freeze? is a clock id and a frozen time. It is not the suite a check joined. Which suite did that check join? is a sha and a conclusion. A detail is none of those.

None of what follows is a score for this product, and none of it is legal advice. The fields below are one vendor's current samples of a response, and a guide that tells you what an incomplete response looks like without printing that object in the samples. The samples that share a null do not share an id. The figures below that are a paper's token counts on other prompts, not the cap on your log. An average reduction is not the detail this response omitted.

OpenAI's streaming example prints one response that finishes, and the incomplete field stays null. The id is resp_67c9fdcecf488190bdd9a0409de3a1ec07b8b0ad4e5eb654. 53 characters. object is response. 8 characters. 8 is not 53. created_at is 1741290958. The created event and the in_progress event both store status in_progress and incomplete_details null. The completed event stores status completed and incomplete_details null. completed is 9 characters. incomplete is 10. 9 is not 10. in_progress is 11. 11 is not 9. max_output_tokens is null on all three events. instructions are You are a helpful assistant. 28 characters. The output message id is msg_67c9fdcf37fc8190ba82116e33fb28c507b8b0ad4e5eb654. 52 characters. 53 minus 52 is 1. The two ids share the suffix 07b8b0ad4e5eb654. 16 characters. A shared suffix is not a shared id. The text is Hi there! How can I assist you today? 37 characters. 37 is not 28. model is gpt-6-astra. 11 characters. input_tokens are 37. output_tokens are 11. total_tokens are 48. 37 plus 11 is 48. The input token count is 37, the same integer as the character count of the reply, and not the reply. reasoning_tokens are 0. 0 is not 11. A completed response whose incomplete_details is null did not omit a reason. Do not paste a reason onto that null because the field exists (OpenAI, Create a model response).

The image example on the same page is a different response, and it is also complete. The id is resp_67ccd3a9da748190baa7f1570fe91ac604becb25c45c1d41. 53 characters, the same length as the streaming id, and not the same string. The shared suffix with the streaming id is empty. created_at is 1741476777. completed_at is 1741476778. The gap inside this response is 1 second. 1741476777 minus 1741290958 is 185819 seconds: 2 days, 3 hours, 36 minutes, and 59 seconds. The page does not print that gap. Two completed responses a season apart in the samples are not one response. incomplete_details is null. max_output_tokens is null. status is completed. The reasons the reference names for an incomplete detail are max_output_tokens, max_messages, content_filter, and steered. Four names. max_output_tokens is 17 characters. max_messages is 12. content_filter is 14. steered is 7. 17 is not 12, and 7 is not 14. None of those four strings appears in either completed sample. The attribute text says max_output_tokens has a minimum of 16. 16 is not null, and null is not 16. A minimum the schema allows is not a cap the sample stored.

The reasoning guide describes the missing object and then does not print it. It shows a usage object with input_tokens 75, output_tokens 1186, reasoning_tokens 1024, and total_tokens 1261. 75 plus 1186 is 1261. That addition matches. 1186 minus 1024 is 162. The page does not print 162. 1024 divided by 1186 is 0.863. The page does not print 0.863. 75 is not 37, the streaming sample's input tokens, and 1186 is not 11. The guide says a response that hits the context window or the max_output_tokens value comes back with status incomplete and incomplete_details.reason set to max_output_tokens, and that this can happen before any visible output. The two samples above are status completed with the field null. completed is not incomplete, and null is not max_output_tokens. The same page recommends reserving at least 25,000 tokens for reasoning and outputs when you start. The code sample sets max_output_tokens to 300. 300 is not 25,000. 25,000 divided by 300 is 83.333. The page does not print 83.333. 300 is not 16, the minimum on the reference. 16 times 16 is 256. 256 is not 300. The guide's code looks for status incomplete and reason max_output_tokens. The streaming example never sends that event. Do not copy 300 onto a response whose cap is null, and do not copy 1024 onto a response whose reasoning_tokens are 0 (OpenAI, Reasoning models).

The token counts people quote when they want a budget did not open this log. Tingxu Han, Zhenting Wang, Chunrong Fang, Shiyu Zhao, Shiqing Ma, and Zhenyu Chen, at Nanjing University, Rutgers, and UMass Amherst, study token budgets in chain-of-thought. Figure 1, on GPT-4o-mini, prints direct answering at 15 output tokens, vanilla chain-of-thought at 258, an unreasonable budget at 157, and a reasonable budget at 86. 15 is not 258. 258 minus 86 is 172. 172 divided by 258 is two thirds, 66.67 percent. The page does not print 66.67. A later sentence says TALE-EP reduces token usage by 67 percent on average, with less than a 3 percent accuracy drop. 67 is not 66.67, and an average is not this figure. 3 is not 67. The reasonable budget in the example is 50 tokens, and the output is 86. 86 is not 50. 86 minus 50 is 36. The unreasonable budget is 10, and the output is 157. 157 is not 10, and 157 is larger than 86. The caption calls 157 nearly twice the 86. 86 times 2 is 172. 172 is not 157. 157 divided by 86 is 1.826. The page does not print 1.826 or 172. TALE-PT cuts usage by around 50 percent compared with vanilla chain-of-thought. 50 percent is not 67 percent, and 50 percent is not the budget of 50 tokens. 1024 on the reasoning guide is not 258, and 300 is not 50. None of these is a response id (Han, Wang, Fang, Zhao, Ma, and Chen, Token-Budget-Aware LLM Reasoning).

Do the three proofs on one real response, in the log that stored the call. First, the binding. Copy the response id, the status, incomplete_details, and max_output_tokens. If incomplete_details is null, write null, and write the status that is actually stored. If the reason is max_output_tokens, write the cap that was set, and write the output token count beside it. If reasoning_tokens are present, write them, and write the difference from output_tokens if you computed it. Do not borrow 300 from a guide, and do not borrow 258 from a paper. Second, the other response. A different id, even with status completed, is not this one. The streaming sample and the image sample are that shape, and they are still samples. A paper's average is not that second response. Third, the other log. A list that belongs to another customer does not contain this id. If the only list is one shared assistant, write that. A tenant you cannot name is the finding.

Three moves feel like the proof and are a second problem. Raising the cap and calling the old reply complete, which creates a new response and does not fill the null on the one the customer saw. Quoting 67 percent or 25,000 because they look precise, while the detail you were asked about is one field, and the paper that printed 67 had already used 67 for an average that is not the 66.67 percent on its own figure. Asking the model which detail it omitted. The model will pick a plausible reason. It will not open the object. An output you have not kept is which output did that response hold?. Opening that item does not name this reason.

The path is ordinary when an operator can open one customer's response without opening the next customer's response as the way to prove it. Veritas AI is a fraud detection API for multi-tenant SaaS: behavior and anomaly models, and an enterprise dashboard, distinct from the next customer's log. It is not an incomplete-details ledger. Nothing in that sentence 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. The request was not logged. A customer has already seen another customer's data. Naming a response id does not close a leak. The wrong value was already written back to a system of record. An incomplete detail 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. 67 is not your cap, and 300 on a sample is not your cap.

When the feature is already live and the log does not store the detail, the missing object is specific. A record, in an account you administer, of the status, the reason, and the token cap, or a written line that incomplete_details was null, plus a different response that is not that one, plus another log that does not hold it. 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. The engagement runs eight to twelve weeks. The build is unpaid if the agreed metric 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 stop when the cap changes. The paper's averages will not be that score. If the first slice is a fixed capability, an AI integration sprint is the shape where the acceptance sentence can include the three proofs.

Before you tell anyone which detail the response omitted, do the three proofs and write the status. Name the status, the reason, and the token cap, or write that incomplete_details was null. Show a different response that is not that one, even if both are completed. Show another log that does not contain it. Do not paste max_output_tokens onto a null, and do not paste 67 from the average onto a figure whose own subtraction is two thirds. The binding is the detail you can defend.

Questions

You stop treating a finished sentence as the detail the response omitted, and you stop asking the model why it stopped, until you can name the status, the reason, and the token cap, or write that incomplete_details was null. Show a different response whose status or reason is not this one, and show that another log does not hold it. If the cap was never stored, write that.

No. An average reduction across other people's prompts is not the cap on this response. A detail you can defend is the status, the reason, and the token cap, or a written line that the field was null. 67 in one paper is not max_output_tokens 300, and 25,000 on a guide is not your log.

When nothing is in production, when no model is being called, when the request was not logged, when a customer has already seen another customer's data, when the wrong value was already a write, or when no metric was ever named.

Find this useful? Tell Google to show you more of it.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→