LLM полезна там, где вход или выход связан с языком, неоднозначностью, вариативностью, неполной структурой или человеческим контекстом.
LLM плохо подходит там, где задача уже хорошо решается детерминированным алгоритмом, SQL-запросом, регулярным выражением, правилами или обычной ML-моделью.
Да, это звучит скучно. Но сэкономленные деньги тоже звучат скучно, пока они ваши.
Хорошие задачи для LLM
LLM обычно уместна для:
- классификации естественно-языковых сообщений;
- извлечения структурированных данных из писем, документов, чатов;
- суммаризации длинных материалов;
- генерации черновиков писем, отчётов, описаний;
- переформулирования текста под стиль или аудиторию;
- question answering по базе знаний при наличии retrieval;
- помощи оператору, менеджеру, врачу, юристу или инженеру — но не полной замены ответственности;
- анализа неструктурированных жалоб, отзывов, тикетов;
- генерации кода или SQL в ограниченном и проверяемом контуре;
- работы с инструментами, если каждое действие проверяется и логируется.
Плохие задачи для LLM
LLM почти наверняка не нужна для:
- вычисления скидки;
- проверки формата email;
- выбора тарифа по фиксированным правилам;
- подсчёта суммы заказа;
- простого поиска точного совпадения;
- выполнения юридически значимого решения без человека;
- замены ACL/RBAC;
- хранения фактов;
- принятия финансовых решений без проверки;
- генерации ответа там, где пользователь ожидает точную запись из базы.
Если вы используете модель, чтобы заменить if, проблема не в модели.
Матрица решения
Перед внедрением LLM задайте пять вопросов:
- Вход действительно неструктурирован?
- Нужна ли языковая интерпретация?
- Есть ли допустимый уровень ошибки?
- Можно ли автоматически проверить результат?
- Экономика сходится при реальном объёме запросов?
Если хотя бы на три вопроса ответ «нет», остановитесь. Вы не проявляете осторожность. Вы проявляете профессионализм.
Пример ненужной LLM
Задача: определить, просрочен ли счёт.
Плохое решение:
Попросить LLM посмотреть дату счёта и сказать, просрочен ли он.Хорошее решение:
from datetime import date
is_overdue = invoice.due_date < date.today() and not invoice.paid_atLLM может пригодиться рядом: объяснить пользователю человеческим языком, почему счёт просрочен и что делать дальше. Но сам факт просрочки должна считать обычная программа.
Пример уместной LLM
Задача: пользователь пишет в свободной форме:
Я вроде оплатил вчера, деньги ушли, но в личном кабинете всё равно висит долг. И ещё письмо пришло какое-то странное.
Здесь LLM может:
- определить категорию: billing / payment_status;
- извлечь признаки: «оплата вчера», «деньги списались», «долг отображается», «странное письмо»;
- предложить оператору следующий шаг;
- сформировать черновик ответа.
Но проверять факт оплаты должна не LLM, а платёжная система.
Правило: модель интерпретирует человеческий шум, но не заменяет источник истины.
Чеклист главы
Практикум
Задача 2.1 — матрица решения на своём бэклоге. ⭑
Возьмите 10 реальных или типовых фич-кандидатов «добавим сюда AI» (например: автоответ в поддержке, проверка орфографии в форме, определение спама, рекомендация тарифа, поиск по базе знаний, генерация отчёта, валидация ИНН, сортировка заявок по срочности, перевод интерфейса, «умный» поиск по каталогу). Прогоните каждую через пять вопросов матрицы решения.
Критерии приёмки:
Подсказки:
- Если вердикт «LLM» получили все десять — вы отвечали на вопросы формально. Валидация ИНН и рекомендация тарифа по анкете — не языковые задачи.
- Самый частый правильный ответ в реальных системах — гибрид: модель интерпретирует, код решает.
Задача 2.2 — гибридный разбор обращения. ⭑⭑
Реализуйте обработчик сообщения из примера главы («я вроде оплатил, а долг висит»): модель извлекает категорию и признаки в структурированный объект, а решение «есть ли оплата на самом деле» принимает детерминированная функция-заглушка check_payment_status(user_id). Ответ пользователю собирается из результата проверки, а не из текста модели.
Критерии приёмки:
Подсказки:
- Хороший тест на границу: замените LLM на функцию, возвращающую случайную категорию. Деньги пользователя от этого пострадать не должны.