Реализация AI-слот-филлинга (Slot Filling) для чат-бота

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Реализация AI-слот-филлинга (Slot Filling) для чат-бота
Средний
~2-3 дня
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1287
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    859

Реализация AI-слот-филлинга (Slot Filling) для чат-бота

Slot Filling — извлечение параметров из сообщения пользователя для выполнения действия. Намерение book_ticket требует слоты: origin, destination, date, passengers. Бот задаёт уточняющие вопросы, пока все обязательные слоты не заполнены.

Архитектура слот-филлинга

Классический подход (Rasa, Dialogflow): явное определение слотов, правил их заполнения и вопросов для каждого. Детерминированный, понятный.

LLM-based: модель в одном запросе извлекает все заполненные слоты и определяет, каких не хватает:

class FlightBookingSlots(BaseModel):
    origin: str | None = None
    destination: str | None = None
    departure_date: str | None = None
    return_date: str | None = None
    passengers_count: int = 1
    travel_class: Literal["economy", "business"] = "economy"

def extract_and_fill_slots(
    conversation_history: list[dict],
    current_slots: FlightBookingSlots
) -> tuple[FlightBookingSlots, str | None]:
    """
    Возвращает: обновлённые слоты + следующий вопрос или None если все заполнены
    """
    # LLM анализирует историю, обновляет слоты
    updated = llm_extract_slots(conversation_history, current_slots)

    # Определяем следующий обязательный пустой слот
    next_question = get_next_question(updated)
    return updated, next_question

Управление неполными и противоречивыми слотами

Пользователь может изменить ранее указанный слот: «Нет, подождите, я хочу лететь не в Москву, а в Питер». LLM-подход обрабатывает это естественно — просто передаёт обновлённую историю.

Слоты с зависимостями: return_date обязателен только при trip_type = "roundtrip". Условная логика в схеме слотов через Pydantic validators.

Формы и guided flow

Для сложных слот-форм: прогресс-бар или список уже заполненных / оставшихся полей помогает пользователю понимать, сколько шагов осталось.

Timeout слотов: если пользователь не завершает форму за 30 минут — спросить, хочет ли продолжить, или сохранить черновик.