RAG support bot для fintech-продукта
Нужно построить support bot для fintech-приложения. Какие компоненты нужны и как снизить риск неправильного ответа?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Нужны knowledge base, retrieval, answer generation with citations, escalation, policy guardrails, feedback loop и мониторинг unsafe answers.
Подробный разбор
Для support bot сначала определяем scope: какие вопросы бот может решать сам, какие обязан эскалировать оператору. Knowledge base индексируется для retrieval, документы версионируются, а ответ должен ссылаться на источники или хотя бы сохранять evidence.
В fintech нельзя отвечать свободно на любые темы. Нужны policy rules: запрет на финансовые советы вне разрешенного scope, проверка персональных данных, authentication/authorization, escalation для спорных случаев. Retrieval должен работать только по актуальным и разрешенным документам.
Production loop: логируем вопросы, retrieved docs, answer, feedback, escalation reason. На основе ошибок улучшаем документы, retrieval и prompts.
Типичные ошибки
- Считать, что RAG автоматически делает ответ безопасным.
- Не отделить FAQ от account-specific actions.
- Не иметь human escalation.
Как сказать на собеседовании
- Подчеркни fintech risk и policy guardrails.
- Добавь citations/evidence и feedback loop.
Private attributes и name mangling в Python
Что означают _attr и __attr в Python class, и чем convention отличается от name mangling?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
_attr - convention: internal use. __attr запускает name mangling в _ClassName__attr, чтобы снизить риск случайного override.Подробный разбор
В Python нет настоящих private fields как в некоторых языках. Один underscore _name - соглашение: это internal implementation detail, но доступ технически открыт.
Два underscores __name включают name mangling: внутри класса атрибут превращается примерно в _ClassName__name. Это помогает избежать случайного конфликта имен в subclass, но не является security boundary.
Trailing double underscores вроде __init__ - отдельный случай: dunder methods, специальные протоколы Python.
Типичные ошибки
- Считать `__attr` настоящей приватностью.
- Путать `_attr`, `__attr` и `__dunder__`.
- Использовать name mangling без необходимости.
Как сказать на собеседовании
- Скажи convention vs name mangling.
- Подчеркни, что это не защита данных.
Temperature, top-k, top-p и max length в LLM generation
Объясните основные параметры генерации LLM: temperature, max length, top-k и top-p. Как они влияют на ответы support bot?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Temperature управляет остротой распределения, top-k/top-p ограничивают множество кандидатов, max length ограничивает длину ответа.
Подробный разбор
Temperature меняет распределение вероятностей следующего токена: низкая temperature делает ответы более детерминированными, высокая повышает разнообразие и риск странных формулировок. Для support bot обычно нужна низкая или умеренная temperature.
Top-k оставляет только k наиболее вероятных токенов. Top-p оставляет минимальное множество токенов, суммарная вероятность которого достигает p. Эти методы ограничивают sampling tail.
Max length ограничивает число генерируемых токенов. Для support bot это защита от слишком длинных ответов и runaway generation, но слишком маленький лимит может обрезать важную инструкцию.
Типичные ошибки
- Думать, что высокая temperature улучшает factual accuracy.
- Путать top-k и top-p.
- Не связывать параметры с продуктовым риском.
Как сказать на собеседовании
- Для support bot скажи low temperature.
- Объясни top-p как nucleus sampling.
Зачем нужен `torch.no_grad()` на inference
В PyTorch inference код часто оборачивают в torch.no_grad(). Что это дает и когда это важно?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
no_grad() отключает построение autograd graph, снижает память и overhead на inference, где gradients не нужны.Подробный разбор
Во время training PyTorch сохраняет промежуточные значения, чтобы потом посчитать gradients. На inference gradients не нужны, поэтому построение autograd graph только тратит память и время.
torch.no_grad() говорит PyTorch не отслеживать операции для autograd. Это особенно важно для больших моделей, batch inference и production service, где memory footprint влияет на throughput.
Для новых версий PyTorch есть еще torch.inference_mode(), который может быть еще эффективнее, но имеет более строгие ограничения.
Типичные ошибки
- Думать, что `no_grad()` меняет веса модели.
- Забывать `model.eval()` для dropout/batchnorm.
- Использовать `no_grad()` во время training step.
Как сказать на собеседовании
- Свяжи no_grad с memory и autograd graph.
- Упомяни `model.eval()` как отдельную вещь.