Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Події
Інше
Про нас
Новини 01 липня 2026

Тестування AI-систем у Laravel без жодного виклику API

Після побудови повноцінної AI-платформи з агентами, інструментами, базою знань, потоковим чатом та middleware постає питання: як тестувати код, що викликає штучний інтелект? Звертатися до OpenAI у тестовому наборі неможливо - це повільно, коштує грошей на кожному запуску, а відповіді змінюються щоразу, тому assertions ніколи не спрацьовують стабільно.

Фейкування AI-викликів

У цьому епізоді вся система тестується за допомогою Pest без жодного API-виклику, використовуючи систему фейків SDK. Це працює точно так само, як фейкування пошти, нотифікацій або черг у Laravel. Ви визначаєте відповіді заздалегідь і перевіряєте, що були надіслані правильні промпти.

Спочатку проводиться швидке очищення коду: middleware переноситься в окремий namespace AI/middleware. Потім пишуться тести, які перевіряють, що агент отримує коректні промпти, обробляє контекст розмови та повертає детерміновані відповіді.

Запобігання випадковим викликам

Використовується метод preventStrayPrompts, щоб виявляти випадкові AI-виклики у потоках, які не повинні активувати агента взагалі, наприклад при створенні тікета. Це гарантує, що AI спрацьовує лише там, де це передбачено архітектурою.

Тестування черг та інструментів

Черговані промпти теж потрапляють під тестування. Перевіряється, що TicketClassifier додається до черги при валідному поданні та не потрапляє туди при невалідному. Кастомні інструменти тестуються безпосередньо на реальних записах бази даних.

Під час запису один із тестів виявляє помилку у фабриці, яку автор виправляє в реальному часі. Саме такі баги тести і повинні ловити.

Feature-тестування та векторні сховища

Чат-ендпоінт проходить feature-тестування на автентифікацію, валідацію та коректну взаємодію з агентом. Потім тестується налаштування векторного сховища та заповнення бази знань шляхом фейкування створення store, завантаження документів та генерації embeddings.

Результати

Наприкінці всі 12 AI-тестів проходять успішно, виконуються швидко і ніколи не торкаються зовнішнього API. Їх можна запускати на кожному коміті без турбот про вартість чи нестабільність результатів.

Що далі

Наступний епізод присвячений безпеці. Агент захищається від prompt injection та інших атак, включаючи перевірку кожного повідомлення локальною LLM ще до того, як воно потрапить до OpenAI. Заблоковані повідомлення не коштують жодного центу на API-викликах.

Відеотуторіал епізоду доступний на YouTube та триває 15 хвилин. Код проєкту опублікований на GitHub.

5

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

whereBinary()
Новини 28 серпня 2026

whereBinary(): регістрозалежні запити MySQL у Laravel

Laravel 13.27 додає новий метод whereBinary() для точного побайтового порівняння рядків у MySQL. Він вирішує проблему, коли стандартне collation utf8mb4_unicode_ci ігнорує регістр, акценти та пробіли при порівнянні токенів, slug-ів та інших критичних даних.

ToolSearch
Новини 27 серпня 2026

Laravel AI: завантаження інструментів на вимогу з ToolSearch

Laravel AI v0.11.0 додає механізм відкладеного завантаження інструментів агента через ToolSearch. Замість надсилання всіх тридцяти інструментів одразу, провайдер отримує лише пошуковий запис і завантажує повні визначення тільки тоді, коли модель вирішує їх використати.

2

Вакансії за темою

Alliance Digital Нова
Сьогодні

PHP Developer

Middle PHP-розробник для фінтех-продукту. Розробка backend на Laravel з PostgreSQL, RabbitMQ, Redis. Реалізація складної бізнес-логіки кредитування, фінансових операцій, зовнішніх інтеграцій. Вимоги: 3+ років PHP, впевнена робота з Laravel, OOP/SOLID, складна бізнес-логіка, PostgreSQL, черги, тестування, production-mindset.

N-iX
16 днів тому

Senior PHP Engineer (#5311)

Senior PHP Engineer для консолідації двох legacy портальів в єдину сучасну платформу. Основний стек: PHP 8.x, Laravel, RabbitMQ, MySQL, Nuxt.js/Vue.js на AWS. Потрібні 5+ років досвіду з PHP, deep expertise в Laravel, event-driven архітектурі, AWS та SQL optimization. Роль передбачає дизайн високоякісного коду, архітектурні обговорення, роботу по всьому стеку та співпрацю з розподіленою командою в різних часових поясах.

Softprom
18 днів тому

FullStack Developer (PHP Laravel + React) for Automation and AI

FullStack розробник для проектів автоматизації та AI. Розробка backend на PHP Laravel з мікросервісною архітектурою, інтеграція ERP/CRM систем (NetSuite, HubSpot), та frontend на React з AI-функціоналом (chatbots, генерація контенту). Потребує 5+ років PHP, 3+ років Laravel на рівні архітектури, досвід мікросервісів, OOP, REST API, Websockets.

Пакети за темою

Pest

pestphp/pest

Тестовий фреймворк з лаконічним синтаксисом поверх PHPUnit: тести описуються функціями замість класів. Має паралельний запуск, тести архітектури, покриття і мутаційне тестування.

11,667 v5.1.1 2

Docudoodle

genericmilk/docudoodle

Генерування документації для вашого Laravel-додатку за допомогою OpenAI.

159 2.3.0 13 6