Боты поддержки: дёшево и быстро на Flash-моделях
Как собрать бота первой линии, который отвечает за доли секунды и не разоряет. Flash/Mini модели, стриминг, эскалация на человека.
Анна Величко
Боты поддержки: дёшево и быстро на Flash-моделях
Бот поддержки — это не место для флагманской модели. 90% обращений — это «как сбросить пароль», «где мой заказ», «какие способы оплаты». На таких вопросах разницы между тяжёлой и лёгкой моделью пользователь не заметит, а разница в счёте — на порядок.
Ставка на Flash/Mini
deepseek-flash, qwen-flash, gemini-flash — модели для массового дешёвого инференса. Отвечают за доли секунды, стоят копейки за 1M токенов. Их сильная сторона — не глубина рассуждений, а скорость и стабильность на типовых запросах, а именно это и нужно первой линии.
Стриминг обязателен
Пользователь в чате не должен смотреть на «бот печатает…» три секунды. Включайте stream=True — ответ пойдёт по мере генерации, воспринимается как мгновенный:
stream = client.chat.completions.create( model="deepseek-flash", messages=messages, stream=True, temperature=0.3,)async for chunk in stream: token = chunk.choices[0].delta.content if token: await ws.send(token)Низкая temperature (0.2–0.4) держит бота в рамках: меньше фантазий, больше предсказуемости. Для поддержки это то, что нужно.
RAG вместо памяти
Не заставляйте модель знать вашу базу знаний наизусть — она этого не умеет и начнёт выдумывать. Подкладывайте релевантные статьи из документации через эмбеддинги (bge-m3) и жёстко ограничивайте: «отвечай только по этим материалам, иначе передай человеку».
Эскалация на человека
Бот должен уметь сказать «не знаю» и позвать оператора. Оформите это как инструмент:
tools = [{"type": "function", "function": { "name": "escalate_to_human", "description": "Передать диалог живому оператору, когда бот не может помочь", "parameters": {"type": "object", "properties": { "reason": {"type": "string"}}, "required": ["reason"]},}}]Триггеры эскалации: три неудачных ответа подряд, упоминание возврата денег/жалобы, прямая просьба «дайте человека». Дешёвая модель отлично распознаёт такие сигналы — просто опишите их в system-промпте.
Грабли
- Бот извиняется на каждую реплику. Пропишите в system: «не извиняйся без причины, отвечай по делу».
- Забывает контекст диалога. Flash-модели с коротким контекстом теряют начало длинной переписки. Держите историю обрезанной до последних 8–10 реплик плюс краткое саммари.
- Выдаёт цены и условия из головы. Всё, что меняется (тарифы, сроки), — только через RAG или инструмент, никогда из весов модели.
Сколько это стоит
Прикиньте: средний диалог — 5 реплик по ~300 токенов ответа. На Flash-модели это доли рубля за диалог. Даже 10 000 обращений в месяц обойдутся в сумму, которую окупает один несостоявшийся звонок живому оператору. 1 кредит = 1 ₽ — считайте прямо в рублях по логам.
Соберите MVP на одной Flash-модели с RAG и эскалацией, снимите метрику «доля диалогов, закрытых без человека», и оптимизируйте промпт под неё. Модель тут вторична — решает качество базы знаний и правил эскалации.