AI для PHP-разработчиков: интуитивно и на практике
AI для PHP-разработчиков: интуитивно и на практике

Полная версия

AI для PHP-разработчиков: интуитивно и на практике

Язык: Русский
Год издания: 2026
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
2 из 4

Тем не менее, их значение трудно переоценить: они показывают, что идеи научных вычислений в 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. Настройка IDE

1. Установите 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"

}

}

На страницу:
2 из 4