Интеграции

AI-модели в Python через AI Gateway — официальный SDK OpenAI

openai

AI Gateway полностью совместим с официальным Python-SDK OpenAI: меняются только base_url и ключ, весь остальной код — как в документации OpenAI. Один клиент даёт доступ ко всем моделям каталога — Claude, GPT, Gemini, DeepSeek — сменой параметра model.

Установка

pip install openai

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

from openai import OpenAI

client = OpenAI(
    base_url="https://ai-gatewey.ru/v1",
    api_key="sk-aigate-ваш_ключ",
)

resp = client.chat.completions.create(
    model="deepseek/deepseek-chat",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(resp.choices[0].message.content)
Ключ храните в переменной окружения (OPENAI_API_KEY подхватывается SDK автоматически), а не в коде — тогда api_key можно не передавать вовсе.

Стриминг

Ответ частями через Server-Sent Events — параметр stream=True, как в оригинальном API:

stream = client.chat.completions.create(
    model="deepseek/deepseek-chat",
    messages=[{"role": "user", "content": "Расскажи о токенах"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

Function calling

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

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Погода в городе",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "Какая погода в Москве?"}],
    tools=tools,
)
print(resp.choices[0].message.tool_calls)

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

  • 401 — неверный или отозванный ключ: проверьте значение и что ключ активен в кабинете.
  • 403 — модель сверх тарифа при пустом балансе: пополните баланс или выберите модель тарифа.
  • 429 — исчерпана квота или RPM-лимит ключа: дождитесь окна, поднимите лимит или тариф.
  • 5xx — сбой апстрима: шлюз сам ретраит и переключает провайдера, но свой retry с экспоненциальной паузой в проде не помешает.
from openai import APIStatusError, RateLimitError

try:
    resp = client.chat.completions.create(
        model="deepseek/deepseek-chat",
        messages=[{"role": "user", "content": "Привет!"}],
    )
except RateLimitError:
    ...  # квота/RPM: подождать и повторить
except APIStatusError as e:
    print(e.status_code, e.message)

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

МодельВвод, ₽/1МВывод, ₽/1МКонтекст
DeepSeek: DeepSeek V331125128K
Anthropic: Claude Sonnet 53141 5681M
OpenAI: GPT-5.4 Mini118705400K
Актуальные цены каталога AI Gateway за 1 млн токенов. Все модели →

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

Работают ли LangChain и LlamaIndex?

Да — оба используют этот же SDK под капотом. Готовые инструкции: LangChain и LlamaIndex.

Есть ли асинхронный клиент?

Да, AsyncOpenAI с теми же параметрами base_url и api_key — весь код идентичен, но с await.

Как получить список моделей программно?

client.models.list() вернёт модели, доступные вашему ключу, с актуальными кодами.

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

Получить ключ