openai-php/laravel — популярная интеграция PHP-клиента OpenAI с Laravel: фасад OpenAI, конфигурация через .env и фейки для тестов. Клиенту можно задать свой базовый URL, поэтому он работает с любым OpenAI-совместимым API, в том числе с Heli. Код остаётся привычным, а модели Claude, GPT, Gemini и DeepSeek оплачиваются в рублях с одного баланса.
Установка и настройка
- Зарегистрируйтесь на getheli.ru (подтверждение почты или вход через Google / Яндекс ID) и создайте ключ на вкладке «Ключи» кабинета.
- Установите пакет: composer require openai-php/laravel. Нужен PHP 8.2 или новее.
- Выполните php artisan openai:install — команда создаст config/openai.php и добавит переменные в .env.
- В .env задайте OPENAI_API_KEY с ключом sk-heli-… и OPENAI_BASE_URL=https://getheli.ru/v1. OPENAI_ORGANIZATION оставьте пустым.
- Увеличьте OPENAI_REQUEST_TIMEOUT: по умолчанию клиент ждёт ответа 30 секунд, а длинным ответам этого мало.
- Если конфигурация закеширована, после правки .env выполните php artisan config:clear.
Пример: вызов из сервиса или контроллера
Длинные или массовые запросы выносите в очередь Laravel: job с ограничением параллельности и повтором после паузы надёжнее, чем вызов прямо в HTTP-запросе пользователя. В тестах используйте OpenAI::fake(), чтобы не тратить баланс.
Для чата с потоковым выводом используйте OpenAI::chat()->createStreamed() и отдавайте фрагменты через response()->stream(): пользователь видит ответ по мере генерации, а длинный ответ не упирается в таймаут клиента.
# .env
OPENAI_API_KEY=sk-heli-ВАШ_КЛЮЧ
OPENAI_BASE_URL=https://getheli.ru/v1
OPENAI_REQUEST_TIMEOUT=120
<?php
use OpenAI\Laravel\Facades\OpenAI;
use OpenAI\Exceptions\ErrorException;
try {
$response = OpenAI::chat()->create([
'model' => 'google/gemini-3.5-flash',
'messages' => [
['role' => 'system', 'content' => 'Отвечай кратко и по-русски.'],
['role' => 'user', 'content' => 'Составь описание товара: '.$title],
],
'max_tokens' => 500,
]);
$text = $response->choices[0]->message->content;
} catch (ErrorException $e) {
// 401 — ключ, 402 — баланс, 429 — лимит запросов
report($e);
$text = null;
}Какие модели выбрать
Для типичных задач веб-приложения — описаний товаров, ответов поддержки, классификации заявок — хватает быстрых моделей. Сильную модель оставьте для сложных текстов и генерации кода.
Gemini 3.5 Flash — описания, классификация, ответы поддержки.
GPT-5.4 mini — structured output и tool calling.
Claude Sonnet 5 — сложные тексты и код.
Частые ошибки
- 401 — в .env старый ключ или кеш конфигурации не сброшен; проверьте ключ на вкладке «Ключи» и выполните config:clear.
- 402 insufficient_balance — закончился баланс; пополните его в кабинете.
- Модель не найдена — передавайте полный слаг с префиксом вендора.
- Таймауты — поднимите OPENAI_REQUEST_TIMEOUT и уменьшите max_tokens или перенесите вызов в очередь.
- 429 — слишком частые запросы; ограничьте параллельность воркеров очереди.
Оплата — пополнение баланса.
Попробуйте Heli
Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.