function decide<TAdapter, TQuestions>(options): Promise<{ [K in string | number | symbol]: InferEvaluateAnswer<TQuestions[K]> } & object>;Defined in: packages/ai/src/activities/evaluate/index.ts:493
Ask typed questions about state and get answers your code can branch on.
You have state (a ticket, a record, a log) and you need typed answers, not prose. Pass questions built with choice, score, and boolean. Then branch on result.queue.value in ordinary TypeScript.
The question key meta is reserved. Throws if questions is empty or uses that key.
TAdapter extends EvaluateAdapter<string, EvaluateProviderOptions<TAdapter>>
TQuestions extends Record<string, WireQuestion>
EvaluateActivityOptions<TAdapter, TQuestions>
Promise<{ [K in string | number | symbol]: InferEvaluateAnswer<TQuestions[K]> } & object>
Route a support ticket
import { decide, choice, score, boolean } from '@tanstack/ai'
import { typesafeDecider } from '@tanstack/ai-typesafe'
const result = await decide({
adapter: typesafeDecider('jev-latest'),
state: ticket,
questions: {
queue: choice({
instructions: 'Which team should handle this ticket?',
options: {
billing: 'Payments, invoices, refunds',
tech: 'Bugs, outages, integrations',
sales: 'Pricing, upgrades, new accounts',
},
}),
urgency: score({
instructions: 'How urgent is this ticket?',
levels: ['low', 'medium', 'high'],
}),
refund: boolean({
instructions: 'Is the customer asking for a refund?',
}),
},
})
result.queue.value
result.meta.model
result.meta.usage