
Полная версия
AI для PHP-разработчиков: интуитивно и на практике
Если вы работаете с GPT, Claude или Gemini из PHP, эта библиотека становится практически обязательной. Она позволяет понимать реальную стоимость запросов, длину контекста и поведение модели еще до вызова API.
TransformersPHP
Репозиторий: https://github.com/CodeWithKyrian/transformers-php
Статус: активный
Transformers PHP – один из самых интересных и показательных проектов в современной PHP ML-экосистеме. Это библиотека, которая позволяет использовать трансформер-модели (BERT, RoBERTa, DistilBERT и др.) напрямую из PHP, без Python и без внешних API.
По сути, это PHP-ориентированная обертка над идеями [Hugging Face Transformers], адаптированная под PHP-экосистему и реальные прикладные сценарии.
Ключевая особенность библиотеки – локальный [инференс]. Модели загружаются и выполняются на стороне PHP-приложения (через [ONNX Runtime]), что открывает важные архитектурные возможности:
* отсутствие сетевых вызовов к LLM API
* полный контроль над данными (важно для конфиденциальности)
* предсказуемая задержка
* возможность оффлайн-работы
Transformers PHP поддерживает типовые задачи NLP:
* получение эмбеддингов
* классификацию текста
* семантическое сравнение
* извлечение признаков для последующих задач
Пример использования выглядит концептуально просто: вы загружаете предобученную модель и применяете ее к тексту так же, как это делали бы в Python – но уже внутри PHP-кода. TransformersPHP предлагает простой pipeline API для задач вроде анализа настроений, классификации текста, семантического сравнения и т.д. В примере ниже модель определяет тональность двух фраз и показывает метку и score.
use function Codewithkyrian\Transformers\Pipelines\pipeline;
// Выделить конвейер для анализа настроений
$classifier = pipeline('sentiment-analysis');
$out = $classifier(['I love transformers!']);
echo print_r($out, true);
// Array (
// [label] => POSITIVE
// [score] => 0.99978870153427
// )
$out = $classifier(['I hate transformers!']);
echo print_r($out, true);
// Array (
// [label] => NEGATIVE
// [score] => 0.99863630533218
// )
👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.
Важно понимать архитектурную роль Transformers PHP.
Эта библиотека не конкурирует с большими LLM-сервисами вроде GPT или Claude. Она закрывает другой, очень важный слой:
* быстрые эмбеддинги
* локальная классификация
* семантический поиск
* lightweight NLP без внешних зависимостей
В связке с PHP это выглядит особенно логично. PHP остается центральным слоем бизнес-логики, а трансформеры становятся встроенным инструментом, а не удаленным сервисом.
Transformers PHP – это хороший пример того, как современный ML постепенно перестает быть "чужим" для PHP и становится частью его нативной экосистемы, пусть и через аккуратные инженерные мосты вроде ONNX.
Rindow Math Matrix
Репозиторий: https://github.com/rindow/rindow-math-matrix
Статус: активный
Rindow Math Matrix – это библиотека линейной алгебры и матричных вычислений, ориентированная на ML и численные методы. Она часто используется в связке с другими компонентами экосистемы Rindow.
Ключевые возможности:
* N-мерные массивы (тензоры) с поддержкой broadcasting
* Высокопроизводительные BLAS-операции
* Инструменты для машинного обучения
* Линейная алгебра и генерация случайных чисел
* Интеграция C/C++ через FFI (OpenBLAS, Rindow-Matlib, CLBlast и др.)
* Поддержка GPU через OpenCL (Intel, AMD – без необходимости NVIDIA)
Подходит для проектов, где важны производительность, строгий математический API и контроль над численными вычислениями.
Flow PHP
Репозиторий: https://github.com/flow-php/flow
Статус: активный
Flow PHP – это не ML-библиотека в чистом виде, а настоящий фреймворк для обработки данных. Это ETL (Extract, Transform, Load), пайплайны, трансформации, валидация, потоки данных.
В реальных ML-системах именно этот слой часто оказывается самым сложным. Данные нужно собрать, очистить, нормализовать и только потом подать в модель.
Flow PHP закрывает этот разрыв между "данные где-то лежат" и "модель уже работает".
Интеграция с внешними ML-сервисами
На практике, в большинстве production-сценариев, использование ML в PHP – это не обучение моделей, а инференс через API.
#### **LLPhant**
Репозиторий:
Статус: **активный**
LLPhant – это современный Generative AI-фреймворк для PHP, который решает уже не задачу "реализовать алгоритм", а задачу "построить AI-приложение".
Если PHP-ML и Rubix работают на уровне моделей и математики, а TransformersPHP – на уровне локального инференса, то LLPhant закрывает уровень архитектуры вокруг LLM.
Он вдохновлен LangChain и LlamaIndex, но адаптирован под PHP-экосистему.
LLPhant предоставляет:
* единый интерфейс к различным LLM (OpenAI, Anthropic, Mistral, Ollama и др.)
* работу с embeddings
* поддержку vector stores (Redis, Doctrine, Qdrant, in-memory и др.)
* построение RAG-сценариев (retrieval + generation)
* чат-память и управление диалогами
* инструменты для агентов и tool calling
Архитектурно LLPhant важен тем, что он позволяет рассматривать LLM не как "HTTP-вызов", а как компонент системы. Вы работаете не просто с API, а с абстракциями:
* Chat
* Embeddings
* VectorStore
* Document
* Memory
* Pipeline
Это переводит использование LLM из разряда "скрипт с запросом к OpenAI" в разряд воспроизводимой архитектуры.
Простейший пример:
```php
use LLPhant\Chat\OpenAIChat;
use LLPhant\Chat\Message;
use LLPhant\Chat\Enums\ChatRole;
$chat = new OpenAIChat();
$message = new Message();
$message->role = ChatRole::User;
$message->content = 'What is the capital of France?';
$response = $chat->generateText($message);
echo $response;
// Результат:
// The capital of France is Paris.
```
{% hint style="info" %}
Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией](https://aiwithphp.org/books/ai-for-php-developers/examples/ml-ecosystem-in-php) для его запуска.
{% endhint %}
Но реальная сила LLPhant раскрывается в RAG-сценариях:
1. Вы создаете embeddings для документов.
2. Сохраняете их в vector store.
3. При запросе пользователя находите релевантный контекст.
4. Передаете его в модель.
5. Получаете ответ, основанный на ваших данных.
Именно поэтому LLPhant занимает особое место в экосистеме PHP ML. Это не библиотека линейной алгебры и не инструмент классического машинного обучения, и не просто обёртка для локального инференса. Это фреймворк, который позволяет строить полноценные AI-системы поверх LLM – с управлением контекстом, хранением данных и архитектурной структурой.
Если говорить образно:
* PHP-ML – это учебник,
* Rubix – инженерный инструмент,
* TransformersPHP – локальный инференс,
* LLPhant – инфраструктура для LLM-приложений.
Именно такие проекты показывают, что современная ML-экосистема в PHP – это уже не просто "подключить API", а полноценный архитектурный слой вокруг моделей.
#### **OpenAI, Anthropic, Gemini и другие LLM**
Под крупные LLM существуют PHP SDK или качественные HTTP-обертки. Через них PHP получает:
* эмбеддинги для текста
* классификацию
* генерацию
* суммаризацию
* извлечение структурированных данных
С точки зрения архитектуры это выглядит так: модель живет вне PHP, а PHP становится "мозгом бизнес-логики", который знает, когда и зачем вызвать ML.
Именно здесь PHP особенно силен: он отлично интегрируется с очередями, базами, кэшем, платежами и UI.
#### **ONNX Runtime и инференс моделей**
Отдельного упоминания заслуживает [ONNX](https://apphp.gitbook.io/ai-for-php-developers/glossarii#one-hot-encoding). Через расширения или внешние сервисы PHP может выполнять инференс моделей, обученных в Python и экспортированных в ONNX-формат.
Это редкий, но важный кейс: модель обучается где угодно, а используется в PHP-приложении без Python в продакшене (через ONNX Runtime, расширения или внешний inference-сервис).
#### Компьютерное зрение и обработка сигналов
В задачах компьютерного зрения и обработки сигналов PHP не является лидирующим языком, однако базовые инструменты для интеграции таких решений всё же существуют. OpenCV может использоваться через биндинги, CLI-вызовы или внешние сервисы, при этом PHP выступает в роли управляющего и координирующего слоя.
В подобных сценариях PHP редко занимается численными вычислениями напрямую. Его роль – оркестрация: запуск и контроль CV-пайплайнов, передача данных между компонентами, интеграция с очередями, хранилищами и бизнес-логикой приложения. Это типичный пример того, как PHP эффективно работает с ML-компонентами, оставаясь центральной точкой управления, а не вычислительным ядром.
### Как читать эту экосистему целиком
Важно сделать один вывод, прежде чем двигаться дальше.
PHP – это не язык для соревнований по распознаванию изображений. Это язык, который соединяет машинное обучение с реальным продуктом. Его библиотеки заточены не под рекорды точности, а под: ясность кода, интеграцию, контроль данных и предсказуемость поведения.
Если вы понимаете, как работает модель математически, PHP даст вам достаточно инструментов, чтобы использовать ее в бою.
В этом смысле экосистема PHP и ML не является бедной – она прагматична и сфокусирована на прикладных задачах. PHP и машинное обучение – это про архитектурную роль PHP как слоя интеграции, оркестрации и бизнес-логики вокруг моделей:
* в применении моделей,
* в работе с эмбеддингами и векторами,
* в классификации и ранжировании,
* в оркестрации ML-сервисов,
* в соединении математики и бизнес-логики.
Именно поэтому экосистема PHP выглядит не как один монолит, а как набор разнообразных и точных инструментов.
{% hint style="info" %}
Для более широкого обзора экосистемы и актуальных экспериментов можно также обратиться к курируемой подборке Awesome PHP ML, где собраны библиотеки, инструменты и проекты, связанные с машинным обучением в PHP:
[Awesome PHP ML](https://github.com/apphp/awesome-php-ml)
{% endhint %}
3a. Настройка среды для PHP
PHP – это язык программирования, который чаще всего используют для веб-разработки. Но сегодня его всё чаще применяют и для задач машинного обучения и анализа данных. С выходом PHP 8 язык стал быстрее и получил новые возможности, которые позволяют создавать более мощные и эффективные приложения.
Это руководство поможет вам настроить рабочую среду на PHP 8 для работы с машинным обучением. Оно подойдёт как PHP-разработчикам, которые хотят попробовать себя в ML, так и специалистам по данным, которым интересно использовать PHP в своих проектах.
Вы узнаете, как установить PHP 8, подготовить удобную среду разработки и подключить нужные инструменты и библиотеки для задач машинного обучения. В результате у вас будет готовая база для создания ML-приложений на PHP.
Начнём с установки последней версии PHP и её настройки для лучшей производительности при работе с машинным обучением.
3b. Установка напрямую
ВведениеНиже вы найдете подробные инструкции по подготовке и настройке среды для PHP непосредственно на вашем компьютере.
1. Установка PHP 8.5
(последняя стабильная версия по состоянию на январь 2026 г.)
Для Windows:
1. Загрузите последнюю версию PHP 8.5 с официального сайта PHP (https://windows.php.net/download)
2. Распакуйте ZIP-файл в каталог (например, C:\php)
3. Добавьте каталог PHP в переменную среды PATH вашей системы
4. Переименуйте `php.ini-development` в php.ini в каталоге PHP
Для macOS:
brew install php@8.5
echo 'export PATH="/usr/local/opt/php@8.5/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Для Linux (Ubuntu/Debian):
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.5 php8.5-cli php8.5-common
2. Настройка PHP для оптимальной производительностиОтредактируйте файл php.ini:
memory_limit = 512M
max_execution_time = 300
error_reporting = E_ALL
display_errors = On
opcache.enable = 1
opcache.memory_consumption = 128
3. Настройка веб-сервераApache (с mod_php):
# Для Ubuntu/Debian
sudo apt install apache2 libapache2-mod-php8.5
sudo a2enmod php8.5
sudo systemctl restart apache2
Nginx (с PHP-FPM):
# Для Ubuntu/Debian
sudo apt install nginx php8.5-fpm
sudo systemctl start php8.5-fpm
sudo systemctl enable php8.5-fpm
Настройте Nginx для работы с PHP-FPM (отредактируйте /etc/nginx/sites-available/default):
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
4. Установка необходимых расширений PHP для машинного обученияsudo apt install php8.5-xml php8.5-mbstring php8.5-curl php8.5-gd php8.5-zip php8.5-mysql php8.5-bcmath
5. Настройка Composer (менеджера пакетов)php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
6. Установка популярных библиотек машинного обучения для PHPcomposer require php-ai/php-ml
composer require rubix/ml
7. Настройка IDE1. Установите PHPStorm или VS Code
2. Установите расширения PHP (для VS Code):
* PHP IntelliSense
* PHP Debug
* PHP Intellephense
8. Настройка системы контроля версий (Git)
sudo apt install git
git config --global user.name "Ваше имя"
git config --global user.email "your.email@example.com"
9. Настройка системы баз данных (MySQL)Это опциональная настройка.
sudo apt install mysql-server
sudo mysql_secure_installation
Настройте PHP для работы с MySQL:
sudo apt install php8.5-mysql
10. Настройка виртуальной средыУстановите и используйте встроенный сервер разработки PHP для изолированных проектов:
mkdir my_ml_project
cd my_ml_project
php -S localhost:8000
11. Проверка настройкиСоздайте файл phpinfo.php в корневом каталоге вашего веб-сервера со следующим содержимым:
phpinfo();
Откройте этот файл в веб-браузере, чтобы проверить конфигурацию PHP.
12. Создание простого тестового скрипта для машинного обучения
Мы создадим два тестовых скрипта, по одному для каждой библиотеки, чтобы убедиться в корректной работе PHP-ML и Rubix ML.
Тестовый скрипт для PHP-ML
Создайте файл с именем php_ml_test.php в каталоге public:
require_once __DIR__ . '/../vendor/autoload.php';
use Phpml\Classification\KNearestNeighbors;
$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);
$prediction = $classifier->predict([3, 2]);
echo "Предсказание: " . $prediction;
Тестовый скрипт Rubix ML
Создайте еще один файл с именем rubix_ml_test.php в вашей директории public:
require_once __DIR__ . '/../vendor/autoload.php';
use Rubix\ML\Classifiers\KNearestNeighbors;
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Datasets\Unlabeled;
$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];
$dataset = new Labeled($samples, $labels);
$estimator = new KNearestNeighbors(3);
$estimator->train($dataset);
$testSamples = new Unlabeled([[3, 2]]);
$prediction = $estimator->predict($testSamples);
echo "Rubix ML Prediction: " . $prediction[0] . "\n";
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.


