Agent Observability
SDKsPython

Judges

The nine LiveKit-compatible judges shipped by agent-observability-sdk, plus the default_judges() composition helper. Drop them into a JudgeGroup or an agent-transport EvaluationConfig.

The SDK ships nine judges that plug straight into LiveKit's JudgeGroup alongside LiveKit's own built-ins. Seven are LLM-based factories; two are programmatic (no LLM call).

LLM-based (7 factories)

Each returns a LiveKit _LLMJudge you pass straight to a JudgeGroup.

JudgeRequired at constructionPurpose
hallucination_judge(llm=…)Fabricated info in the response?
rigid_response_accuracy_judge(*, expected_response, llm=…)expected_responseSemantic match against an expected text.
freeflow_response_accuracy_judge(llm=…)Contextually appropriate in an open-ended conversation?
hold_requested_intent_accuracy_judge(llm=…)Was a "hold" / "wait" reply justified?
variable_extraction_judge(*, expected_variables, actual_variables, llm=…)expected_variables, actual_variablesRight values extracted, grounded in the transcript?
loop_detection_judge(llm=…)Agent repeating itself?
knowledge_base_correctness_judge(*, kb_context, llm=…)kb_contextKB lookup faithfully reflected?

Programmatic (2 classes, no LLM call)

JudgeRequired at constructionPurpose
IntentAccuracyJudge(*, expected_intent, actual_intent)expected_intent, actual_intentCase-insensitive string match.
ToolCorrectnessJudge(*, expected_tools, threshold=1.0)expected_toolsAuto-extracts function_call events from chat_ctx; set-membership scoring.

Composition helper

default_judges(llm=None) -> list[Judge] returns the four ground-truth-free judges — Hallucination, Freeflow Response Accuracy, Hold-Requested Intent Accuracy, Loop Detection — that work on any session in isolation. Spread it next to your own ground-truth-bound judges:

from agent_observability.livekit.judges import (
    default_judges,
    IntentAccuracyJudge,
    rigid_response_accuracy_judge,
)
from livekit.agents.evals import accuracy_judge

judges = [
    accuracy_judge(),                                            # LiveKit built-in
    rigid_response_accuracy_judge(expected_response="…", llm=judge_llm),
    IntentAccuracyJudge(expected_intent="book_flight", actual_intent=…),
    *default_judges(llm=judge_llm),
]

Use them in a raw-LiveKit worker via run_judges_on_report, or pass them to an agent-transport EvaluationConfig.

On this page