jev·agent

← All use cases

Use case · Noul

Agent output guardrails with Jev

Ask several yes/no verification questions about a draft response in one parallel call, and block or regenerate when any probability crosses your line.

The problem

Verifying LLM output usually means a second LLM pass (doubling cost and latency) or a pile of brittle regexes that miss anything semantic.

How Jev handles it

Because questions run in parallel against one state, a battery of checks costs about what one costs. Put it on the way out, between generation and the user.

python
response = client.system_one(
    model="jev-latest",
    state=draft_response,
    questions={
        "answers": Noul(
            instructions="Does this answer the user's question?",
            criteria=NoulCriteria(true="Directly addresses the ask",
                                  false="Evasive or off-topic"),
        ),
        "no_pii": Noul(
            instructions="Is this free of personal data?",
            criteria=NoulCriteria(true="No names, emails, addresses or IDs",
                                  false="Contains personal data"),
        ),
        "on_brand": Noul(
            instructions="Is the tone professional?",
            criteria=NoulCriteria(true="Courteous and appropriate",
                                  false="Rude, flippant or off-brand"),
        ),
        "no_promise": Noul(
            instructions="Is this free of commitments we cannot keep?",
            criteria=NoulCriteria(true="Makes no guarantee about dates or outcomes",
                                  false="Promises a refund, date or result"),
        ),
    },
)

a = response.answers
if a["no_pii"].noul < 0.9 or a["answers"].noul < 0.7:
    return regenerate_or_escalate()

Notes from the field