LayaPHP

LayaPHP — PHP-клиент для self-hosted движка классификации текста Laya. Отправляет текст на laya-serve и возвращает типизированные ответы (выбор метки, балл, да/нет) с оценками уверенности. Работает на собственной инфраструктуре без платы за вызовы API. Клиент не тестировался с облачным сервисом Jev, хотя использует совместимый эндпоинт.

Категория:

LayaPHP — PHP-клиент для self-hosted движка классификации текста Laya. Отправляет текст на laya-serve и возвращает типизированные ответы (выбор метки, балл, да/нет) с оценками уверенности. Работает на собственной инфраструктуре без платы за вызовы API. Клиент не тестировался с облачным сервисом Jev, хотя использует совместимый эндпоинт.

LayaPHP — это PHP-клиент для движка Laya, который выполняет классификацию текста на собственной инфраструктуре. Пакет позволяет отправлять текст на сервер laya-serve и получать типизированные ответы с оценками уверенности. Он ориентирован на задачи, где требуется быстрое принятие решений: выбор категории, оценка по шкале или бинарный ответ (да/нет).

Возможности и сценарии

Клиент поддерживает три типа вопросов через фабрику Question:

  • choice — выбор одной метки из заданного набора (например, тональность отзыва: положительная, нейтральная, отрицательная);
  • score — оценка по порядковой шкале (уровни срочности: не срочно, скоро, критично);
  • yesNo — бинарный ответ с вероятностью.

Метод predict() отправляет текст и массив вопросов, возвращая объект с результатами. Для каждого ответа доступны выбранное значение, числовая оценка и answerConfidence — уверенность модели в ответе. Это позволяет строить гибкие сценарии модерации: например, автоматически публиковать отзывы только при высокой уверенности, а сомнительные отправлять на ручную проверку.

Метод decide() упрощает интеграцию с бизнес-логикой: вопросы задаются через PHP-атрибуты, а ответы автоматически маппятся на свойства перечислений, целых чисел или булевых значений. Такой подход удобен для сервисных классов, где решение модели сразу становится частью объекта.

Типичные сценарии использования:

  • фильтрация спама и оскорблений в пользовательском контенте;
  • анализ тональности отзывов или комментариев;
  • приоритизация обращений в службу поддержки по тексту заявки;
  • автоматическая маршрутизация сообщений на основе их содержания.

Установка и интеграция

Пакет требует PHP 8.4 или новее и любой PSR-18 HTTP-клиент (например, Guzzle). Серверная часть Laya запускается через Docker Compose, файл которого поставляется в репозитории. При первом запросе модель загружает около 1 ГБ весов в Docker-том.

В приложениях на Laravel 13+ сервис-провайдер обнаруживается автоматически. Достаточно указать URL сервера в переменной окружения LAYA_URL и при необходимости настроить кэширование (LAYA_CACHE_STORE, LAYA_CACHE_TTL). Для проверки соединения предусмотрена консольная команда php artisan laya:health. Вне Laravel клиент инстанцируется напрямую: new Laya('http://localhost:8000').

Тестирование кода, использующего Laya, упрощает метод Laya::fake() — он подменяет реальные запросы к модели, позволяя проверять логику маршрутизации без запуска сервера.

Особенности работы с ответами

Каждый ответ содержит не только итоговое решение, но и детальную информацию:

  • choice / score / yes — выбранное значение;
  • answerConfidence — уверенность модели именно в этом ответе;
  • confidence — общая уверенность (для бинарных вопросов — вероятность положительного исхода).

Порог для бинарного решения по умолчанию равен 0.5, его можно изменить при необходимости. Значения answerConfidence ниже 0.7 часто рассматриваются как сигнал для ручной проверки, однако оптимальный порог стоит подбирать на собственных данных.

Ограничения

  • Клиент не тестировался с облачным сервисом Jev, хотя laya-serve использует совместимый эндпоинт /v1/systemone. Работа с Jev через этот клиент не гарантируется.
  • Модель Laya предназначена только для принятия решений, а не для генерации текста. Она не заменяет чат-ботов или языковые модели общего назначения.
  • Точность классификации зависит от версии модели и характера данных. Перед внедрением в production рекомендуется сравнить решения модели с результатами ручной модерации.
  • Для работы требуется Docker и достаточный объём памяти (около 1 ГБ на загрузку весов).