Step 1: Collect Jev's probabilities
Tallyboard's support bot caches every answer it writes. When a new question arrives, it finds the closest cached question and asks Jev one thing: can the cached answer be sent, unchanged, as the answer to the new question? A yes skips a model call and replies at once.
pairs.jsonl holds 160 such pairs, each labelled reusable by hand.
Many are easy: a paraphrase ("team plan price per user?") or a different
topic. The hard ones differ by one detail. "Team, 5 seats, annual"
against "Team, 6 seats, annual" is not reusable. "Can we pay in euros?"
against "Can we pay in British pounds?" is: the cached "No. We bill only
in US dollars." answers both.
The pairs are split by cache entry. Eight cached questions and their
pairs form dev; the other eight form test. Everything you tune in
this lab is tuned on dev and then checked on questions it never saw.
Do this
Open calib.py.
1. Write ask(pair, question=REUSE_QUESTION, post=jev.post). One
post with the state {"cached_question", "cached_answer", "new_question"} from the pair and a single noul question named
"reuse" whose instructions are question. Return the probability.
2. Write collect(pairs, question=REUSE_QUESTION, post=jev.post).
Ask about every pair through ThreadPoolExecutor(16), keep the order,
and return a numpy array.
3. Run. A few dev pairs with their probability and label, then a histogram of the dev split by probability. Reusable pairs average about 0.66 and the rest about 0.10, and almost no pair crosses sides. Look where the reusable pairs sit, though: most of them are between 0.5 and 0.9, and few are above 0.9.