Перейти к основному контенту

Ошибки и отладка

В этом документе описаны все основные механизмы обработки ошибок, настройки таймаутов, использование нотификатора, трассировки и отладки.


1. Таймауты: где и как настраиваются

Таймауты — это максимальное время ожидания ответа от LLM или внешнего сервиса. Если таймаут превышен, происходит ошибка и запускается обработка сбоя.

Где настраиваются:

  • В конфиге агента (agentCFG):
  • timeout: время ожидания в секундах.
  • Пример:
    MBQuery_fallback: {
      script_code: "MBQuery_TimeOut",
      timeout: 180
    }
  • В клиенте LLM (LLMClient):
    • Таймаут может задаваться при инициализации клиента или в параметрах запроса.
    • Если таймаут не указан — используется значение по умолчанию (обычно 30-60 секунд).

Как работает:

  • Если таймаут превышен:
    • Сценарий не блокируется — пользователь отправляется в выбранный скрипт в котором описана другая логика обработки его запроса

2. Нотификатор: что это и как работает

Notifier — это модуль для отправки уведомлений о сбоях и важных событиях админам.

  • Подробная инструкция: см. Документация по Notifier
  • Вызов: Notifier.send({ message, severity, ... })
  • Используется для ошибок, таймаутов, превышения лимитов.

3. LLMTracer: трассировка ошибок

LLMTracer — модуль для логирования всех событий, включая ошибки.

  • Подробная инструкция: см. Документация по LLMTracer
  • При ошибке записывается строка с type=err, status=error, описанием и параметрами запроса.
  • Позволяет анализировать причины сбоев, видеть историю запросов и ответов.
  • Для отладки используйте подробные сообщения и сохраняйте контекст.

4. Режим debug и самостоятельная отладка

Если не удаётся найти причину ошибки:

  • Включите режим debug:
    • Перейдите в настройки бота и включите режим отладки.
    • Перейдите в настройки лида и включите нужный режим отладки.
    • В точках падения используйте команды логирования:
      • bot.debug('Debug:' + JSON.stringify(data))
  • Пройдите путь пользователя вручную:
    • Повторите шаги, которые приводят к ошибке.
    • Проверьте параметры запроса, ответы модели, логи LLMTracer.
    • Используйте тестовые данные и сценарии.