
Полная версия
AI для PHP-разработчиков: интуитивно и на практике
Тем не менее, их значение трудно переоценить: они показывают, что идеи научных вычислений в PHP начали развиваться задолго до появления LLM и нынешнего ажиотажа вокруг AI.
Современные ML-интеграции: токены, эмбеддинги, пайплайны данныхСовременное машинное обучение редко ограничивается "алгоритмом". Вокруг него всегда есть инфраструктура: токенизация, подготовка данных, потоковая обработка.
Tiktoken PHP
Репозиторий: https://github.com/yethee/tiktoken-php
Статус: активный
tiktoken-php – это PHP-порт токенизатора OpenAI. Он используется для подсчета токенов, разбиения текста и подготовки данных для LLM.
Если вы работаете с 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
Репозиторий: https://github.com/LLPhant/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" в разряд воспроизводимой архитектуры.
Простейший пример:
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.
👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.
Но реальная сила LLPhant раскрывается в RAG-сценариях:
1. Вы создаете embeddings для документов.
2. Сохраняете их в vector store.
3. При запросе пользователя находите релевантный контекст.
4. Передаете его в модель.
5. Получаете ответ, основанный на ваших данных.
Именно поэтому LLPhant занимает особое место в экосистеме PHP ML. Это не библиотека линейной алгебры и не инструмент классического машинного обучения, и не просто обёртка для локального инференса. Это фреймворк, который позволяет строить полноценные AI-системы поверх LLM – с управлением контекстом, хранением данных и архитектурной структурой.
Если говорить образно:
- PHP-ML – это учебник,
- Rubix – инженерный инструмент,
- TransformersPHP – локальный инференс,
- LLPhant – инфраструктура для LLM-приложений.
Именно такие проекты показывают, что современная ML-экосистема в PHP – это уже не просто "подключить API", а полноценный архитектурный слой вокруг моделей.
Neuron AI
Сайт: https://www.neuron-ai.dev
Статус: активный
Neuron AI – это современный фреймворк для построения AI-приложений на PHP, который работает на уровне агентов и сценариев, а не отдельных вызовов моделей.
Если LLPhant можно рассматривать как PHP-аналог LangChain, фокусирующийся на интеграции LLM в приложение – чатах, эмбеддингах, vector store и RAG, – то Neuron AI поднимается на уровень выше и описывает уже не отдельные вызовы модели, а поведение системы в целом.
Ключевая идея здесь в том, что модель – это только часть процесса. Важно не только получить ответ, но и определить:
1. Какие шаги нужно выполнить
2. Какие инструменты использовать
3. Когда обращаться к модели
4. Как обрабатывать результат
Neuron AI предоставляет для этого базовые строительные блоки:
- агенты – компоненты, принимающие решения
- инструменты – функции, которые агент может вызывать
- сценарии выполнения (workflow)
- интеграцию с LLM-провайдерами
Вместо того чтобы писать последовательность вызовов API вручную, разработчик описывает структуру задачи, а выполнение берет на себя фреймворк.
Такой подход особенно полезен в задачах, где одного запроса к модели недостаточно:
- многошаговые сценарии
- работа с внешними сервисами
- автоматизация процессов
- построение AI-ассистентов
Если LLPhant отвечает за инфраструктуру вокруг LLM, то Neuron AI – за логику и управление процессом.
OpenAI, Anthropic, Gemini и другие LLMПод крупные LLM существуют PHP SDK или качественные HTTP-обертки. Через них PHP получает:
- эмбеддинги для текста
- классификацию
- генерацию
- суммаризацию
- извлечение структурированных данных
С точки зрения архитектуры это выглядит так: модель живет вне PHP, а PHP становится "мозгом бизнес-логики", который знает, когда и зачем вызвать ML.
Именно здесь PHP особенно силен: он отлично интегрируется с очередями, базами, кэшем, платежами и UI.
ONNX Runtime и инференс моделейОтдельного упоминания заслуживает [ONNX]. Через расширения или внешние сервисы PHP может выполнять инференс моделей, обученных в Python и экспортированных в ONNX-формат.
Это редкий, но важный кейс: модель обучается где угодно, а используется в PHP-приложении без Python в продакшене (через ONNX Runtime, расширения или внешний inference-сервис).
Компьютерное зрение и обработка сигналовВ задачах компьютерного зрения и обработки сигналов PHP не является лидирующим языком, однако базовые инструменты для интеграции таких решений всё же существуют. OpenCV может использоваться через биндинги, CLI-вызовы или внешние сервисы, при этом PHP выступает в роли управляющего и координирующего слоя.
В подобных сценариях PHP редко занимается численными вычислениями напрямую. Его роль – оркестрация: запуск и контроль CV-пайплайнов, передача данных между компонентами, интеграция с очередями, хранилищами и бизнес-логикой приложения. Это типичный пример того, как PHP эффективно работает с ML-компонентами, оставаясь центральной точкой управления, а не вычислительным ядром.
Как читать эту экосистему целикомВажно сделать один вывод, прежде чем двигаться дальше.
PHP – это не язык для соревнований по распознаванию изображений. Это язык, который соединяет машинное обучение с реальным продуктом. Его библиотеки заточены не под рекорды точности, а под: ясность кода, интеграцию, контроль данных и предсказуемость поведения.
Если вы понимаете, как работает модель математически, PHP даст вам достаточно инструментов, чтобы использовать ее в бою.
В этом смысле экосистема PHP и ML не является бедной – она прагматична и сфокусирована на прикладных задачах. PHP и машинное обучение – это про архитектурную роль PHP как слоя интеграции, оркестрации и бизнес-логики вокруг моделей:
- в применении моделей,
- в работе с эмбеддингами и векторами,
- в классификации и ранжировании,
- в оркестрации ML-сервисов,
- в соединении математики и бизнес-логики.
Именно поэтому экосистема PHP выглядит не как один монолит, а как набор разнообразных и точных инструментов.
Для более широкого обзора экосистемы и актуальных экспериментов можно также обратиться к курируемой подборке Awesome PHP ML, где собраны библиотеки, инструменты и проекты, связанные с машинным обучением в PHP: [Awesome PHP ML]
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. Установка популярных библиотек машинного обучения для PHPЗапустите следующие команды:
composer 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";
Для запуска этих скриптов используйте следующие команды:
php php_ml_test.php
php rubix_ml_test.php
Если все настроено правильно, вы должны увидеть результат прогнозирования.
3c. Установка с Docker
ВведениеЭто руководство содержит пошаговые инструкции по настройке среды PHP 8, адаптированной для разработки машинного обучения, с использованием Docker. Docker предлагает согласованную и изолированную среду, что упрощает управление зависимостями и обеспечивает воспроизводимость на разных системах. Эта настройка идеально подходит для разработчиков, желающих использовать улучшенную производительность и возможности PHP 8 для задач машинного обучения, не беспокоясь о специфических для системы конфигурациях.
Предварительные условияПеред началом убедитесь, что на вашей системе установлены следующие компоненты:
1. Docker
2. Docker Compose
Инструкции по установке см. на официальном сайте Docker и следуйте руководству для вашей операционной системы.
Шаг 1: Настройка структуры проектаСоздайте новую директорию для вашего проекта и перейдите в неё:
mkdir php-ml-project
cd php-ml-project
Шаг 2: Создание DockerfileСоздайте файл с именем Dockerfile в директории вашего проекта со следующим содержимым:
FROM php:8.5-fpm
# Установка системных зависимостей
RUN apt-get update && apt-get install -y \
libzip-dev \
zip \
unzip \
git \
libxml2-dev \
libcurl4-openssl-dev \
libpng-dev \
libonig-dev \
&& rm -rf /var/lib/apt/lists/*
# Установка расширений PHP
RUN docker-php-ext-install zip pdo_mysql bcmath xml mbstring curl gd
# Установка Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Установка рабочего каталога
WORKDIR /var/www
# Копирование содержимого существующего каталога приложения
COPY . /var/www
# Настройка PHP
RUN echo "memory_limit = 512M" >> /usr/local/etc/php/conf.d/docker-php-ram-limit.ini
RUN echo "max_execution_time = 300" >> /usr/local/etc/php/conf.d/docker-php-max-execution-time.ini
# Открыть порт 9000 и запустить сервер php-fpm
EXPOSE 9000
CMD ["php-fpm"]
Шаг 3: Создание файла Docker ComposeСоздайте файл с именем `docker-compose.yml` в каталоге вашего проекта со следующим содержимым:
services:
app:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/var/www
ports:
- "9000:9000"
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- .:/var/www
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: ml_database
MYSQL_USER: ml_user
MYSQL_PASSWORD: ml_password
ports:
- "3306:3306"
Шаг 4: Создание конфигурации NginxСоздайте файл с именем nginx.conf в каталоге вашего проекта со следующим содержимым: содержимое:
nginx
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
Шаг 5: Создание структуры PHP-проектаСоздайте каталог `public` и файл `index.php`:
mkdir public
echo " public/index.php
Шаг 6: Создание конфигурации ComposerСоздайте файл с именем `composer.json` в каталоге вашего проекта со следующим содержимым:
{
"require": {
"php": "^8.5",
"php-ai/php-ml": "^0.10.0",
"rubix/ml": "^2.5.3"
}
}


