check_drug_for_patient — детерминированная проверка препарата под карту пациента.
Провайдеры: OpenRouter (временно, только синтетика) и офлайн-mock; GigaChat — следующим шагом. Включается при OPENROUTER_API_KEY (или CHAT_AGENT=mock). На вход провайдеру идёт только обезличенный текст, на выходе стоит фильтр запретов. При любой ошибке ответ даёт прежний экстрактивный RAG или med_qa.
Как проверить
make lint test; CHAT_AGENT=mock uv run python -m app.llm.agent "Можно ибупрофен вместе с моими таблетками?"
## Что меняется
Чат-агент: свободные вопросы о лечении и о лекарствах обрабатывает LLM с инструментами (только чтение, привязаны к токену текущего пациента):
- `search_guidelines` — RAG по КР (депрессия 2024, ПТСР 2023), дозировки вырезаются;
- `get_patient_record` — мок карты ЕМИАС: диагнозы, сопутствующие заболевания, непереносимости, назначения других врачей, текущее назначение;
- `get_drug_info` — состав, противопоказания, взаимодействия;
- `check_drug_for_patient` — детерминированная проверка препарата под карту пациента.
Провайдеры: OpenRouter (временно, только синтетика) и офлайн-mock; GigaChat — следующим шагом. Включается при `OPENROUTER_API_KEY` (или `CHAT_AGENT=mock`). На вход провайдеру идёт только обезличенный текст, на выходе стоит фильтр запретов. При любой ошибке ответ даёт прежний экстрактивный RAG или `med_qa`.
## Как проверить
`make lint test`; `CHAT_AGENT=mock uv run python -m app.llm.agent "Можно ибупрофен вместе с моими таблетками?"`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Free-text treatment and medication questions go to an LLM agent with read-only tools bound to the current
patient: guideline search (RAG, doses stripped), ЕМИАС record mock (diagnoses, comorbidities, intolerances,
other specialists' drugs, current prescription), drug info (composition, contraindications, interactions)
and a deterministic patient-specific check. Providers: OpenRouter (temporary, synthetic data only) and an
offline mock; GigaChat to follow. Scrubbed input only, forbidden-output filter, any failure falls back to
the existing extractive RAG / instruction answers. Off unless OPENROUTER_API_KEY or CHAT_AGENT=mock.
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 с инструментами (только чтение, привязаны к токену текущего пациента):
search_guidelines— RAG по КР (депрессия 2024, ПТСР 2023), дозировки вырезаются;get_patient_record— мок карты ЕМИАС: диагнозы, сопутствующие заболевания, непереносимости, назначения других врачей, текущее назначение;get_drug_info— состав, противопоказания, взаимодействия;check_drug_for_patient— детерминированная проверка препарата под карту пациента.Провайдеры: OpenRouter (временно, только синтетика) и офлайн-mock; GigaChat — следующим шагом. Включается при
OPENROUTER_API_KEY(илиCHAT_AGENT=mock). На вход провайдеру идёт только обезличенный текст, на выходе стоит фильтр запретов. При любой ошибке ответ даёт прежний экстрактивный RAG илиmed_qa.Как проверить
make lint test;CHAT_AGENT=mock uv run python -m app.llm.agent "Можно ибупрофен вместе с моими таблетками?"🤖 Generated with Claude Code