Heli + Laravel (PHP): openai-php/laravel и OPENAI_BASE_URL

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(): пользователь видит ответ по мере генерации, а длинный ответ не упирается в таймаут клиента.

code
# .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 — слишком частые запросы; ограничьте параллельность воркеров очереди.

Документация API

Оплата — пополнение баланса.

Храните ключ только в .env

Попробуйте Heli

Ключ sk-heli- появляется после подтверждения почты. Через Google и Яндекс — сразу в кабинете.

Документация API · Модели и цены

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