Intent Recognition
intent recognition — определение, что пользователь хочет получить
Intent Recognition (Intent Detection) — задача NLP: понять, какую цель преследует пользователь в своём сообщении, даже если он сформулировал её криво или неполно. «Хочу пиццу с грибами в восемь вечера» → intent: order_food, slots: {item: пицца, topping: грибы, time: 20:00}. Лежит в основе чат-ботов, голосовых ассистентов, поисковых систем, customer support. К 2026 — LLM превратили эту задачу из ML-инженерии с разметкой в few-shot prompting.
Коротко
Коротко. Intent Recognition (Intent Detection) — задача NLP: по сообщению пользователя определить, какую задачу он хочет решить, и извлечь параметры. «Заказать билет в Берлин на пятницу» → intent:
book_flight, slots:{destination: Берлин, date: пятница}. Используется в чат-ботах, голосовых ассистентах, customer support, поисковых системах. К 2026-му LLM превратили задачу из «обучить классификатор на 10K примеров» в «дать 5 примеров в prompt».
Что это такое
Любой умный диалоговый интерфейс начинается с одного вопроса: что человек хочет?
Раньше это было трудно. Системы класса Siri (2011) использовали жёстко прописанные правила: «если в сообщении есть „погода", вызови weather_api». Любая нестандартная формулировка ломала систему.
С 2015-х появилось машинное обучение для intent classification: разметить тысячи примеров «фраза → intent», обучить нейросеть-классификатор, выкатить в prod. С 2018 — BERT-эры NLU (Natural Language Understanding) — точность дошла до production-уровня.
К 2024-2026 LLM окончательно изменили правила игры: для большинства задач достаточно дать 5-10 примеров в system prompt, и GPT/Claude/Gemini классифицируют намерения с точностью bigger-than-human на новых формулировках.
Что входит в Intent Recognition:
- Intent Classification. Главное: какая именно задача? Список intent'ов конечен (
order_food,cancel_subscription,check_balance,small_talk). - Slot Filling. Извлечь параметры: «во сколько», «куда», «сколько штук».
- Out-of-scope detection. Понять, что запрос вне доступных intent'ов («поговори со мной о смысле жизни» в банковском боте).
- Multi-intent. Один запрос — несколько intent: «отмени бронь и переведи деньги на карту».
Главные применения к 2026:
- Чат-боты в support. Tinkoff, Яндекс.Алиса, банки, телекомы.
- Голосовые ассистенты. Siri, Алиса, Google Assistant, Salute.
- Поисковые системы. Google пытается понять «что вы имели в виду», а не просто match keywords.
- In-app actions. «Оплати счёт за интернет» в банковском приложении → автоматически открыть нужную форму.
- Аналитика обращений. Категоризация thousands of customer messages для понимания топов проблем.
Как это работает
Классический подход (до 2024)
1. Разметить датасет: ~5000 примеров «сообщение → intent».
2. Векторизация: TF-IDF / embeddings (Word2Vec, BERT).
3. Обучить классификатор: логрег / SVM / маленькая нейросеть.
4. Slot filling — отдельная модель (CRF / BiLSTM-CRF / BERT-CRF).
5. Production: новая фраза → embedding → predict intent.
Точность на закрытом наборе intent'ов — 85-95%. На out-of-scope падает резко.
Современный (LLM-based)
1. Список intent'ов и 3-5 примеров на каждый.
2. System prompt: «Ты классификатор. intent ∈ {A, B, C}. Верни JSON».
3. Запрос → LLM → JSON {intent, slots, confidence}.
4. Никакой разметки большого датасета. Никакого fine-tuning.
Точность на новых формулировках — выше классики. Стоимость per-запрос выше (LLM call vs локальная нейросеть), но разработка в 100× быстрее.
К 2026 — гибрид: для 80% типовых intent'ов работает быстрая локальная модель, для непонятных — fallback на LLM.
Структура запроса в LLM-варианте
SYSTEM = """
Ты классификатор намерений. Возможные intent:
- order_food: заказ еды
- check_order: проверить статус заказа
- cancel_order: отменить заказ
- support: жалоба или вопрос к человеку
Верни JSON: {intent: ..., confidence: 0-1, slots: {...}}.
"""
EXAMPLES = """
USER: «Хочу пиццу маргарита на 8 вечера»
ASSISTANT: {"intent": "order_food", "confidence": 0.97, "slots": {"item": "пицца маргарита", "time": "20:00"}}
USER: «Где мой заказ #12345?»
ASSISTANT: {"intent": "check_order", "confidence": 0.99, "slots": {"order_id": "12345"}}
"""
LLM по этим 4 примерам обобщает и обрабатывает любые формулировки.
Пример на практике
Пиццерия делает чат-бота в Telegram. До LLM-эры — нанять подрядчика на $10K + 3 месяца разработки + поддержка. С LLM:
import anthropic
client = anthropic.Anthropic()
INTENTS = ["order_pizza", "check_order", "menu_info", "delivery_zones",
"complaint", "small_talk"]
def classify_intent(user_message):
response = client.messages.create(
model="claude-3-5-haiku-20241022",
max_tokens=200,
system=f"""Ты классификатор для пиццерии.
Возможные intent: {INTENTS}.
Верни ТОЛЬКО JSON: {{"intent": "...", "slots": {{...}}}}.
Если не понял — intent="small_talk".""",
messages=[{"role": "user", "content": user_message}]
)
return json.loads(response.content[0].text)
# Использование:
result = classify_intent("Хочу пеперони, большую, на адрес Ленина 5")
# {"intent": "order_pizza", "slots": {"item": "пеперони", "size": "большая",
# "address": "Ленина 5"}}
Стоимость: ~$0.001 за запрос на Haiku. Для 10K запросов в день — $10/день, ~$300/мес. Качество — лучше чем у классических чат-ботов на правилах.
В ComfyUI intent recognition не используется напрямую (там нет диалоговых сценариев), но похожая идея — text-to-workflow ноды, где LLM понимает что хочет пользователь и собирает нужный pipeline из узлов.
С чем часто путают
- Intent Recognition и NLU — Intent Recognition — часть NLU (Natural Language Understanding). NLU broader: ещё entity recognition, sentiment, coreference, etc.
- Intent и Entity — Intent: что хочет (order_food). Entity: параметры (пицца, маргарита, 20:00). Часто детектятся вместе.
- Intent и Topic — Intent: действие. Topic: тема. «Расскажи про Луну» — intent: small_talk/info_request, topic: astronomy.
- Intent Classification и Sentiment Analysis — Intent: цель. Sentiment: эмоция. Похожие задачи, разные предметы.
- Intent Recognition и Semantic Search — Intent: понять задачу. Semantic Search: найти релевантный документ. Часто работают вместе.
Частые ошибки и заблуждения
- «LLM делают intent recognition идеально». Не идеально. Открытый список intent'ов — да, неплохо. На out-of-scope (запросы вне сценариев) часто галлюцинируют.
- «Достаточно одной LLM-модели для всего». На production-нагрузках — нет. LLM медленные и дорогие. Гибрид: быстрая локальная для типовых + LLM fallback.
- «Можно обойтись без примеров». Few-shot работает в 5-10× лучше zero-shot. Всегда давай 3-5 примеров на intent.
- «Slot filling — это просто». В реальной речи человек говорит косвенно: «как обычно, на сегодня вечером, на тот же адрес». Понять это — нетривиальная задача даже для GPT-4.
- «Чем больше intent'ов, тем лучше». Для чат-бота 10-20 intent'ов — хороший баланс. 100+ — путаница в классификации, падает качество.
Связанные термины
- NLP — общая область, intent recognition — её задача.
- AI Search / Semantic Search — комплементарная задача.
- Function Calling — как LLM-агенты вызывают tools после распознавания intent.
- Context Engineering — intent recognition — один из элементов pipeline.
- AI Agent — главный «потребитель» intent recognition.
Частые вопросы
Какая модель лучшая для intent recognition? Для скорости/цены — Claude Haiku, GPT-4o-mini, Gemini Flash. Для сложных кейсов — Claude Sonnet, GPT-4o. Для self-hosted — Llama 3.1 8B, Phi-4.
Сколько примеров нужно в few-shot? 3-5 на каждый intent. Меньше — модель не поймёт паттерн. Больше — раздувается prompt, дороже за запрос.
Как обрабатывать многоязычные запросы? Современные LLM (GPT-4, Claude, Gemini) обрабатывают 50+ языков из коробки. Для production — проверь на своих кейсах, добавь языкоспецифичные примеры если нужно.
Что делать с out-of-scope?
В intent-список добавь явный out_of_scope или general_chat. Модель будет туда классифицировать всё, что не подходит к основным intent.
Можно ли локально без API? Да, через Llama / Phi / Mistral + Ollama / LM Studio. Качество немного ниже, но конфиденциальность и нулевая стоимость per-запрос.
Главное
Intent Recognition — задача определить, какую цель преследует пользователь в своём сообщении. Лежит в основе чат-ботов, голосовых ассистентов, customer support, поисковых систем. Классический подход (до 2024) — разметить датасет, обучить классификатор, годами поддерживать. С LLM (2024-2026) — превратился в few-shot prompting задачу: 3-5 примеров на intent в system prompt, и Claude/GPT/Gemini классифицируют новые формулировки лучше специально обученной модели. К 2026 на production — гибрид: локальная маленькая модель для 80% типовых случаев + LLM fallback для непонятных. Главные подзадачи: intent classification (что), slot filling (параметры), out-of-scope detection (вне сценария), multi-intent (несколько целей в одном сообщении). Главный сдвиг — резко снизился барьер входа в разработку умных диалоговых интерфейсов.