lct-07 и lct-19: звонящий на LLM, офлайн-таблица, предгенерация
Что можно сказать, решает слот-автомат, а не модель: в промпт попадают только раскрытые факты. Иначе LLM услужливо назовёт адрес, которого не спрашивали. Промпты лежат файлами — их правит тот, кто ведёт занятия. Отказ провайдера не роняет занятие: звонящий откатывается на заготовки. Молчащий звонящий хуже шаблонной фразы. Офлайн — таблица, а не локальная модель. Ветвление уже делает слот-автомат, поэтому таблица индексируется парой «событие × настроение» и выходит небольшой: для пожарного сценария 62 реплики, около 36 секунд генерации. Формулировки в ней от облачной модели, а задержка на занятии нулевая — локальная 3–4B дала бы формулировки хуже и за 2.5 секунды. Найдено на бесплатной модели OpenRouter: рассуждающие модели тратят сотни токенов на размышление и при малом бюджете возвращают пустой content с finish_reason=length. Пустой ответ теперь честный отказ, бюджет токенов поднят, рассуждение из ответа исключается. Живые запросы к LLM вынесены из общего прогона: они требуют сети, а рассуждающая модель отвечает десятками секунд.
This commit is contained in:
parent
34eb88270e
commit
2ceb26f2cd
19 changed files with 888 additions and 26 deletions
12
Makefile
12
Makefile
|
|
@ -47,6 +47,12 @@ seed: ## Залить сценарии из /scenarios в БД
|
|||
lesson: ## Запустить занятие и напечатать ссылки: make lesson s=<сценарий> m=<режим>
|
||||
cd backend && $(UV) run --no-project --with websockets python scripts/start_lesson.py "$(s)" "$(m)"
|
||||
|
||||
test-llm: ## Живые проверки LLM по backend/.env.test (медленно: рассуждающая модель)
|
||||
cd backend && $(UV) run --extra dev pytest tests/test_llm.py -m llm -q -s
|
||||
|
||||
llm-check: ## Один запрос к LLM: проверить ключ и адрес из backend/.env
|
||||
cd backend && $(UV) run python scripts/llm_check.py
|
||||
|
||||
latency: ## Замер задержки голосового контура по этапам — запускать на демо-машине
|
||||
cd backend && $(UV) run --extra voice python scripts/latency.py
|
||||
|
||||
|
|
@ -59,10 +65,10 @@ revision: ## Создать миграцию: make revision m="что измен
|
|||
repl: ## Текстовый диалог со звонящим без голоса: make repl s=<сценарий>
|
||||
cd backend && $(UV) run python scripts/repl.py "$(s)"
|
||||
|
||||
pregen: ## Дерево диалога и WAV первых реплик для офлайна
|
||||
@echo "не реализовано — карточка tasks/lct-19-reference-dialog.md"; exit 1
|
||||
pregen: ## Построить таблицу реплик звонящего для офлайна: make pregen s=<сценарий> force=1
|
||||
cd backend && $(UV) run python scripts/pregenerate.py "$(s)"
|
||||
|
||||
demo: ## Поднять стенд для занятия: база, сценарии, бэкенд с голосом, фронт
|
||||
./scripts/demo.sh
|
||||
|
||||
.PHONY: help dev down back front types test test-voice typecheck lesson latency migrate revision models seed repl pregen demo
|
||||
.PHONY: help dev down back front types test test-voice typecheck test-llm lesson llm-check latency migrate revision models seed repl pregen demo
|
||||
|
|
|
|||
Loading…
Reference in a new issue