mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-07 10:04:58 +03:00
Всё, что уходит провайдеру, проходит слой псевдонимизации вместо безвозвратного redact: prepare_chat маскирует сообщения картой хода, prepare_embedding — вопрос клиента для вектора (plan_query_embedding и KnowledgeRetriever). Известные значения хода — имя, e-mail и телефон контакта диалога (SPEC-0022 R-1, R-2). Карта одна на вектор вопроса и на запрос к модели, едет через Turn и TurnPlan в памяти. record_turn возвращает ответ с подставленными значениями: он сохраняется в диалог и отправляется клиенту. Неизвестные и искажённые токены удаляются, в журнал пишется только их число (R-5). В LlmInvocation, логи и события карта не попадает (R-6). invoke_chat (предпросмотр и ход одним шагом) работает по тем же правилам. Функция redact удалена, шаблоны pii.py остались. Реестр предохранителей провайдеров вынесен из invocation.py в provider/breakers.py.