Pushpak Chhajed під егідою Ship Fast Labs представив Toolkit - спільнотну колекцію готових інструментів для Laravel AI SDK. Усі інструменти зберігаються в одному монорепозиторії, але постачаються як окремі Composer-пакети, тож ви встановлюєте лише ті, які потрібні конкретному агенту.
Один пакет на інструмент, без сервіс-провайдерів
Кожен інструмент - це клас, що реалізує інтерфейс Laravel\Ai\Contracts\Tool з методами description(), handle() та schema(). Немає спільного ядра, жодного сервіс-провайдера для реєстрації та жодних конфігураційних файлів для публікації. Ви просто встановлюєте потрібний пакет, створюєте екземпляр інструменту та передаєте його в метод tools() агента:
composer require shipfastlabs/toolkit-calculator
composer require shipfastlabs/toolkit-database
use Shipfastlabs\Toolkit\Calculator\CalculatorTool;
use Shipfastlabs\Toolkit\Database\DatabaseQueryTool;
$tools = [
new CalculatorTool,
new DatabaseQueryTool,
];
Кожен інструмент описує своє призначення через description() та свої вхідні параметри через schema(), а модель сама вирішує, коли його викликати. Результати, включно з помилками, повертаються як рядки, тож модель може прочитати помилку та спробувати відновитися замість того, щоб запит просто завершився з помилкою.
Калькулятор без eval()
Інструмент Calculator приймає рядок expression і обчислює його за допомогою рекурсивного парсера замість PHP-функції eval(). Він підтримує оператори +, -, *, /, %, ^ (правоасоціативне піднесення до степеня), дужки, унарні знаки та десяткові числа. Некоректні вхідні дані, ділення або остача від ділення на нуль, а також нескінченні результати повертаються моделі як звичайні рядки замість викидання винятків. Це "чистий" інструмент: без конфігурації, без сервіс-провайдера.
Read-only запити до бази даних
Інструмент Database виконує один SQL-запит SELECT і повертає відповідні рядки як відформатований JSON. Його захисні механізми є ключовими:
- Дозволяється лише один запит, що починається з
SELECT (або WITH … SELECT CTE).
INSERT, UPDATE, DELETE, DROP, ALTER та подібні ключові слова відхиляються навіть всередині SELECT-запиту.
- Запити з роздільниками
; відхиляються.
- До будь-якого запиту без
LIMIT автоматично додається обмеження.
Інструменти з конфігурацією читають налаштування з ключа ai.toolkit.*, який ви додаєте до існуючого файлу config/ai.php Laravel AI SDK - окремий конфігураційний файл публікувати не потрібно:
// config/ai.php
'toolkit' => [
'database' => [
'connection' => env('TOOLKIT_DATABASE_CONNECTION'),
'max_rows' => (int) env('TOOLKIT_DATABASE_MAX_ROWS', 100),
],
],
Вказання connection на read-only репліку додає ще один рівень безпеки, а max_rows обмежує кількість рядків у відповіді.
Провайдери веб-пошуку та досліджень
Три пакети обгортають API для пошуку та досліджень, кожен з хелпером, що реєструє весь набір одразу, або окремими класами інструментів на вибір:
- Exa (
toolkit-exa): ExaSearch, ExaFindSimilar, ExaGetContents та ExaAnswer для веб-пошуку на основі embeddings, пошуку схожого контенту, видобування вмісту та відповідей з джерелами та цитатами.
- Perplexity (
toolkit-perplexity): PerplexitySearch для ранжованих джерел та PerplexityAsk для відповідей з цитатами через моделі Sonar з режимами пошуку web, academic та sec.
- Tavily (
toolkit-tavily): TavilySearch, TavilyExtract, TavilyCrawl та TavilyMap для пошуку, видобування контенту, crawling сайтів та створення карти сайту.
use Shipfastlabs\Toolkit\Exa\Exa;
$tools = Exa::all(); // Collection<int, Tool>
Кожен провайдер читає свій API-ключ з конфігурації services Laravel та опціональні налаштування за замовчуванням з ai.toolkit.*. Числові параметри обмежуються допустимими діапазонами, enum-параметри повертаються до безпечних значень за замовчуванням, а помилки API перехоплюються та повертаються як рядки замість викидання винятків.
Бібліотека ендпоінтів JigsawStack
Пакет JigsawStack (toolkit-jigsawstack) надає інструмент для кожного ендпоінту, згруповані в категорії: загальні, переклад, веб, зображення, аудіо та валідація. Це охоплює аналіз тональності, резюмування, embeddings, text-to-SQL, прогнозування часових рядів, переклад тексту та зображень, веб-пошук, AI-скрапінг, HTML-to-image/PDF, VOCR, виявлення об'єктів, speech-to-text та перевірку на NSFW/лайку/орфографію/спам.
Кожен інструмент відповідає одному ендпоінту та повертає сирий JSON-відповідь (відформатований), щоб модель могла прочитати кожне поле. Запити припиняються через 60 секунд, а відсутність API-ключа повертає зрозуміле повідомлення "not configured".
Встановлення
Оберіть потрібні інструменти та встановлюйте їх окремо - наприклад:
composer require shipfastlabs/toolkit-calculator
composer require shipfastlabs/toolkit-tavily
Інструменти для роботи з віддаленими API потребують ключа провайдера в config/services.php (та відповідного запису в .env). Сторінка документації кожного інструменту містить точні ключі конфігурації та значення за замовчуванням.
Переглянути повний каталог можна на офіційному сайті Toolkit, а вихідний код доступний на GitHub.