Скажите «ИИ» в комнате, полной разработчиков, и в ней тут же выстроится своя иерархия. Python сидит на вершине, JavaScript получает место, потому что кто-то должен рендерить окно чата, а PHP достается сочувственный взгляд — из тех, что говорят: «может быть, ты поймаешь следующую волну».
Теперь сопоставьте это с одной цифрой. По состоянию на август 2026 года W3Techs сообщает, что PHP стоит за 70.5% всех веб-сайтов, язык бэкенда которых ей удается определить. JavaScript, предполагаемый фаворит в гонке ИИ, занимает 7%. Язык, который якобы наблюдает за бумом со стороны, обслуживает бо́льшую часть веба, до которой этот бум пытается дотянуться.
Какое-то время оба утверждения были верны одновременно. Не так давно вызов LLM из PHP означал использование клиентского API сообщества или написанных вручную HTTP-запросов, в то время как разработчики на Python получали LangChain, LlamaIndex и новый фреймворк для агентов каждый второй вторник. Разрыв был реален, и отрицать это было бы самообманом.
Я бы сказал, что он больше не реален: он тихо исчез, и большинство людей за пределами мира Laravel этого еще не заметили. В собственном блоге Laravel теперь публикуются статьи с заголовками вроде «Создание ИИ-агентов на Laravel: Python не требуется». Когда маркетинг фреймворка столь прямолинеен, лежащие в его основе инструменты обычно уже прибыли к финишу.
ИИ-функция — это по большей части не ИИ
Снимите брендинг с любой «функции на базе ИИ» и посмотрите, что делает код. Где-то посередине находится один HTTPS-запрос к провайдеру модели. Все, что обернуто вокруг него, — это ПО, которое вы и так умеете создавать: аутентификация, валидация, ограничение частоты запросов (rate limiting), очереди, повторные попытки, биллинг, персистентность и интерфейс, который не прыгает при прибытии токенов.
Сама модель никогда не запускается в вашем приложении. Она работает в дата-центре, принадлежащем Anthropic, OpenAI или Google, и понятия не имеет, какой язык ее вызвал. С точки зрения провайдера, запрос, отправленный воркером очереди Laravel, неотличим от запроса, отправленного сервисом на FastAPI.
На этом переосмыслении и строится весь данный аргумент: Python был нужен для создания модели, а не для создания того, что ею пользуется. Обучение модели и создание продукта вокруг нее — это разные задачи, которые выполняются разными людьми с помощью разных инструментов. Смешивание этих понятий — это ровно то, как разработчики на PHP сами убедили себя отказаться от собственной территории, ведь слой приложения — это по большей части и есть то, чем «ИИ-приложение» на самом деле является.
Стек, который появился тихим сапом
Вот с чем предстоит работать разработчику на PHP в 2026 году. Я хочу быть точен в отношении каждого компонента, поскольку они не являются пятью вариациями одного и того же.
Prism — это унифицированный слой провайдеров для сообщества: единый текучий (fluent) API поверх OpenAI, Anthropic, Mistral и остальных, благодаря которому смена вендора сводится к изменению конфигурации, а не к переписыванию кода.
Официальный Laravel AI SDK ( laravel/ai ) — это главный игрок. Первый класс (first-party), от той же команды, которая поддерживает Eloquent и систему очередей, анонсированный в феврале 2026 года и в настоящее время находящийся в бета-версии. Агенты представляют собой обычные PHP-классы, структурированный вывод задается через интерфейс, а встраивания (embeddings) привязаны к классу Str . Он взаимодействует с 14 провайдерами, осуществляет отказоустойчивое переключение между ними при сбоях и поставляется с полноценным фейковым слоем для тестов.
Neuron AI охватывает более тяжелый агентский сегмент. Вы расширяете класс Agent и получаете память, вызовы инструментов, RAG-компоненты и воркфлоу с шагами с участием человека (human-in-the-loop), а также наблюдаемость (observability) через Inspector. Он не привязан к конкретному фреймворку, работает на PHP 8.1+ и поддерживает более 15 провайдеров.
LLPhant — это специалист по поиску: абстракции в стиле LangChain, ответы на вопросы с реранкингом и памятью чата, а также длинный список интеграций с векторными хранилищами. Он также не зависит от фреймворка, что делает его естественным выбором для Symfony.
Laravel Boost — белая ворона в этом списке. Он не добавляет ИИ в ваше приложение; он помещает ваше приложение перед лицом ИИ. Это MCP-сервер, который предоставляет вашему агенту по написанию кода (Claude Code, Cursor или любому другому, который вы используете) инструменты инспекции для вашего приложения, а также специфичные для Laravel рекомендации и документацию, благодаря чему сгенерированный код соответствует той версии фреймворка, которая у вас реально установлена.
Слово «официальный» в этом списке играет вполне реальную роль. Когда поддержка ИИ поставляется как пакет первого класса с миграциями, генераторами Artisan и готовым подходом к тестированию, она перестает быть хобби-интеграцией и становится частью контракта фреймворка. Тот факт, что Embeddings::fake() вообще существует, говорит о том, насколько серьезно команда Laravel отнеслась к этому: кто-то спроектировал опыт тестирования еще до того, как выпустить основной сценарий (happy path).
Как мало кода это теперь занимает
Слова дешевы, поэтому вот код. Допустим, отзывы о продукте попадают в вашу базу данных, и вы хотите получать однострочную сводку рядом с каждой записью. С Prism вся фича выглядит так:
use Prism\Prism\Enums\Provider;
use Prism\Prism\Facades\Prism;
$response = Prism::text()
->using(Provider::Anthropic, 'claude-haiku-4-5-20251001')
->withSystemPrompt('You write one-sentence summaries of customer feedback.')
->withPrompt($feedback->body)
->asText();
$feedback->update(['summary' => $response->text]);
Измените перечисление провайдера и строку модели — и вы сменили вендора. Вот и вся миграция. $response->usage также выдает количество токенов, потому что на второй месяц обязательно кто-нибудь спросит про счет.
Официальный SDK делает шаг вперед, предлагая типизированный вывод. Представьте, что вы проводите триаж (первичную обработку) тикетов техподдержки:
app/Ai/Agents/TicketTriage.php
<?php
namespace App\Ai\Agents;
use Illuminate\Contracts\JsonSchema\JsonSchema;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\HasStructuredOutput;
use Laravel\Ai\Promptable;
use Stringable;
class TicketTriage implements Agent, HasStructuredOutput
{
use Promptable;
public function instructions(): Stringable|string
{
return 'You triage customer support tickets. '
.'Summarize the issue and score its urgency.';
}
public function schema(JsonSchema $schema): array
{
return [
'summary' => $schema->string()->required(),
'urgency' => $schema->integer()->min(1)->max(5)->required(),
];
}
}
Использование читается как любой другой класс Laravel:
$response = (new TicketTriage)->prompt($ticket->body);
$ticket->update([
'summary' => $response['summary'],
'urgency' => $response['urgency'],
]);
Никаких уговоров вроде «пожалуйста, ответь валидным JSON» в промпте. Никаких блоков try/catch вокруг json_decode . Схема ограничивает вывод, а к ответу можно обращаться как к массиву в том формате, который вы объявили. Если вам доводилось нянчиться со скриптом, который парсил вывод LLM с помощью регулярных выражений, то это именно тот момент, когда вы начинаете тихо завидовать.
Встраивания (embeddings) делаются в одну строку на классе, которым вы и так пользуетесь каждый день:
use Illuminate\Support\Str;
$embeddings = Str::of($ticket->body)->toEmbeddings();
А для RAG не требуется разворачивать новый сервис в вашем docker-compose. Инструмент SimilaritySearch из SDK подключается к моделям Eloquent на базе pgvector, причем векторная математика обрабатывается построителем запросов (query builder). Стриминг в браузер оформляется как (new TicketTriage)->stream($question) , возвращаемый прямо из роута в виде серверных событий (SSE), а долгоиграющие задачи отправляются в очередь, как и любая другая задача Laravel.
Сложите вместе всё, что охватывают эти фрагменты кода: абстракцию провайдеров, типизированный вывод, семантический поиск, стриминг, фоновую обработку. Раньше это было презентацией отдельного микросервиса на Python. Теперь это пара часов работы в кодовой базе, которую ваша команда уже умеет деплоить, мониторить и откатывать. И если вы смотрите на агентов так, как я утверждал ранее, — как на программные воркфлоу с инструментами, — то фреймворк, построенный вокруг воркфлоу, является естественным местом для их запуска.
Где место PHP и где его не будет никогда
Вот часть, которая удерживает эту статью от превращения в банальные речёвки.
Место PHP — на уровне приложения: в той части, которая вызывает модель, владеет бизнес-воркфлоу, хранит аутентификацию, данные, доменные правила, биллинг и ориентированный на пользователя продукт. Этот уровень определяет, является ли ваша ИИ-функция демо-версией или бизнесом, и это ровно тот уровень, который Laravel потратил десятилетие на то, чтобы сделать скучным в лучшем смысле этого слова — с очередями, политиками, валидацией и деплоем, из-за которого не приходится терять сон.
PHP не место в обучении моделей, дообучении (fine-tuning) или дата-саенсе, и ему не стоит туда стремиться. Для PHP не существует PyTorch, да он и не нужен. Числовой стек, лежащий в основе современного машинного обучения (NumPy, ядра CUDA, вся башня научных вычислений), накапливался в Python десятилетиями и сросся с исследовательским сообществом, которое публикует работы на нем. Если вашему продукту требуется кастомное дообучение или серьезная работа с данными, этот кусок пирога написан на Python, и точка.
Но обратите внимание, что на самом деле означает это разделение. Модель — это компонент; продукт — это приложение вокруг нее, а приложение — это то место, где живут ваши пользователи, ваши данные и ваша выручка. Вы ведь тоже не писали Postgres, и никто не говорит, что разработчикам на PHP закрыт доступ к базам данных.
Где же на практике проходит граница? Гипотетический пример: ваша команда выпускает юридический SaaS-ассистент для работы с документами. Конвейер поиска (retrieval pipeline), права доступа, определяющие, кто к каким документам может делать запросы, журнал аудита, лимиты запросов, сборка промптов, интерфейс — все это на Laravel, целиком и полностью. Модель встраивания (embedding model), которая превратила пункты договоров в векторы: обучена на Python людьми, с которыми вы никогда не встретитесь, и потребляется через API точно так же, как вы потребляете Stripe. Такое разделение труда — это ровно то, как вы и так строите все остальное.
Шероховатости, если говорить честно
Обратная сторона быстрого догона заключается в том, что большая часть этого инструментария еще молода. Четыре вещи, которые я хотел бы знать, прежде чем ставить на него дорожную карту:
- Официальный SDK находится в бета-версии. Laravel говорит об этом прямо. API все еще могут измениться у вас под ногами, а обновление бета-зависимости в продакшене — это осознанное решение, а не формальность.
- Стриминг работает, но не без шероховатостей. Примитивы на месте: серверные события (SSE) прямо из роута и дата-протокол Vercel AI для сетапов на Livewire и Inertia. Но модель «запрос на один процесс» в PHP делает долгожитящие соединения менее нативными, чем в Node, и здесь есть сюрпризы молодой экосистемы — например, задокументированное предупреждение Prism о том, что Telescope может перехватывать события стрима до того, как их испустит Prism. Это из тех подводных камней, которые стоят вам потраченного вечера, на которые пока нет ответа на Stack Overflow.
- Вам придется читать документацию и исходный код, а не туториалы. Поищите любой паттерн агентов — и первые двадцать результатов будут ориентированы на Python. Материалы по Laravel хороши, но скудны: страница документации, пара постов в блогах, доклады на конференциях, которые еще догоняют тренд. Быть в числе первых означает быть примером для самого себя.
- Пересечения означают выбор. Prism и официальный SDK решают пересекающиеся задачи, а Neuron и LLPhant снова пересекаются со стороны фреймворк-независимых решений. Мое мнение: в приложении на Laravel, стартующем сегодня, используйте официальный SDK и принимайте риски беты; оставайтесь на Prism, если вы уже используете ее или ее набор провайдеров подходит вам лучше; присмотритесь к Neuron или LLPhant, если вы вообще находитесь за пределами Laravel. Что бы вы ни выбрали, оберните это в собственный сервисный класс, чтобы замена стоила дешево.
Ничто из этого не является дисквалифицирующим фактором. Это нормальная фактура экосистемы, которой год-два от роду, а не пять. Стек Python прошел через ту же эпоху; просто все уже забыли, как часто LangChain ломала собственные API во времена версии 0.x.
Так что переверните старый вопрос. Вопрос «LLM на PHP — зачем?» всегда был неправильной рамкой. Правильная звучит так: в какой части ИИ-продукта ваш язык должен быть хорош? Во всем, кроме самой модели, ответ таков: в том, в чем PHP был хорош и раньше — в аутентификации, данных, воркфлоу и продукте, который вы выставляете перед пользователями.
До решения «как» — всего одна команда composer require laravel/ai . Модель никогда не волновало, какой язык ее вызывает, а начиная с этого года, это не волнует и инструменты.
P.S. Спасибо, что уделили время на чтение этой статьи! Идеи и мнения, выраженные здесь, принадлежат мне. Английский — не мой родной язык, поэтому я использую ИИ, чтобы исправлять грамматику и делать текст более четким и легким для чтения. Если что-то все еще звучит немного неловко, я ценю ваше понимание!
Понравилась статья? Давайте оставаться на связи — я есть в LinkedIn, всегда рад пообщаться, обменяться идеями или просто сказать привет. 👋
Комментарии (0)
Пока нет комментариев — будьте первым.