Recipe catalog / error-acknowledgment
Check whether a message acknowledges a mistake
Does message explicitly acknowledge an earlier mistake and state a correction, rather than silently changing course or ignoring it?
An agent has been shown to be wrong earlier in a conversation and you want to verify that its follow-up owns the error and states the fix, rather than quietly switching answers.
Explore this recipe interactively ยท Source and implementation guide
Use error-acknowledgment in TypeScript
Install with npm install jev-recipes. Requires Node.js 22.9 or newer and ES modules. Set TYPESAFE_API_KEY in your server environment for live calls, which send input to TypeSafe and use API quota. See the installation guide.
import { errorAcknowledgment } from 'jev-recipes/error-acknowledgment';
const result = await errorAcknowledgment({
"message": "I need to correct something I said earlier: I told you the API returns timestamps in your local time zone. That was wrong. It returns UTC, which is why you saw the three-hour offset. I have updated the example to parse the field with a UTC-aware formatter, so the times should now line up with your logs.",
"context": "Two turns earlier the assistant stated that the /events endpoint returns timestamps in the caller's local time zone. The user then reported a consistent three-hour offset.",
"minConfidence": 0.8
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| message | string | Required |
| context | string | Optional |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"message": {
"type": "string"
},
"context": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"message"
]
},
"result": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"model": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"input_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"input_tokens",
"output_tokens"
],
"additionalProperties": false
},
"status": {
"type": "string",
"enum": [
"ready",
"review"
]
},
"probability": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"verdict": {
"type": "string",
"enum": [
"acknowledged",
"absent"
]
}
},
"required": [
"model",
"usage",
"status",
"probability",
"confidence",
"verdict"
],
"additionalProperties": false
}
}Saved example result
This hand-authored response demonstrates the contract. It is not a model accuracy measurement. Run it without an API key: npx jev-recipes demo error-acknowledgment.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"probability": 0.95,
"confidence": 0.95,
"verdict": "acknowledged"
}
Evaluation evidence
No verified live accuracy measurement is available. Evaluate representative cases before using this decision in your workflow.
Use the evaluation guide to measure this decision on your own labeled cases.
Limitations
- Judges the wording of message, not whether the earlier statement really was wrong or whether the stated correction is right.
- Without context, the recipe cannot tell whether an acknowledgment refers to a real earlier turn; it judges only that the message names a mistake and a correction.
- Does not judge tone. A curt acknowledgment passes, and an effusive apology with no stated correction fails.
Related recipes
- correction-target: Use correction-target to identify which earlier statement a correction refers to, rather than whether the message acknowledges an error at all.
- uncertainty-expression: Use uncertainty-expression to grade how the message hedges, rather than whether it admits a prior mistake.