Intent Recognition

intent recognition — определение, что пользователь хочет получить

Раздел
Промпты
Обновлено
18.05.26

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:

  1. Intent Classification. Главное: какая именно задача? Список intent'ов конечен (order_food, cancel_subscription, check_balance, small_talk).
  2. Slot Filling. Извлечь параметры: «во сколько», «куда», «сколько штук».
  3. Out-of-scope detection. Понять, что запрос вне доступных intent'ов («поговори со мной о смысле жизни» в банковском боте).
  4. 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 (несколько целей в одном сообщении). Главный сдвиг — резко снизился барьер входа в разработку умных диалоговых интерфейсов.