This commit is contained in:
2026-07-19 23:52:25 +04:00
commit 99b06b0468
155 changed files with 3808611 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
"""Build the small, human-labelled route holdout set.
These utterances are not consumed by gen_route_data.py and must never be added
to route_train.jsonl. Labels follow the daemon's current JSON-array contract.
"""
import json
from pathlib import Path
from gen_route_data import ROUTE_SYSTEM, valid_actions
OUT = Path(__file__).resolve().parent / "data" / "route_eval.jsonl"
CASES = [
("напомни завтра позвонить врачу", [{"intent":"reminder","text":"позвонить врачу"}]),
("запиши купить новые батарейки", [{"intent":"note","text":"купить новые батарейки"}]),
("я только что полил цветы", [{"intent":"fact","key":"flowers","value":"полил"}]),
("что такое обратный прокси", [{"intent":"query","text":"что такое обратный прокси"}]),
("перезапусти медиасервер", [{"intent":"act","verb":"перезапустить медиасервер"}]),
("который сейчас час", [{"intent":"system"}]),
("как у тебя дела", [{"intent":"chat","text":"как у тебя дела"}]),
("сохрани адрес мастерской", [{"intent":"note","text":"адрес мастерской"}]),
("напомни проверить резервную копию вечером", [{"intent":"reminder","text":"проверить резервную копию"}]),
("сервер снова доступен", [{"intent":"fact","key":"server","value":"доступен"}]),
("почему контейнер постоянно перезапускается", [{"intent":"query","text":"почему контейнер постоянно перезапускается"}]),
("выключи свет на кухне", [{"intent":"act","verb":"выключить свет на кухне"}]),
("очисти свою память", [{"intent":"system"}]),
("ну и денёк сегодня", [{"intent":"chat","text":"ну и денёк сегодня"}]),
("запомни, что код от калитки изменился", [{"intent":"note","text":"код от калитки изменился"}]),
("я закончил отчёт", [{"intent":"fact","key":"report","value":"закончил"}]),
("покажи свободное место на диске", [{"intent":"act","verb":"показать свободное место на диске"}]),
("какая погода ожидается утром", [{"intent":"query","text":"какая погода ожидается утром"}]),
("напомни через час достать бельё", [{"intent":"reminder","text":"достать бельё"}]),
("приятно снова тебя слышать", [{"intent":"chat","text":"приятно снова тебя слышать"}]),
("напомни купить молоко и запиши что кофе закончился", [
{"intent":"reminder","text":"купить молоко"},
{"intent":"note","text":"кофе закончился"}]),
("проверь диск и потом напомни посмотреть результат", [
{"intent":"act","verb":"проверить диск"},
{"intent":"reminder","text":"посмотреть результат"}]),
("я принял лекарство, запиши дозировку пять миллиграммов", [
{"intent":"fact","key":"medicine","value":"принял"},
{"intent":"note","text":"дозировка пять миллиграммов"}]),
]
def main() -> None:
lines = []
for utterance, actions in CASES:
assert valid_actions(actions)
lines.append(json.dumps({"messages": [
{"role":"system","content":ROUTE_SYSTEM},
{"role":"user","content":utterance},
{"role":"assistant","content":json.dumps(actions, ensure_ascii=False)},
], "intents":[a["intent"] for a in actions], "source":"human/route-eval"},
ensure_ascii=False))
OUT.write_text("\n".join(lines) + "\n", encoding="utf-8")
print(f"wrote {len(lines)} held-out route cases -> {OUT}")
if __name__ == "__main__":
main()