К содержимому
Интеграции · обновлено 29.09.2026

AI-модели в PHP через AI Gateway

SDK openai-php/client

пакет
openai-php/client
базовый адрес
https://ai-gatewey.ru/v1
ключ
sk-aigate-…

AI Gateway совместим с популярным SDK openai-php/client: весь код — как в его документации, задаются только базовый URI и ключ. Один клиент даёт доступ ко всем моделям каталога — Claude, GPT, Gemini, DeepSeek — сменой параметра model.

Установка

bashbash
composer require openai-php/client

Первый запрос

chat.phpphp
<?php​require 'vendor/autoload.php';​$client = OpenAI::factory()->withBaseUri('ai-gatewey.ru/v1')->withApiKey('sk-aigate-ваш_ключ')->make();​$response = $client->chat()->create(['model' => 'deepseek/deepseek-v4-flash','messages' => [['role' => 'user', 'content' => 'Привет!'],],]);​echo $response->choices[0]->message->content;
на заметку
Ключ храните в переменной окружения (getenv('AIGATE_API_KEY')) или в .env, а не в коде. В withBaseUri указывается хост с путём без схемы — ai-gatewey.ru/v1.

Стриминг

Ответ частями через Server-Sent Events — метод createStreamed возвращает итератор, который перебирают циклом foreach:

stream.phpphp
$stream = $client->chat()->createStreamed(['model' => 'deepseek/deepseek-v4-flash','messages' => [['role' => 'user', 'content' => 'Расскажи о токенах'],],]);​foreach ($stream as $response) {echo $response->choices[0]->delta->content ?? '';}

Function calling

Вызов инструментов работает прозрачно — выбирайте модель с поддержкой function calling (бейдж «инструменты» в каталоге). Инструменты передаются в поле tools, а модель возвращает toolCalls:

tools.phpphp
$response = $client->chat()->create(['model' => 'anthropic/claude-sonnet-5.5','messages' => [['role' => 'user', 'content' => 'Какая погода в Москве?'],],'tools' => [['type' => 'function','function' => ['name' => 'get_weather','description' => 'Погода в городе','parameters' => ['type' => 'object','properties' => ['city' => ['type' => 'string']],'required' => ['city'],],],]],]);​var_dump($response->choices[0]->message->toolCalls);

Обработка ошибок

  • 401 — неверный или отозванный ключ: проверьте значение и что ключ активен в кабинете.
  • 402 — нужна оплата: пуст баланс, исчерпана месячная квота, модель не входит в тариф, либо сработал лимит самого ключа (список моделей, потолок расхода, срок действия). Пополните баланс, смените тариф либо проверьте настройки ключа.
  • 429 — превышен лимит запросов в минуту: снизьте темп и повторите с экспоненциальной паузой.
  • 5xx — сбой апстрима: шлюз сам повторяет запрос, резервные провайдеры модели подставляет апстрим, но свой retry с экспоненциальной паузой в проде не помешает.
errors.phpphp
use OpenAI\Exceptions\ErrorException;​try {$response = $client->chat()->create(['model' => 'deepseek/deepseek-v4-flash','messages' => [['role' => 'user', 'content' => 'Привет!'],],]);} catch (ErrorException $e) {// 429 → превышен RPM: подождать и повторитьecho $e->getErrorType() . ': ' . $e->getMessage();}

Какую модель выбрать

Актуальные цены каталога AI Gateway за 1 млн токенов. Все модели →

Частые вопросы

Есть ли пакет для Laravel?

Да — openai-php/laravel оборачивает тот же клиент фасадом OpenAI и конфигом. Базовый URI и ключ задаются в config/openai.php (base_uri и api_key), после чего фасад ходит в AI Gateway.

Какой HTTP-клиент нужен?

Пакет использует PSR-18: подойдёт Guzzle или любой совместимый клиент. Обычно достаточно composer require guzzlehttp/guzzle, если он ещё не установлен.

Можно ли переключать модели без нового клиента?

Да — клиент создаётся один раз, а модель задаётся в каждом запросе ключом model, поэтому один клиент работает со всеми моделями каталога.

AI Gateway

PHP-приложение с AI — за пять минут