OpenAI SDK с ИИ-прокси Gitsell: настройка без переписывания кода

Миграция существующего приложения на ИИ-прокси Gitsell: base_url, ключ, модели, streaming, embeddings и проверка совместимости.

Article

Если приложение уже использует официальный OpenAI SDK, переход на ИИ-прокси Gitsell не требует переписывать слой сообщений. Основные изменения — адрес API, ключ и выбор модели. Остальной код можно оставить совместимым с привычным клиентом.

Минимальная настройка

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GITSELL_API_KEY"],
    base_url="https://gitsell.ru/api/v1",
    timeout=60,
    max_retries=1,
)

После этого client.chat.completions.create(...) обращается к Gitsell. Доступные модели лучше получать программно:

models = client.models.list()
for item in models.data:
    print(item.id)

Не переносите идентификаторы моделей из старого проекта вслепую. Провайдер и имя могут отличаться, а часть возможностей доступна только отдельным моделям.

Что проверить в существующем коде

Streaming. Потоковые ответы поддерживаются не для каждой модели. Клиент должен корректно обработать обычный ответ или понятную ошибку.

Embeddings. Endpoint совместим по формату, но работает только с поддерживаемыми embedding-моделями. Не используйте auto там, где нужен конкретный размер вектора.

Изображения. Генерация идёт через /images/generations; возможности и стоимость отличаются от чата.

Usage. В публичном ответе usage.total_tokens показывает списанные Gitsell Tokens. Не смешивайте это число с сырыми токенами провайдера в старой аналитике.

Плавная миграция

Вынесите base_url, ключ и модель в конфигурацию. Создайте два клиента — старый и Gitsell — и прогоните одинаковый набор тестов: короткий ответ, длинный контекст, streaming, ошибка лимита и недоступная модель. Сравните структуру ответа и поведение повторов.

Переключайте трафик постепенно. Для фоновых задач достаточно небольшого процента, а для чата дополнительно измеряйте время до первого чанка.

Один адаптер вокруг SDK позволит менять провайдера без изменений бизнес-кода. В нём должны находиться выбор модели, таймауты, нормализация ошибок и метрики — но не пользовательская логика.

Статьи по теме