Команда Laravel щойно випустила версію 1.0 Laravel AI SDK - офіційного пакета, який надає єдиний API для роботи з AI-провайдерами у Laravel-додатках. SDK вперше анонсували в лютому цього року, а це оновлення додає нові можливості класифікації, підтримку двох фронтенд-протоколів чату та новий формат зберігання розмов.
Встановлення виконується стандартною командою:
composer require laravel/ai
Класифікація
Класифікація тепер є окремою можливістю SDK поряд з текстом, зображеннями, аудіо та embeddings. Вона покриває швидкі рішення, такі як маршрутизація тікетів підтримки або позначення коментарів. Функція працює на моделях Jev від TypeSafe і, за словами команди, може відповідати на запитання за мілісекунди за частку вартості традиційних LLM.
Ви задаєте набір питань і отримуєте типізовану відповідь для кожного:
use Laravel\Ai\Classification;
use Laravel\Ai\Classification\Boolean;
use Laravel\Ai\Classification\Choice;
$response = Classification::of($ticket->body)->questions([
'is_urgent' => new Boolean('Does this message convey urgency?'),
'department' => new Choice('Which team should handle this?', [
'billing' => 'Payments, invoicing, refunds',
'technical' => 'Bugs, outages, integrations',
'sales' => 'Pricing, plans, upgrades',
]),
])->classify();
$response['is_urgent']->isTrue();
$response['department']->choice; // 'technical'
Також доступний тип питання Score, який повертає значення від 0.0 до 1.0. Для одного питання типу так/ні новий макрос Str::decide повертає boolean, а аргумент threshold встановлює рівень впевненості моделі:
Str::of($message)->decide('Is this spam?');
Наразі класифікація працює з TypeSafe та OpenRouter. Команда планує додати інших провайдерів за тим же API, коли вони випустять подібні моделі.
Потокова передача Vercel Chat та AG-UI
SDK тепер може читати запити та передавати відповіді потоком, використовуючи протоколи Vercel Chat та AG-UI. Це дозволяє поєднувати його з фронтенд-бібліотеками, які вже підтримують ці протоколи. Ось приклад маршруту для Vercel chat:
use Illuminate\Http\Request;
use Laravel\Ai\Vercel\Vercel;
Route::post('/chat', function (Request $request) {
$chat = Vercel::chat($request);
return (new SupportAgent)
->withMessages($chat->history())
->stream($chat)
->usingProtocol($chat->protocol());
});
Цей маршрут зчитує нове повідомлення, оновлює історію розмови в базі даних та обробляє будь-які схвалення інструментів, надіслані користувачем. Для клієнтів AG-UI, таких як CopilotKit, замість цього викличте usingAgentUserInteractionProtocol() на потоці. Метод Vercel::toUiMessages() конвертує збережені повідомлення назад у формат клієнта, коли потрібно відновити екран чату після перезавантаження сторінки.
Схвалення викликів інструментів
Інструмент, який реалізує контракт Approvable та використовує трейт InteractsWithApprovals, призупиняє роботу агента до схвалення виклику. Це чудово працює для інструменту видалення файлів:
use Laravel\Ai\Concerns\InteractsWithApprovals;
use Laravel\Ai\Contracts\Approvable;
use Laravel\Ai\Contracts\Tool;
class DeleteFile implements Approvable, Tool
{
use InteractsWithApprovals;
// ...
}
Відповідь містить список усіх очікуючих викликів з аргументами, які вибрала модель. Ви продовжуєте розмову з рішенням для кожного виклику. Рішення може схвалити виклик, відхилити його з причиною, яку бачить модель, або відредагувати аргументи перед виконанням інструменту. Схвалення працюють з методами prompt, stream, queue та broadcast.
Інші зміни у версії 1.0
Middleware для кожного кроку: Middleware агента тепер виконується на кожному кроці генерації, а не раз на запит. Кожен крок надходить як PendingStep, який можна змінити методами withModel, withTools, withoutTools та withMaxTokens. Наприклад, ви можете видалити дорогий інструмент після того, як агент використав його один раз.
Пошук інструментів: Загорніть рідко використовувані інструменти в ToolSearch, і провайдер завантажуватиме їх лише коли запит їх потребує. Це працює на OpenAI та Anthropic.
Виконання коду: Інструмент провайдера CodeExecution виконує код у пісочниці провайдера на Anthropic, OpenAI, Azure, Gemini та xAI.
Кроки розмови: Повідомлення тепер зберігають один JSON-стовпець steps з одним записом на кожний round-trip, і кожен результат інструменту зберігається разом з викликом, який його створив.
Звітність про використання: promptTokens та completionTokens тепер називаються inputTokens та outputTokens і включають повні підрахунки провайдера для всіх провайдерів.
Оновлення до версії 1.0
Основні breaking changes стосуються зберігання розмов, middleware агентів, підрахунку токенів та протоколів потокової передачі. Якщо ви виконуєте сирі SQL-запити до стовпців tool_calls або tool_results, вам потрібно буде перейти на steps. Офіційний гайд з оновлення також включає міграцію backfill, яку необхідно виконати один раз перед розгортанням версії 1.0.
Команда рекомендує доручити більшу частину оновлення AI-асистенту через Laravel Boost:
composer require laravel/boost --dev
php artisan boost:install
Потім запустіть команду /upgrade-ai-sdk-v1 у Claude Code, Cursor, OpenCode, Gemini або VS Code, і Boost проведе вашого асистента через гайд крок за кроком.
Повний опис усіх змін та приклади коду доступні в офіційному анонсі, а для початку роботи звертайтеся до документації AI SDK.