Миграция с OpenAI на open-source модели за 5 минут
Живые данные: 2 пользователей · 0 оплаченных заказов
Перенос продакшена с OpenAI на open-source модели звучит как проект на месяц, а занимает пять минут. Причина проста: DeepSeek, Qwen, GLM и Kimi доступны через тот же протокол, что и OpenAI API. SDK остаётся прежним — меняются только `base_url` и ключ. Чат, стриминг, tool calls и эмбеддинги работают без переписывания логики. Ниже — пошаговый план: от установки SDK до чек-листа приёмочных тестов.
Что вы получаете
- **Экономию**: `glm-5.3-flash` стоит $0.15 / $0.55 за миллион токенов — это примерно 13 ₽ и 48 ₽ по курсу 88 ₽/$
- **Независимость от вендора**: все модели совместимы с одним клиентом, замена — одна строка
- **Качество русского**: glm-модели позиционируются как сильные в RU-задачах
Что понадобится
- Python 3.10+ и пакет `openai` (если он уже стоит — ничего устанавливать не нужно)
- Ключ API и base_url из личного кабинета
- 5 минут на правку конфигурации
Шаг 1. Установите SDK
Если OpenAI SDK ещё не установлен, выполните `pip install openai`. Обновлять версию не требуется — протокол совместим со свежими релизами. Уже работаете с OpenAI? Пропускайте шаг: существующий код менять не придётся.
Шаг 2. Получите ключ и base_url
В личном кабинете создайте API-ключ и скопируйте base_url — он указан рядом с ключом. Не храните значения в коде: вынесите их в переменные окружения `AI_API_KEY` и `AI_BASE_URL`. Один ключ работает со всеми моделями из списка ниже — отдельные ключи под каждую модель не нужны.
Шаг 3. Поменяйте две строки
Весь код клиента остаётся прежним. Меняются ровно два параметра:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ['AI_API_KEY'],
base_url=os.environ['AI_BASE_URL'], # единственное реальное изменение
)
resp = client.chat.completions.create(
model='glm-5.3-flash', # open-source reasoning-модель
messages=[
{'role': 'system', 'content': 'Ты краткий технический ассистент.'},
{'role': 'user', 'content': 'Сравни MoE и dense-архитектуры в трёх предложениях.'},
],
temperature=0.3,
)
print(resp.choices[0].message.content)
# Эмбеддинги для RAG — тот же клиент:
emb = client.embeddings.create(
model='bge-m3',
input=['Как мигрировать с OpenAI за пять минут?'],
)
print(len(emb.data[0].embedding))
Стриминг включается тем же `stream=True`, что и раньше. Формат ответа идентичен: `choices[0].message.content`.
Шаг 4. Подберите модель под задачу
Цены — за 1 млн токенов (вход/выход), кроме картинок и видео.
- Дешёвый чат, замена GPT-4o-mini → `glm-5.3-flash` — $0.15 / $0.55, reasoning, сильный русский
- Быстрые рассуждения → `deepseek-v4-flash` — $0.6 / $2.4
- Универсальный флагман → `qwen3.5-122b` — $0.6 / $2.4 (MoE Alibaba) или `glm-5.2` — $1.3 / $5.2
- Глубокий reasoning → `glm-5.3` — $1.8 / $7 или `qwen3.8-27b` — $0.5 / $2.5
- Код и агенты → `kimi-k2.7-code` — $1.4 / $6
- Длинные документы и сложные агенты → `kimi-k3` — $5 / $25
- Зрение, фото → текст → `qwen3-vl-32b` — $0.25 / $1 или `glm-4.5v` — $0.3 / $1.5
- Эмбеддинги для RAG → `bge-m3` — $0.01, ru/en/zh плюс ещё 100 языков
- Картинки → `kolors` — $0.005/шт или `qwen-image` — $0.08/шт
- Видео → `wan22-t2v` / `wan22-i2v` — $0.4/сек, ролик обходится в $0.40
Стратегия проста: начните с самой дешёвой модели, которая проходит ваши тесты качества, и поднимайтесь по лестнице только там, где она реально не справляется. Для большинства чат-сценариев достаточно flash-моделей; флагманы оставьте для сложных агентов и длинного контекста.
Шаг 5. Прогоните тесты
- Стриминг: `stream=True` возвращает чанки в том же формате
- Tool calls: прогоните боевые сценарии — поддержка функций зависит от конкретной модели
- `temperature`, `max_tokens`, `top_p` переносятся как есть
- Логи: сохраняйте имя модели и число токенов из ответа, чтобы сравнивать стоимость сценариев до и после миграции
- Ретраи: неудачные задачи не тарифицируются, повторные запросы не увеличивают счёт
Частые ошибки
1. **Зашитые имена моделей.** Вынесите `model` в конфиг или ENV — A/B-тесты и откат будут работать без деплоя. 2. **Старый векторный индекс.** Размерность векторов у `bge-m3` отличается от openai-эмбеддингов: пересоздайте индекс, а не переиспользуйте его. 3. **Промпты «под ChatGPT».** Инструкции вроде «отвечай как ChatGPT» мешают open-source моделям — уберите их. 4. **Картинки в текстовой модели.** Для изображений берите `qwen3-vl-32b` или `glm-4.5v`, иначе получите отказ или галлюцинации. 5. **Смешанные окружения.** Держите фабрику клиентов: словарь base_url по окружениям, чтобы прод и стейдж могли жить на разных моделях.
Итог
Миграция сводится к трём значениям: base_url, ключ, имя модели. Начните с `glm-5.3-flash` в чате и `bge-m3` в RAG — это самые дешёвые точки входа. Флагманы вроде `glm-5.3` и `kimi-k3` подключаются той же строкой кода, а если модель не потянет задачу, замена — снова правка одной строки конфига.
Актуальные цены
| Модель | Описание | Цена |
|---|---|---|
kolors | 1024×1024 · Kuaishou Kolors | $0.005 $/шт ≈0.4₽ |
qwen-image | Qwen-Image · высокое качество | $0.08 $/шт ≈7.0₽ |
qwen-image-2512 | 1024×1024 · Qwen-Image 2512 · новое поколение | $0.08 $/шт ≈7.0₽ |
deepseek-v4-flash | быстрые рассуждения DeepSeek | $0.6 / $2.4 $/1M ток |
deepseek-v4-pro | мощные рассуждения DeepSeek | $2.6 / $7 $/1M ток |
glm-4.5-air | быстрая и дешёвая · RU | $0.25 / $1.2 $/1M ток |
glm-4.5v | зрение GLM · RU | $0.3 / $1.5 $/1M ток |
glm-5.2 | Zhipu · баланс цена/качество | $1.3 / $5.2 $/1M ток |
glm-5.3 | флагман Zhipu · reasoning | $1.8 / $7 $/1M ток |
glm-5.3-flash | флагманская flash-модель · reasoning · RU | $0.15 / $0.55 $/1M ток |
kimi-k2.7-code | код и агенты Moonshot | $1.4 / $6 $/1M ток |
qwen3-vl-32b | зрение: фото → текст | $0.25 / $1 $/1M ток |
qwen3.5-122b | флагманский MoE Alibaba | $0.6 / $2.4 $/1M ток |
qwen3.6-35b | универсальный чат Alibaba | $0.5 / $2.2 $/1M ток |
qwen3.8-27b | новейшая модель Alibaba · reasoning | $0.5 / $2.5 $/1M ток |
kimi-k3 | флагман Moonshot · агенты и длинный текст | $5 / $25 $/1M ток |
bge-m3 | эмбеддинги для RAG · ru/en/zh + 100 языков | $0.01 $/1M ток |
wan22-t2v | 480p · Wan 2.2 текст→видео · $0.40 за ролик | $0.4 $/сек ≈35.2₽ |
wan22-i2v | 480p · Wan 2.2 фото→видео · $0.40 за ролик | $0.4 $/сек ≈35.2₽ |
Курс: 1$ ≈ 88₽. Неудачные задачи не тарифицируются.