Интеграция ИИ в Laravel

Большинство туториалов по ИИ предполагают, что вы используете Python.

После 12 лет разработки PHP-приложений я недавно добавил функции ИИ в рабочий Laravel-дашборд. Я использовал его для преобразования сырых данных в понятные человеку отчеты.

Сложность заключалась не в коде. Сложность была в поиске качественного контента по этой теме на PHP.

Вот как создать чистую, готовую к продакшену интеграцию ИИ в Laravel.

Архитектура

Не разбрасывайте вызовы API по контроллерам. Вместо этого используйте паттерн «драйвер» (driver pattern). Это позволит вам переключаться между Claude и OpenAI, изменив всего одну строку в вашем .env файле.

1. Определите контракт

Создайте AiClientInterface. Это гарантирует, что и Claude, и OpenAI будут следовать одним и тем же правилам.

2. Создайте драйверы

Создайте ClaudeClient и OpenAiClient. Используйте HTTP-клиент Laravel для обработки запросов. Это упростит работу с таймаутами и повторными попытками (retries).

3. Используйте Service Container

Привяжите ваш интерфейс к конкретному клиенту в AppServiceProvider. Используйте оператор match, чтобы выбирать провайдера на основе вашей конфигурации.

Различия

Чтобы избежать ошибок, вы должны знать эти пять нюансов:

• Claude использует x-api-key в заголовке. OpenAI использует Authorization: Bearer. • Claude требует заголовок anthropic-version. • Claude требует max_tokens. В OpenAI этот параметр необязателен. • Claude использует поле system на верхнем уровне. OpenAI использует сообщение с role: system. • Пути в JSON-ответах различаются. Claude использует content[0].text. OpenAI использует choices[0].message.content.

Советы для продакшена

Используйте кэширование: вызовы ИИ работают медленно и стоят денег. Если данные не изменились, отдавайте результат из кэша. Это может снизить расходы на 70%. • Используйте очереди: никогда не заставляйте пользователя ждать ответа API 10 секунд. Отправьте фоновую задачу (background job) и уведомьте пользователя, когда результат будет готов. • Обрабатывайте ошибки: API могут давать сбои. Оборачивайте вызовы в блоки try-catch. Если ИИ не ответил, покажите сырые данные вместо сломанной страницы. • Устанавливайте лимиты: всегда устанавливайте max_tokens, чтобы контролировать расходы. Используйте более компактные и дешевые модели для простых задач, таких как суммаризация.

Вам не нужно учить Python, чтобы создавать функции с ИИ. Ваши навыки PHP здесь работают идеально.

Источник: https://dev.to/sunakshi_thakur_84a5f59fd/integrating-claudeopenai-api-into-a-laravel-app-a-practical-guide-1hig