LLM-шлюз (SPEC §7): единая точка входа app/llm/gateway.py, провайдеры GigaChat и офлайн-mock, системные промпты с запретами, фильтр ответов и шаблоны-fallback в config/texts/phrases.yaml.
Single entry point app/llm/gateway.py: extract_item, extract_checkin,
risk_classify, phrase, summarize_for_doctor. Two-level design:
LLMProvider (transport, GigaChat) and LLMTasks (PromptedTasks over a
provider, or rule-based MockTasks). Shared policy in the gateway:
assert_scrubbed backstop, confidence threshold 0.5, risk failure -> NONE,
forbidden-output filter with config/texts/phrases.yaml fallbacks.
Refs #7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Что меняется
LLM-шлюз (SPEC §7): единая точка входа
app/llm/gateway.py, провайдеры GigaChat и офлайн-mock, системные промпты с запретами, фильтр ответов и шаблоны-fallback вconfig/texts/phrases.yaml.Closes #7
Зона
bot
Как проверить
make lint test:tests/test_llm.py— 52 теста, live-тест пропускается без ключаpython -m app.llm.cli extract "сплю плохо, кошмары почти каждую ночь"— после #2 (scrub); сейчас корректно отказывается без scrubПубличный API
Те же функции доступны на уровне модуля (
gateway.extract_item(...)и т.д.).Чек-лист