What it answers
superdialog eval answers one question: does running your playbook on the
SuperDialog engine beat handing the same playbook to a raw LLM as a flat system
prompt?
It drives two modes over one dataset and scores both from the conversation
transcript only - never from engine internals - so the playbook and the
vanilla baseline face an identical rubric. Use it to justify adopting the
engine, to catch regressions, or to expose your playbook to any external
benchmark.
This is different from
superdialog optimize and the persona-eval loop in the
API Reference. That
loop asks “is this playbook good enough, and how do I improve its prose?” - the
A/B harness here asks “is the playbook machinery earning its keep over a
plain prompt?”The two modes
The runner only sees
str in / str out, so a mode is just a factory that
returns a conversation endpoint. Endpoints ship for in-process playbook /
vanilla, a remote HTTP SuperDialog server, and any OpenAI-compatible model.
Headline metrics
efficiency and token_cost are pure code - no judge tokens, no added
latency - so every run includes them regardless of --metrics. The report
gains a Latency & tokens table (p50/p95, input tok/turn, director/talker
split, LLM calls/turn) and a framework score: zero unless quality is
perfect (task_success=1, slot_accuracy=1, guardrail clean), then higher
for lower latency and fewer tokens - the framework’s goal as one number.Run it
Two phases: build the dataset once (offline, commit it), then A/B-run it.eval run flags:
The dataset format mirrors the RAGAS single-/multi-turn shape: each case carries
a persona,
ground_truth_slots, and a list of probes. A persona may also define
afterlife_probes - utterances sent after the session ends, asserted on by the
suite runner’s silent_afterlife check (above).
Or run both phases in one shot with eval bench - it builds the dataset if
missing (--regen rebuilds, --personas seeds), A/Bs every --models entry
into its own report directory, and adds --max-turns to override each
persona’s turn budget:
Gate a suite in CI
eval run and eval bench produce scores you eyeball. superdialog eval suite
turns a set of benches into a one-command, CI-able behavioral regression
gate: each suite pins a playbook, dataset, and models to the expectations
that made the run worth doing (this case must fire the goodbye interrupt, that
control must not; this case must not answer after it ended).
expect entry asserts one case’s behavior from the run’s report and log:
Tiers, skip-if-unchanged, and quota fallback.
--tier smoke runs only each
suite’s smoke_cases; --tier full runs everything. A content hash of
playbook + dataset + params is stamped in the out dir, so unchanged suites are
skipped unless --force. A run that dies on provider quota
(insufficient_quota / 429) is retried once with the suite’s
fallback_judge / fallback_user; behavioral checks (goodbye, route,
afterlife, repeats) always gate, but score floors (task_success,
composite) downgrade to advisory under the fallback judge since they were
calibrated against the primary one. The command exits non-zero if any suite
fails or errors.Serve it to an external benchmark
Expose the playbook as an OpenAI-compatible endpoint and grade it like any other model:RAGAS is optional (and version-pinned)
The custom LLM judges produce every headline metric with no RAGAS installed. RAGAS metrics are opt-in via theragas extra:
Legacy session audit
The older single-session audit lives under the same command group:eval
subcommand.