In production you cannot judge every conversation with an expensive model, and you do not need to. Split the work:
- Cheap checks on everything: empty replies, cut-off replies, and simple rules such as "a refund-window answer states 30 days". They cost almost nothing.
- A judge on a sample: as many conversations as the budget allows.
- Promotion: when a real conversation fails, it becomes a regression case, so the next release is tested on what customers actually asked.
Watch the daily fail rate. A drift alarm fires on the first day whose rate is above 0.10 and more than twice the mean of the first three days.
Your task
- Write the cheap checks and the drift alarm in
sample.py. - Work out what share of traffic the judge budget covers.
- Promote at least three failing logged questions to
promoted.jsonl. On submit they run against the current bot, which must pass them, and a drifted one, which must fail at least one.