Після інтеграції штучного інтелекту в численні Laravel-додатки виявляється одна тенденція: команди витрачають 20% часу на налаштування AI і 80% – на підтримку його стабільності. Кожен проект відновлює вже відомі елементи – управління сесіями, виклики інструментів, тестування запитів, обробку помилок.
Зараз є кращий спосіб.
Vizra ADK об’єднує принципи програмної інженерії з розробкою AI у Laravel. Це не просто ще одна обгортка API, а повноцінний фреймворк для створення, тестування та впровадження розумних агентів, яким команди можуть довіряти в продуктивних середовищах.
Уявіть собі елегантність Laravel, поєднану з потужністю AI. Контролери для агентів. Міграції для пам'яті. Тести для запитів. Все, що розробники люблять у Laravel, тепер доступно для AI.
Безкоштовно, з відкритим кодом та побудовано в стилі Laravel.
Давайте створимо щось реальне. Відкрийте термінал:
composer require vizra/vizra-adk
php artisan vizra:install
Додайте ключ постачальника AI до .env
:
OPENAI_API_KEY=ваш-ключ-тут
# Також підтримується Anthropic, Google Gemini та багато інших
Тепер створіть свого першого агента:
php artisan vizra:make:agent CustomerSupportAgent
Готово! Ви створили інтелектуального AI-асистента. Давайте зробимо його корисним:
<?php
namespace App\Agents;
use Vizra\VizraADK\Agents\BaseLlmAgent;
class CustomerSupportAgent extends BaseLlmAgent
{
protected string $name = 'customer_support';
protected string $description = 'Обробляє запитання клієнтів з емпатією та ефективністю';
protected string $instructions = "Ви – корисний агент підтримки клієнтів для AcmeStore.
Ключова інформація:
- Ми продаємо електроніку та гаджети
- Безкоштовна доставка на замовлення понад $50
- Політика повернення на 30 днів
- Години роботи: 9:00 - 18:00 EST
Будьте дружніми, професійними та орієнтованими на рішення.";
protected string $model = 'gpt-3.5-turbo';
}
Хочете побачити вашого агента в дії? У вас є три способи миттєво його протестувати:
# 1. Чат в командному рядку
php artisan vizra:chat customer_support
# 2. Красивий веб-дошка (з трасуванням дебагу!)
# Відвідайте: http://your-app.test/vizra
# 3. Вбудовані API-інтерфейси (контролер не потрібен!)
curl -X POST http://your-app.test/api/vizra-adk/interact \
-H "Content-Type: application/json" \
-d '{"agent_name": "customer_support", "input": "Привіт!"}'
Саме так – Vizra ADK включає готові API-інтерфейси. Не потрібно писати контролери, якщо вам не потрібна власна логіка.
Звісно, якщо ви бажаєте традиційний підхід:
// У вашому контролері (за бажанням)
use App\Agents\CustomerSupportAgent;
public function chat(Request $request)
{
$response = CustomerSupportAgent::run($request->input('message'))
->forUser(auth()->user())
->go();
return response()->json(['reply' => $response]);
}
Ваш агент автоматично зберігає історію розмов залежно від користувача. Забудьте про головний біль із управлінням сесіями.
Ось де починається цікаве. Ваші агенти можуть не лише спілкуватися, а й робити речі:
php artisan vizra:make:tool OrderLookupTool
<?php
namespace App\Tools;
use Vizra\VizraADK\Contracts\ToolInterface;
use Vizra\VizraADK\System\AgentContext;
use Vizra\VizraADK\Memory\AgentMemory;
class OrderLookupTool implements ToolInterface
{
public function definition(): array
{
return [
'name' => 'order_lookup',
'description' => 'Пошук замовлення за ID',
'parameters' => [
'type' => 'object',
'properties' => [
'order_id' => [
'type' => 'string',
'description' => 'ID замовлення для пошуку',
],
],
'required' => ['order_id'],
],
];
}
public function execute(array $arguments, AgentContext $context, AgentMemory $memory): string
{
$order = Order::find($arguments['order_id']);
if (!$order) {
return json_encode(['error' => 'Замовлення не знайдено']);
}
// Зберегти цю взаємодію в пам'яті
$memory->addFact("Недавній пошук замовлення: #{$order->id}", 1.0);
return json_encode([
'order_id' => $order->id,
'status' => $order->status,
'total' => $order->total,
'items' => $order->items->count(),
]);
}
}
Зв'яжіть інструмент з вашим агентом:
class CustomerSupportAgent extends BaseLlmAgent
{
protected array $tools = [
OrderLookupTool::class,
];
}
Тепер ваш агент може шукати реальні замовлення, коли клієнти запитують. Жодних більше "Я лише AI" відмовок.
Ось що відрізняє Vizra від інших пакетів AI для Laravel – оцінки. Так само, як ви не випустите код без тестів, чому б не перевірити AI на якість?
php artisan vizra:make:eval CustomerSupportQuality
Це створить ваш клас оцінки і CSV-файл для тестових випадків. Додайте кілька реальних сценаріїв:
prompt,expected_response,description
"Де моє замовлення #12345?",order,"Має знайти статус замовлення"
"Я хочу повернути це",return,"Має пояснити політику повернення"
"Ваш сервіс жахливий!",sorry,"Має відповідати з емпатією"
"Які у вас години роботи?",9 AM,"Має вказати години роботи"
Тепер визначте, що означає "якість" для вашого агента, використовуючи вбудовані асерції Vizra:
<?php
namespace App\Evaluations;
use Vizra\VizraADK\Evaluations\BaseEvaluation;
class CustomerSupportQuality extends BaseEvaluation
{
public string $agentName = 'customer_support';
public string $csvPath = 'app/Evaluations/data/customer_support_quality.csv';
public function evaluateRow(array $csvRowData, string $llmResponse): array
{
$this->resetAssertionResults();
// Перевірка, чи містить відповідь очікувані ключові слова
if (isset($csvRowData['expected_response'])) {
$this->assertResponseContains(
$llmResponse,
$csvRowData['expected_response']
);
}
// Всі відповіді підтримки мають бути ввічливими
$this->assertResponseHasPositiveSentiment($llmResponse);
// Не пишіть романи
$this->assertWordCountBetween($llmResponse, 20, 150);
// Для скарг перевірте наявність емпатії
if (str_contains($csvRowData['prompt'], 'жахливий')) {
$this->assertResponseContains($llmResponse, 'вибачте');
}
return parent::evaluateRow($csvRowData, $llmResponse);
}
}
Зверніть увагу на ці методи асерцій? Vizra ADK включає більше 20 вбудованих асерцій для валідації контенту, аналізу емоцій, перевірки довжини і більше. Не потрібно писати складну логіку валідації – просто використовуйте асерції на зразок assertResponseHasPositiveSentiment()
або assertWordCountBetween()
. І так, ви також можете додавати власні асерції!
Запустіть ваші перевірки якості:
php artisan vizra:run:eval CustomerSupportQuality
Запускаємо оцінку: customer_support_quality
Обробка 4 тестових випадків...
████████████████████████ 4/4
Результат: Всього: 4, Пройшло: 3 (75%), Не пройшло: 1
Один тест не пройшов перевірку на кількість слів – агент написав 180 слів, пояснюючи політику повернення. Саме тому вам потрібні оцінки! Тепер ви можете налаштувати інструкції вашого агента, щоб вони були лаконічнішими, або відкоригувати асерції відповідно до ваших реальних вимог.
Vizra ADK – це не просто ще один пакет – це повноцінний фреймворк для розробки AI:
/vizra
composer require vizra/vizra-adk
Весь фреймворк з відкритим кодом та ліцензією MIT. Створюйте агентів для підтримки клієнтів, аналізу даних, генерації контенту або для будь-чого, що ви тільки можете уявити.
Хоча ADK завжди буде безкоштовним, ми запускаємо Vizra Cloud для команд, які хочуть:
Бета-ціна: $29/місяць (50% знижки від звичайної ціни, зафіксованої на 12 місяців).
Перестаньте боротися з AI API. Забудьте про надії на правильність поведінки AI. Починайте створювати AI-агентів за допомогою Laravel – з належними інструментами, тестуванням та впевненістю.
Готові створити щось вражаюче?
🚀 Почніть з Vizra ADK
📖 Читати документацію
⭐ Підтримайте нас на GitHub
Vizra ADK розроблений незалежним розробником Ароном Ламсденом. Створено з любов'ю для спільноти Laravel.