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

Самуэль Акопян
AI для PHP-разработчиков: интуитивно и на практике
Оглавление
1. Дисклеймер
О границах книги, допущениях и ответственности.
2. Введение
Мотивация, реалии и цели книги.
2a. От понимания – к математике и реализации
2b. Зачем PHP-разработчику AI
3. Экосистема ML в PHP
Обзор экосистемы PHP для машинного обучения и научных вычислений.
3a. Настройка среды для PHP
3b. Установка напрямую
1. Дисклеймер
О границах книги, допущениях и ответственности.
О характере этой книгиЭта книга не является академическим учебником уровня Stanford University или Massachusetts Institute of Technology. Это практическое инженерное руководство для разработчиков, прежде всего из PHP-среды.
Здесь приоритет – понимание принципов и их прикладное применение. Строгие математические доказательства сознательно упрощаются, если они мешают интуитивному пониманию. Если вы исследователь или математик, некоторые формулировки могут показаться слишком неформальными – это сделано намеренно.
Об упрощениях и ограниченияхВ книге используются упрощённые модели, искусственные датасеты и демонстрационные примеры. Реальные данные всегда сложнее – они шумные, несбалансированные и противоречивые.
Мы не разбираем полностью внутреннее устройство фреймворков вроде TensorFlow или PyTorch, а также не раскрываем архитектурные детали конкретных моделей, например GPT-4. Вместо этого мы концентрируемся на фундаментальных принципах – вероятностях, энтропии, границах решений, attention и next-token prediction.
О безопасности и этикеТемы фишинга, adversarial-атак, prompt injection и LLM-security рассматриваются исключительно в образовательных и defensive-целях.
Любые примеры атак приведены для того, чтобы понимать, как строится защита и awareness-подход в компаниях. Ответственность за применение знаний лежит на читателе.
Об ответственности и примененииКнига не является юридической, финансовой или кибербезопасной консультацией. Перед внедрением ИИ в продукт или бизнес-процессы необходимо учитывать требования законодательства вашей страны, политики обработки персональных данных и отраслевые стандарты.
Код приводится "как есть" – в образовательных целях. Перед использованием в продакшене его необходимо тестировать, оптимизировать и защищать.
Об ограничениях ИИИИ – это вероятностные модели. Они ошибаются. Они галлюцинируют. Они воспроизводят bias из данных.
Ни одна модель – даже созданная такими компаниями, как OpenAI или Google – не гарантирует абсолютной точности.
Всегда добавляйте валидацию, мониторинг и человеческий контроль.
О цели книгиЭта книга не о хайпе. Она о понимании.
Если после её прочтения вы перестанете воспринимать ИИ как магию и начнёте видеть в нём статистику, линейную алгебру, вероятности и инженерные компромиссы – значит, она выполнила свою задачу.
2. Введение
Мотивация, реалии и цели книги.
Эта книга выросла из простого наблюдения: PHP-разработчики почти всегда оказываются по другую сторону баррикад от машинного обучения. С одной стороны – мир веб-приложений, API, баз данных, бизнес-логики и реальных пользователей. С другой – статьи про нейросети, переполненные формулами, Python-кодом и ощущением, что это "не для нас". В результате AI либо воспринимается как черный ящик, либо полностью игнорируется.
Цель этой книги – снять это искусственное разделение.
На самом деле PHP-разработчики уже умеют мыслить моделями, даже если они никогда не называли это машинным обучением. Мы постоянно имеем дело с функциями, параметрами, ограничениями, ошибками, аппроксимациями. Мы пишем код, который принимает входные данные и выдает результат, ожидая, что он будет "достаточно хорош". Машинное обучение – это продолжение этой логики, а не магия и не отдельная дисциплина для избранных.
2a. От понимания – к математике и реализации
Эта книга – в первую очередь о понимании. Мы будем разбирать идеи машинного обучения с интуитивно стороны, формализовывать их математически просто и доводить до практической реализации на PHP. Без скрытых допущений, без "чёрных ящиков", без слепого копирования Python-примеров – только осознанный инженерный подход и воспроизводимый результат.
ИнтуитивноВ этой книге не будет попытки с первых же страниц погрузить читателя в линейную алгебру и статистику – ради самих формул. Каждая идея сначала объясняется на уровне интуиции: что мы хотим получить, какую проблему решаем, почему этот подход вообще имеет смысл. Если появляется термин – он привязывается к знакомым для программиста концепциям. Модель – это функция. Обучение – это подбор параметров. Предсказание – обычный вызов метода.
Интуиция важна не меньше формул. Без нее математические выкладки превращаются в набор символов, которые сложно применить к реальной задаче.
Математически простоПри этом книга не упрощает машинное обучение до уровня "нажми кнопку и получи AI". Если за чем-то стоит математика, она будет показана. Без излишнего академизма, но и без замалчивания сложных мест.
Мы будем говорить об ошибке модели, о том, что значит "оптимизировать", почему градиент вообще работает, откуда берется переобучение и почему модель может отлично показывать себя на тестах и при этом быть бесполезной в production-среде. Формулы будут ровно там, где без них невозможно сохранить простоту и ясность объяснения. Их цель – не напугать, а прояснить происходящее под капотом. Сложность этих формул не выйдет за рамки школьной алгебры, базового математического анализа и элементарной статистики: суммы, производные, наглядные геометрические интерпретации и т.д.
Практическая реализацияВсе примеры и реализации ориентированы на PHP. Не как "обертку" вокруг Python-скрипта, а как полноценную среду для понимания и экспериментов. Мы будем писать простые модели руками: линейную регрессию, классификаторы, элементы нейросетей. Да, не так эффективно, как в специализированных библиотеках, но предельно прозрачно.
Это важно по двум причинам. Во-первых, когда алгоритм реализуется самостоятельно, он перестает быть абстрактным. Во-вторых, это позволяет понять, где проходит граница: что разумно писать на PHP, а где действительно лучше использовать внешние ML-сервисы или специализированные инструменты.
Для кого эта книгаЭта книга для PHP-разработчиков, которые:
хотят понимать, как работает AI, а не просто писать вызовы API
не боятся кода, но устали от псевдонаучных объяснений
хотят разговаривать с дата-саентистами и ML-инженерами на одном языке
хотят применять машинное обучение в реальных продуктах, а не в абстрактных примерах из учебников
Здесь не требуется глубокая математическая подготовка, но потребуется готовность думать и задавать вопросы. Машинное обучение – это не набор рецептов, а способ мышления. И именно этот способ мышления мы будем постепенно выстраивать, шаг за шагом, опираясь на опыт PHP-разработчика.
В следующих главах мы начнем с самого фундамента: что такое модель в математическом смысле и почему без этого понимания невозможно говорить ни об AI, ни о нейросетях, ни о так называемых "умных" приложениях.
2b. Зачем PHP-разработчику AI
PHP долгое время жил в довольно понятном и устойчивом мире. Он отвечал за backend, формы, базы данных, бизнес-логику, интеграции, платежи и админки. Даже когда вокруг появлялись новые языки и фреймворки, PHP оставался рабочей лошадкой интернета. Простым, практичным и ориентированным на результат.
Машинное обучение (ML) и искусственный интеллект (AI) долгое время существовали где-то рядом, но как будто в другой реальности. Они ассоциировались с Python, университетами, исследованиями, сложной математикой и задачами, которые редко встречаются в обычных веб-проектах. Многим PHP-разработчикам казалось (да и до сих пор кажется), что это не их территория.
Сегодня эта граница практически исчезла.
AI стал не абстрактной технологией, а частью повседневных продуктов. Мы сталкиваемся с ним в поиске, рекомендациях, фильтрации контента, автоматизации поддержки, анализе текста и персонализации интерфейсов. И почти во всех этих системах по-прежнему есть backend, написанный на PHP.
Поэтому вопрос уже не в том, может ли PHP работать с AI. Он может и давно это делает. Гораздо важнее понять, зачем PHP-разработчику вообще разбираться в AI и что именно ему нужно знать.
Почему эта книга вообще нужнаЕсли вы PHP-разработчик и интересуетесь AI, вы, скорее всего, сталкивались с одной из этих ситуаций:
- все примеры машинного обучения написаны на Python
- учебники объясняют математику, но не показывают, как это применить в реальном backend-проекте
- AI кажется либо магией, либо чем-то избыточным для "обычных" задач
- непонятно, где проходит граница между тем, что стоит писать самому, и тем, что лучше отдать готовым моделям
Эта книга написана для того, чтобы закрыть именно этот разрыв. Она не пытается сделать из вас специалиста по анализу данных. И не пытается конкурировать с академическими курсами по ML.
Цель книги – дать PHP-разработчику инженерное понимание AI:
- как он работает внутри
- где он действительно полезен
- какие ограничения у него есть
- как интегрировать его в реальные PHP-проекты
и где не стоит его использовать вообще (что в общем-то тоже очень важно)
Зачем PHP-разработчику понимать AI, а не просто писать вызовы APIМногие начинают знакомство с AI через готовые API. Это удобно. Вы написали несколько строчек кода, добавили HTTP-запрос, и вот модель уже генерирует текст, классифицирует данные или отвечает пользователю. На первых порах кажется, что этого достаточно.
Как всегда - проблемы начинаются позже.
Модель ведет себя нестабильно. Ответы выглядят убедительно, но иногда оказываются неверными или недостаточно точными. Расходы растут быстрее, чем ожидалось. Бизнес задает вопросы, на которые сложно ответить: почему система так решила, можно ли это контролировать, кто несет ответственность за ошибку и прочее.
В этот момент становится ясно, что AI – это не просто внешний сервис. Это вероятностная система со своими ограничениями, особенностями и рисками. Она не понимает бизнес-контекст, не знает ваших правил и не гарантирует корректность результата. И если разработчик этого не осознает, - то проблемы неизбежны.
Понимание основ машинного обучения дает PHP-разработчику важное преимущество. Оно позволяет трезво оценивать возможности моделей, проектировать архитектуру с учетом их слабых мест и объяснять бизнесу, что AI может, а чего от него ждать не стоит. Это уже не вопрос моды или интереса, а вопрос инженерной ответственности.
Где AI реально используется в PHP-проектахРассмотрим практические кейсы, где AI уже сегодня приносит пользу именно в PHP-экосистеме.
1. Работа с текстом
На практике AI чаще всего появляется там, где традиционный код начинает упираться в неопределенность. Особенно это заметно в задачах, связанных с текстом. Классификация обращений в поддержку, поиск похожих документов, анализ тональности комментариев, автоматическая модерация – все это сложно описать жесткими правилами, но хорошо решается статистическими моделями.
- Вот пример самых частых сценариев:
- классификация текстов (тематика, тональность, приоритет)
- поиск и семантическое сравнение
- автоответы и подсказки
- модерация контента
Конкретные примеры:
- определение категории обращения в support-системе
- поиск похожих статей в базе знаний
- фильтрация токсичных комментариев
- нормализация пользовательского ввода
- и т.д.
2. Поиск и рекомендации
Еще одна важная область – поиск и рекомендации. Классический SQL запросы отлично работают, когда пользователь знает, что именно он ищет. Но как только появляется желание найти "что-то похожее" или "что могло бы заинтересовать", без AI становится трудно. В таких системах PHP обычно отвечает за бизнес-логику и данные, а модели – за семантическое сравнение и рекомендации.
AI отлично дополняет классический SQL-поиск:
- семантический поиск вместо LIKE
- рекомендации товаров или контента
- поиск "похожего", а не "точного"
В PHP-проектах это часто выглядит так:
- PHP управляет логикой и хранением
- AI-модель отвечает за векторизацию и сравнение
3. Anti Fraud и аномалии
Отдельно стоит упомянуть Anti Fraud (борьбу с мошенничеством) и анализ аномалий. Здесь часто не нужны сложные нейросети. Простые модели, которые выявляют отклонения от нормального поведения, уже дают заметный эффект и могут быть реализованы даже без внешних ML-фреймворков.
Машинное обучение хорошо подходит для:
- обнаружения подозрительных действий
- анализа поведения пользователей
- выявления нетипичных паттернов
То есть, часто все эти результаты можно получить не с использованием нейросетей, а через простые статистические модели, которые можно реализовать и в PHP.
4. Генерация и автоматизация
И, конечно, генерация - во всех её проявлениях. Тексты писем, описания товаров, черновики отчетов, подсказки операторам поддержки. Во всех этих сценариях PHP выступает не как "мозг", а как контролирующий слой, который решает, что именно можно генерировать, где это допустимо и как проверять результат.
А именно:
- генерация текстов (описания товаров, письма, отчеты)
- автозаполнение форм
- помощь операторам поддержки
- подготовка черновиков документов
Таким образом PHP здесь выступает как "оркестратор" – контролирует, что, когда и в каком виде генерируется.
Что AI не умеет (и не будет уметь в вашем проекте)Одна из главных задач этой книги, помимо прочего, – развенчать иллюзии.
Очень распространённая ошибка – ожидать от AI того, чего он принципиально дать не может. Модель не понимает смысла так, как человек. Она не знает, что "правильно" с точки зрения бизнеса. Она не берет на себя ответственность и не гарантирует корректность ответов.
При этом AI может выглядеть уверенно даже тогда, когда ошибается. Он может генерировать логичные, связные, но при этом полностью неверные ответы. Поэтому использование моделей без валидации и ограничений – это прямой путь к проблемам в production-среде.
Важно сразу принять простую мысль: AI – это помощник, а не источник истины. Он хорошо дополняет классический код, но не заменяет его.
Всё это значит, что AI:
- не понимает бизнес-логику
- не гарантирует корректность ответа
- не заменяет архитектурные решения
- не думает как человек
- не берет ответственность за результат
Поэтому AI нельзя использовать:
- как источник истины
- как единственный механизм принятия решений
- без валидации и ограничений
Где проходит граница: алгоритмы vs AIДля PHP-разработчика особенно важно уметь вовремя остановиться и не тянуть AI туда, где он не нужен. Если задачу можно четко описать правилами, условиями и проверками, то обычный код почти всегда будет лучше. Он предсказуем, прозрачен и легко отлаживается.
AI имеет смысл там, где есть вариативность, нечеткость и субъективность. Там, где мы говорим не "равно или не равно", а "похоже", "вероятно" или "скорее всего". Именно в этих зонах машинное обучение показывает свою силу.
В общем, старайтесь придерживаться простого правила:
- если задачу можно четко описать правилами – используйте код
- если есть неопределенность, вариативность и "похожесть" – возможно, нужен AI
Например:
- проверка формата email – это обычный код
- определение смысла текста письма – это уже AI
AI дополняет классическое программирование, а не заменяет его.
3. Экосистема ML в PHP
Обзор экосистемы PHP для машинного обучения и научных вычислений.
Когда говорят, что "в PHP нет машинного обучения", обычно путают две разные вещи.
В PHP действительно редко обучают большие нейросети с нуля (во всяком случае на данный момент), но PHP давно и уверенно живет в мире применения моделей, работы с векторами, статистикой, классификацией, эмбеддингами и численной математикой.
Экосистема здесь не шумная, но зрелая. Она состоит из четырёх слоев:
* библиотеки классического ML
* математический фундамент
* инструменты интеграции с современными ML-системами
* интеграция с внешними ML-сервисами
Разберем их последовательно.
Классическое машинное обучение на PHPНачнем с библиотек, которые реализуют сами алгоритмы машинного обучения прямо на PHP, без вызовов внешних сервисов.
PHP-ML
Репозиторий: https://github.com/jorgecasas/php-ml
Статус: давно не обновлялась
PHP-ML – это отправная точка для понимания ML в PHP. Здесь есть все основные алгоритмы из классического курса: k-NN, линейная и логистическая регрессия, наивный Байес, SVM, деревья решений, k-means.
Важно понимать философию PHP-ML. Она не пытается конкурировать с PyTorch или scikit-learn по производительности. Ее цель – дать программисту понятный и честный ML-инструмент прямо внутри PHP-кода. Её код легко читать, легко отлаживать, легко объяснять. Для книги и обучения это почти идеальный вариант.
Типичный сценарий: у вас есть признаки из базы данных, вы хотите быстро обучить модель для классификации или регрессии, сохранить ее и использовать в runtime без внешних сервисов.
Рассмотрим простой и показательный пример. В нём мы обучаем классификатор k-ближайших соседей [k-NN] на небольшом наборе точек, каждая из которых принадлежит одному из двух классов – a или b. После обучения модель должна определить, к какому классу относится новая точка.
Мы задаём обучающую выборку в виде координат на плоскости и соответствующие им метки классов:
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;
// Результат: 'b'
👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.
Для точки [3, 2] алгоритм возвращает класс "b", потому что её ближайшие соседи в обучающей выборке относятся именно к этому классу. Никакой "магии" здесь нет: k-NN просто смотрит, какие точки находятся ближе всего, и "голосует" по их меткам.
Именно эта наглядность и является большим плюсом алгоритма. Код легко читается, модель просто отлаживать, а математический смысл происходящего можно объяснить буквально на пальцах – через расстояния между точками и ближайшее окружение.
Но если PHP-ML – это "учебник", то следующая библиотека – уже "инженерный инструмент".
Rubix ML
Сайт и репозиторий: https://github.com/RubixML
Статус: активный
Rubix ML – это полноценный ML-фреймворк для PHP. Он ориентирован не на демонстрацию алгоритмов, а на построение воспроизводимых ML-пайплайнов: с трансформациями данных, сериализацией моделей, строгими интерфейсами и продакшен-подходом.
Rubix поддерживает классификацию, регрессию, кластеризацию и работу с датасетами как с first-class объектами.
Посмотрим, как это выглядит на практике.
Допустим, у нас есть данные для бинарной классификации. Код ниже также обучает классификатор k-ближайших соседей (k-NN), но уже на данных роста и веса с метками пола, а затем предсказывает метку для нового человека. Для параметров [172, 68] модель возвращает "M", так как среди 3 ближайших соседей большинство с этой меткой.
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Datasets\Unlabeled;
use Rubix\ML\Classifiers\KNearestNeighbors;
$samples = [
[170, 65],
[160, 50],
[180, 80],
[175, 70],
];
$labels = ['M', 'F', 'M', 'M'];
$dataset = new Labeled($samples, $labels);
$model = new KNearestNeighbors(3);
$model->train($dataset);
$testSamples = new Unlabeled([[172, 68]]);
$prediction = $model->predict($testSamples);
echo $prediction[0];
// Результат: 'M'
👉 Чтобы самостоятельно протестировать этот код, воспользуйтесь [онлайн-демонстрацией] для его запуска.
Обратите внимание на важный момент.
Мы не передаем "сырые массивы" в модель – мы работаем с объектом `Unlabeled` который является подтипом `Dataset`. Это принципиально другой уровень абстракции, который сразу приучает думать как ML-инженер, а не как автор скрипта для своего pet-проекта.
Rubix умеет сохранять модели, применять трансформеры, масштабировать признаки и работать с пайплайнами. В реальных PHP-системах это часто оказывает решающим, поэтому Rubix часто выбирают, когда модель – это не эксперимент, а часть долгоживущего сервиса, где важны версионирование, повторяемость и стабильность.
Линейная алгебра и тензоры как основа ML
Любой ML-код, даже самый прикладной, в итоге сводится к операциям над векторами и матрицами. В PHP для этого существует несколько сильных решений.
RubixML/Tensor
Репозиторий: https://github.com/RubixML/Tensor
Статус: активный
RubixML/Tensor – это низкоуровневая библиотека линейной алгебры, оптимизированная именно под задачи машинного обучения. Здесь есть тензоры, матрицы, элементные (поэлементные) операции, преобразования и разложения.
Если Rubix ML – это "мозг", то Tensor – это "мышцы".
Эта библиотека особенно важна, если вы хотите писать ML-код, который не просто работает, а делает это стабильно и предсказуемо – с контролируемым потреблением памяти и производительностью.
MathPHP
Репозиторий: https://github.com/markrogoyski/math-php
Статус: активный
MathPHP – универсальная математическая библиотека на чистом PHP. Линейная алгебра, статистика, вероятности, распределения, численные методы и прочее.
В контексте машинного обучения MathPHP часто используется не напрямую для моделей, а как фундамент для расчетов: расстояния, нормализация, статистические оценки, проверка гипотез.
Это библиотека, которая идеально подходит для объяснения математики "просто", без лишней сложности и скрытых оптимизаций.
NumPower
Репозиторий: https://github.com/RubixML/numpower
Статус: активный
NumPower – особый случай. Это PHP-расширение для высокопроизводительных численных вычислений, вдохновленное NumPy. Оно использует AVX2-инструкции на x86-64 и поддерживает CUDA для вычислений на GPU.
Фактически, это ответ на вопрос: "А можно ли делать в PHP настоящие численные вычисления на уровне scientific computing"?
И ответ – да, если вы готовы работать с расширениями и специфичной инфраструктурой.
NumPower актуален там, где PHP используется не как веб-слой, а как вычислительный движок.
NumPHP и SciPhp
NumPHP: https://numphp.org
Статус: давно не обновлялась
SciPhp: https://sciphp.org
Статус: давно не обновлялась
Это библиотеки, вдохновлённые NumPy и экосистемой научного Python, однако уже давно не обновлявшиеся. Сегодня они представляют скорее исторический интерес, чем практическую основу для новых проектов.
Тем не менее, их значение трудно переоценить: они показывают, что идеи научных вычислений в PHP начали развиваться задолго до появления LLM и нынешнего ажиотажа вокруг AI.
Современные ML-интеграции: токены, эмбеддинги, пайплайны данных
Современное машинное обучение редко ограничивается "алгоритмом". Вокруг него всегда есть инфраструктура: токенизация, подготовка данных, потоковая обработка.
Tiktoken PHP
Репозиторий: https://github.com/yethee/tiktoken-php
Статус:активный
tiktoken-php – это PHP-порт токенизатора OpenAI. Он используется для подсчета токенов, разбиения текста и подготовки данных для LLM.

