Когда я впервые столкнулся с Laravel AI SDK, я был впечатлен его чистой абстракцией провайдеров и хорошей производительностью. Однако, когда я попытался использовать его для генерации реального бизнес-контента, я столкнулся с одной и той же проблемой каждый раз: отсутствием бизнес-слоя. После получения вызова LLM мне приходилось самостоятельно строить все остальное, включая пресеты, контекстное внедрение, структуру вывода, контроль тона и обеспечение анти-галуцинации. И я повторял эту работу на каждом проекте.
Проблема с сырыми вызовами LLM в бизнес-приложениях
Генерация напоминания о платеже с помощью Laravel AI SDK напрямую выглядит следующим образом:
$ai = app(\Laravel\Ai\Contracts\Ai::class);
$response = $ai->text(
"Вы являетесь профессиональным бизнес-ассистентом. Сгенерируйте напоминание о платеже для клиента. Номер счета - #1042. Оплата задерживается на 30 дней. Сумма - 1500 EUR. Имя клиента - Жан Мартин. Наша компания - Acme Corp. Вернуть JSON-объект с: subject, message, call_to_action. Не изобретайте никакой информации, не указанной выше. Используйте твердый, но профессиональный тон. Язык: французский."
);
Этот подход работает до тех пор, пока не перестает. В производственной среде проблемы накапливаются быстро:
- Контекст закодирован в подсказки, без повторно используемой структуры
- Парсинг вывода хрупок - модель иногда возвращает проза вместо JSON
- Анти-галуцинация является инструкцией наилучших усилий, а не принудительной
- Тон, язык, аудитория - все это необходимо делать вручную каждый раз
- Нет журналирования - вы не знаете, что было сгенерировано, когда и для какого арендатора
И вы переписываете все это на каждом проекте, для каждой функции.
То, чего я хотел вместо этого
Я хотел слой, который обрабатывает бизнес-заботы, чтобы я мог просто описать, что я хочу:
$response = BusinessAssistant::generate(new AssistantRequestData(
task: AssistantTask::Email,
preset: 'payment-reminder',
data: [
'invoice_number' => '#1042',
'days_overdue' => 30,
'amount' => 1500,
'client_name' => 'Жан Мартин',
'company_name' => 'Acme Corp',
]
));
Этот подход позволяет мне сосредоточиться на бизнес-логике, не заботясь о технических деталях генерации контента. Я создал слой бизнес-контента поверх Laravel AI SDK, который решает все эти проблемы и позволяет мне повторно использовать структуру и логику на разных проектах. Этот слой обеспечивает анти-галуцинацию, контроль тона и языка, а также журналирование, чтобы я мог отслеживать, что было сгенерировано и когда.