Generate, Evaluate, Route¶
A generative model writes a draft; Jev evaluates it against explicit evidence; Kedi selects the next operation. Neither the draft nor a high probability is permission to send a message or perform a financial action.
This example requires kedi[typesafe], pydantic-ai-slim[openai] and
credentials for both integrations. It prints a review result; it does not send
email. Model availability is a provider prerequisite, not a compiler guarantee.
> adapter: pydantic
@draft_reply(ticket: str, policy: str) -> str:
> model: openai:gpt-5.6-luna
>> Customer request: <ticket>.
Policy: <policy>.
A brief reply that does not invent completed actions is [reply].
= `reply`
@check_reply(reply: str, policy: str) -> bool:
> model: typesafe/jev-latest
> settings:
typesafe_threshold: 0.9
>> Given policy <policy>, does reply <reply> avoid unsupported commitments?
It is [supported: bool] that the reply is supported by the policy.
= `supported`
[ticket] = Please refund my duplicate payment today.
[policy] = A reviewer must verify duplicate charges before approving refunds.
[reply] = `draft_reply(ticket, policy)`
[supported: bool] = `check_reply(reply, policy)`
> if: `supported`:
= Draft for human review: <reply>
> else:
= Manual review required; do not send the draft.
Boundaries¶
The first procedure can generate arbitrary prose. The second produces a boolean using Jev's strict threshold policy, not a generative text fallback. Unsupported schemas and provider failures remain errors rather than becoming a negative decision. The final branch is deterministic because it reads an existing bool.
The program deliberately does not retry until acceptance. A revision loop needs an explicit attempt budget, fresh evaluation of each revision, and a terminal manual-review outcome. Such a policy belongs to the application, not to hidden adapter behavior.
Use decision capture around an embedding call to
retain the check_reply output's evidence after its procedure frame ends.
The caller's deterministic supported initialization is not itself a new Jev
evaluation record.