Skip to main content
Расширения-хуки — функция Enterprise Edition, доступная только в одноарендных (single-tenant) развёртываниях.

Обзор

Расширения-хуки позволяют внедрять собственную логику в конвейер Yahont на определённых этапах — без изменения исходного кода Yahont. Вы предоставляете HTTP-эндпоинт; Yahont вызывает его в нужный момент, отправляет JSON-данные и использует ваш ответ, чтобы повлиять на дальнейший ход событий.

Основные понятия

Точки хуков

Точка хука — это определённый этап конвейера Yahont, в который можно внедрить собственную логику. Каждая точка хука определяет:
  • Когда она срабатывает в конвейере
  • Какие данные она отправляет на ваш эндпоинт
  • Какой ответ она ожидает
  • Тайм-аут и стратегию отказа по умолчанию
Точки хуков создаются осознанно: после добавления точки хука Yahont обязуется сохранять структуру её данных, формат ответа и поведение — то есть они не изменятся несовместимым образом без надлежащего процесса объявления устаревшими. Из-за этого долгосрочного обязательства каждое предложение тщательно оценивается перед добавлением.

Хуки

Хук связывает точку хука с вашим HTTPS-эндпоинтом. Когда точка хука срабатывает, Yahont отправляет POST-запрос на ваш эндпоинт и использует ваш ответ, чтобы продолжить, изменить или прервать конвейер. Для одной точки хука одновременно разрешён только один хук.

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

1

Yahont доходит до точки хука в конвейере

Конвейер срабатывает на определённом этапе.
2

Yahont отправляет POST на ваш эндпоинт

Если для этой точки настроен активный хук, Yahont отправляет JSON-данные на URL вашего эндпоинта.
3

Ваш эндпоинт отвечает

Ваш эндпоинт обрабатывает данные и возвращает ответ в формате JSON.
4

Yahont продолжает работу

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

Добавление хука

1

Откройте «Расширения-хуки»

Откройте панель администратора и выберите Расширения-хуки.
2

Подключите точку хука

Найдите нужную точку хука и нажмите Подключить.
3

Заполните данные хука

Заполните форму:Форма добавления хука
4

Подключите

Нажмите Подключить. Перед сохранением Yahont проверяет ваш эндпоинт тестовым запросом. В случае успеха хук появится в списке подключённых.

Управление хуком

После подключения вы можете:
  • Включить / отключить — переключить, выполняется ли хук
  • Изменить — обновить название, URL эндпоинта, API-ключ, тайм-аут или стратегию отказа
  • Удалить — полностью удалить хук
  • Просмотреть журналы — изучить последние сбои выполнения для отладки

Состояние хука

Yahont отслеживает ваш эндпоинт после регистрации и подключения хука и отображает его текущее состояние. Карточка подключённого хука Ошибки хука за последний час Потеряно соединение с хуком Для помощи в отладке также показаны 10 последних сбоев за последние 30 дней. Ошибки хука за последние 30 дней

Приём документов

Точка хука «Приём документов» позволяет перехватывать каждый документ до его попадания в конвейер индексации Yahont. Ваш эндпоинт получает полностью сформированный документ и может отфильтровать его, переписать содержимое или пропустить без изменений. Она срабатывает сразу после внутренней проверки Yahont и до начала конвейера индексации — частичных записей ещё не произошло.

Входная схема

Yahont отправляет POST-запрос на ваш эндпоинт по одному разу для каждого документа со следующим телом JSON:
Все входные поля передаются только для контекста. Ваш эндпоинт может влиять на конвейер только через выходную схему — а именно поле sections.

Ключи метаданных по коннекторам

Набор ключей в metadata зависит от источника коннектора. Ниже несколько примеров: Пример

Выходная схема

Успешный ответ вашего эндпоинта должен возвращать HTTP 200 и тело JSON:

Аутентификация

Если при регистрации хука вы настроили API-ключ, Yahont включает его в каждый запрос:

Пример для Lambda

В качестве эндпоинта хука можно использовать функцию AWS Lambda, открыв её по HTTPS через Lambda Function URL. Это самый простой способ развернуть хук без управления сервером. Когда Yahont вызывает ваш эндпоинт, запрос приходит в виде события в стиле API Gateway. Ваш обработчик читает тело JSON из event["body"], обрабатывает документ и возвращает ответ с statusCode и закодированным в JSON body. Если вы настроили для хука API-ключ, проверьте его по заголовку Authorization в событии, прежде чем выполнять обработку.

Тестирование

Используйте curl, чтобы проверить Lambda Function URL до подключения его к Yahont. Пропуск без изменений (источник не файловый):
Отклонение (источник — файл):
После подключения хука можно проверить его от начала до конца: добавьте коннектор File и загрузите документ. После синхронизации коннектора найдите содержимое этого документа в окне чата — если хук работает правильно, этого материала в результатах быть не должно, так как документы файлового коннектора отклоняются. Коннектор File Добавление файла Проверка приёма документов — содержимое файла не найдено

Отправка документов

Точка хука «Отправка документов» срабатывает после успешной индексации каждого документа. Используйте её, чтобы отправлять проиндексированное содержимое во внешнее хранилище, например в вики, хранилище данных или журнал аудита. В отличие от «Приёма документов» (который работает до индексации и может изменять или отбрасывать документы), этот хук срабатывает после записи документа в индекс. Тело ответа не используется — любой ответ 2xx считается успешным.
«Отправка документов» срабатывает только для публичных коннекторов в одноарендных (single-tenant) развёртываниях и только при инкрементальной синхронизации — она не срабатывает при первичной индексации или полной переиндексации с самого начала.

Входная схема

Yahont отправляет POST-запрос на ваш эндпоинт по одному разу для каждого успешно проиндексированного документа со следующим телом JSON:
Пример

Выходная схема

Тело ответа не используется — любой код состояния 2xx считается успешным. Ваш эндпоинт может вернуть пустое тело или любой объект JSON.

Аутентификация

Если при регистрации хука вы настроили API-ключ, Yahont включает его в каждый запрос:

Пример для Lambda

В качестве эндпоинта хука можно использовать функцию AWS Lambda, открыв её по HTTPS через Lambda Function URL.

Тестирование

Используйте curl, чтобы проверить ваш эндпоинт до подключения его к Yahont:

Обработка запросов

Точка хука «Обработка запросов» позволяет перехватывать каждый запрос пользователя до его попадания в конвейер Yahont. Ваш эндпоинт получает исходный запрос и сведения о пользователе и может переписать запрос, полностью отклонить его или пропустить без изменений. Она срабатывает сразу после отправки сообщения пользователем, до сохранения в базу данных и отправки в LLM. Это самая ранняя возможная точка в конвейере — побочных эффектов ещё не было.

Входная схема

Yahont отправляет POST-запрос на ваш эндпоинт со следующим телом JSON:

Выходная схема

Успешный ответ вашего эндпоинта должен возвращать HTTP 200 и тело JSON:

Аутентификация

Если при регистрации хука вы настроили API-ключ, Yahont включает его в каждый запрос:

Пример для Lambda

В качестве эндпоинта хука можно использовать функцию AWS Lambda, открыв её по HTTPS через Lambda Function URL. Это самый простой способ развернуть хук без управления сервером. Когда Yahont вызывает ваш эндпоинт, запрос приходит в виде события в стиле API Gateway. Ваш обработчик читает тело JSON из event["body"], обрабатывает запрос и возвращает ответ с statusCode и закодированным в JSON body. Если вы настроили для хука API-ключ, проверьте его по заголовку Authorization в событии, прежде чем выполнять обработку.

Тестирование

Используйте curl, чтобы проверить Lambda Function URL до подключения его к Yahont. Пропуск без изменений (нет заблокированных ключевых слов):
Отклонение (содержит заблокированное ключевое слово):
После подключения хука логику также можно проверить прямо в окне чата Yahont. Попробуйте отправить запрос с заблокированным ключевым словом (например, «ssn» или «phone number») — вы должны увидеть сообщение об отклонении вместо ответа. Запросы без заблокированных ключевых слов должны проходить как обычно. Проверка хука обработки запросов

Предложение новой точки хука

Если вашему сценарию нужна точка внедрения в конвейер, которой пока нет, создайте issue на GitHub с описанием:
  • Где в конвейере нужно внедрить логику (например, после поиска, перед индексацией документа)
  • Что получит ваш эндпоинт — какой контекст ему нужен для работы
  • Что вернёт ваш эндпоинт — как Yahont должен изменить поведение на основе вашего ответа
  • Сценарии использования — какую проблему это решает; нужна ли такая точка другим клиентам
Команда Yahont рассматривает предложения и реализует точки хуков, имеющие широкую применимость. После добавления точки хука Yahont обязуется сохранять структуру её данных, формат ответа и поведение — то есть они не изменятся несовместимым образом без надлежащего процесса объявления устаревшими. Из-за этого долгосрочного обязательства каждое предложение тщательно оценивается перед добавлением.