Recipe catalog / preference-kind
Identify a stated preference
Does statement express an ongoing preference, a factual assertion, or a temporary request?
You need to distinguish an ongoing preference from a fact or temporary request.
Explore this recipe interactively ยท Source and implementation guide
Use preference-kind 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 { preferenceKind } from 'jev-recipes/preference-kind';
const result = await preferenceKind({
"statement": "For this reply, please use bullet points."
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| statement | 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": {
"statement": {
"type": "string"
},
"context": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"statement"
]
},
"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"
]
},
"verdict": {
"type": "string",
"enum": [
"preference",
"fact",
"temporary_request",
"unclear"
]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"probabilities": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"preference",
"fact",
"temporary_request",
"unclear"
]
},
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"required": [
"preference",
"fact",
"temporary_request",
"unclear"
]
}
},
"required": [
"model",
"usage",
"status",
"verdict",
"confidence",
"probabilities"
],
"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 preference-kind.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"verdict": "temporary_request",
"confidence": 0.96,
"probabilities": {
"preference": 0,
"fact": 0,
"temporary_request": 1,
"unclear": 0
}
}
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
- Classifies a statement. It does not infer unexpressed preferences or grant permission to store personal information.
Related recipes
- motivation-source: Use motivation-source to classify a stated reason for an activity rather than the kind of statement.
- memory-scope: Use memory-scope to identify the supported scope of that preference.