Как подключить OfoxAI через OpenAI SDK: Python и TypeScript

Настройка OfoxAI в OpenAI SDK: base URL, ключ и ID модели. Примеры Python и TypeScript, потоковые ответы и проверки перед переносом приложения.

Как подключить OfoxAI через OpenAI SDK: Python и TypeScript

Чтобы подключить OfoxAI через OpenAI SDK, задайте адрес https://api.ofox.run/v1, передайте ключ OfoxAI и выберите точный ID модели из каталога. SDK можно сохранить, но используемые приложением эндпоинты и параметры нужно проверить. Примеры ниже работают с Chat Completions; совместимость других API проверяется отдельно.

Что меняется при переходе с OpenAI или OpenRouter?

Проверьте три значения: адрес шлюза, ключ и ID модели. После смены URL ключ OpenAI или OpenRouter не становится ключом OfoxAI.

НастройкаНапрямую через OpenAIOpenRouterOfoxAI
Base URLПо умолчанию в SDKhttps://openrouter.ai/api/v1https://api.ofox.run/v1
Ключ APIКлюч OpenAIКлюч OpenRouterКлюч OfoxAI
modelID модели OpenAIID из каталога OpenRouterID из каталога OfoxAI

Адреса и названия параметров приведены в документации OfoxAI и OpenRouter quickstart. При переносе с OpenRouter отдельно проверьте параметры маршрутизации и псевдонимы моделей: одинаковый формат ID не гарантирует одинакового поведения.

Как настроить Python SDK?

Передайте base_url и api_key при создании клиента, а ID модели — в параметре model. Установите официальный пакет командой python -m pip install openai в виртуальном окружении проекта. Требования к версии Python приведены в инструкции SDK.

Задайте OFOX_API_KEY через переменную окружения или хранилище секретов. Необязательная переменная OFOX_MODEL выбирает модель; по умолчанию пример использует openai/gpt-4o, присутствовавшую в публичном каталоге при проверке 9 сентября 2026 года. Не сохраняйте ключи в репозитории. Сам по себе файл .env не загружает значения в окружение Python — нужен соответствующий загрузчик.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.ofox.run/v1",
    api_key=os.environ["OFOX_API_KEY"],
)
model_id = os.environ.get("OFOX_MODEL", "openai/gpt-4o")

response = client.chat.completions.create(
    model=model_id,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(response.choices[0].message.content)

При запуске с ключом пополненного аккаунта этот код отправляет платный запрос на генерацию. Сначала проверьте цену модели и права аккаунта. Успешное получение списка моделей не подтверждает доступ к генерации или корректность списаний.

Как настроить TypeScript SDK?

В TypeScript параметры называются baseURL и apiKey. Установите официальный пакет openai и запускайте пример в серверном TypeScript-проекте с учётом требований SDK. Ключ должен оставаться на сервере.

import OpenAI from 'openai';

const apiKey = process.env.OFOX_API_KEY;
if (!apiKey) throw new Error('Set OFOX_API_KEY before running this example.');

const client = new OpenAI({
  baseURL: 'https://api.ofox.run/v1',
  apiKey,
});

async function main() {
  const response = await client.chat.completions.create({
    model: process.env.OFOX_MODEL ?? 'openai/gpt-4o',
    messages: [{ role: 'user', content: 'Say hello in one sentence.' }],
  });
  console.log(response.choices[0]?.message.content);
}

main().catch((error) => {
  console.error(error.message);
  process.exitCode = 1;
});

Где взять правильный ID модели?

Скопируйте полный ID из публичного списка или каталога моделей. Приведённые ниже записи присутствовали в публичном списке 9 сентября 2026 года и не были помечены как устаревшие. Доступность со временем может измениться.

Нужная модельID в OfoxAI
GPT-4oopenai/gpt-4o
GPT-4o miniopenai/gpt-4o-mini
GPT-5.2openai/gpt-5.2
Claude Sonnet 4.6anthropic/claude-sonnet-4.6

GPT-5.2 и GPT-5.4 mini — разные модели. Замена gpt-5.2 на openai/gpt-5.4-mini меняет модель, а не просто добавляет префикс провайдера. Для Claude, Gemini, DeepSeek и других семейств проверяйте каталог: нельзя угадывать ID или добавлять openai/ ко всем названиям.

Общий клиент не означает одинакового набора возможностей у моделей. Проверяйте supported_endpoints для нужного эндпоинта OpenAI, supported_parameters для параметров и модальности ввода и вывода. Сами по себе эти поля не подтверждают поддержку другого нативного протокола.

Как проверить потоковые ответы и вызов инструментов?

Потоковый режим проверяйте отдельно от обычного ответа. Для клиента Python и переменной model_id из примера выше обработка текстовых фрагментов должна допускать блоки без choices или текста:

stream = client.chat.completions.create(
    model=model_id,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
    stream=True,
)
try:
    for chunk in stream:
        if chunk.choices:
            text = chunk.choices[0].delta.content
            if text:
                print(text, end="", flush=True)
finally:
    stream.close()

Для вызова инструментов проверьте весь цикл: передайте описание инструмента, проверьте аргументы в ответе модели, выполните инструмент в приложении и отправьте результат обратно. Возвращённый моделью вызов инструмента сам по себе не выполняет функцию. Структурированный вывод проверяйте по схеме приложения; совместимость SDK не гарантирует корректность данных.

Что проверить в LangChain, LlamaIndex и Vercel AI SDK?

Выберите адаптер с поддержкой сторонних OpenAI-совместимых эндпоинтов и явно укажите нужный тип API. Фреймворк может добавлять собственную проверку ID, значения по умолчанию и особенности провайдера. ChatOpenAI в LangChain ориентирован на стандартные поля ответа OpenAI; не рассчитывайте, что он сохранит дополнительные поля рассуждений шлюза.

ФреймворкЧто проверить
LangChainНастройте адрес, ключ и точный ID в ChatOpenAI; проверьте эндпоинты для включённых функций. См. документацию ChatOpenAI.
LlamaIndexДля сторонних совместимых API рассмотрите OpenAILike, включая api_base, модель и настройки возможностей.
Vercel AI SDKЗадайте baseURL и apiKey у OpenAI provider; для Chat Completions явно выберите .chat(modelId). См. справочник провайдера.

Успешный вызов Chat Completions не подтверждает совместимость Responses, эмбеддингов или генерации изображений. Проверяйте каждый используемый эндпоинт с установленной в проекте версией фреймворка.

Что проверить до переноса рабочего трафика?

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

  1. Проверьте ключ, права аккаунта, баланс и точный ID модели.
  2. Проверьте генерацию текста и обработку ошибок приложения.
  3. При необходимости проверьте потоковые ответы, отмену запросов, инструменты и структурированный вывод.
  4. Сверьте размер запросов, лимиты токенов, тайм-ауты и настройки повторных попыток.
  5. Сопоставьте возвращённые данные об использовании с расходами аккаунта, включая повторные запросы.
  6. Перенесите небольшую долю трафика, оцените ошибки и задержки и только затем увеличивайте нагрузку.

Для первого подключения используйте краткое руководство OfoxAI. Стоимость и возможности для команд разобраны в сравнении OfoxAI и OpenRouter. Выбор шлюза и безопасный перенос приложения требуют отдельных проверок.

Часто задаваемые вопросы

Какой base URL нужен для OfoxAI в OpenAI SDK?
Используйте https://api.ofox.run/v1 и ключ OfoxAI. В Python параметр называется base_url, в TypeScript — baseURL. Точный ID модели возьмите из текущего каталога OfoxAI.
Нужно ли менять ID модели при миграции?
Проверьте точный ID. Например, gpt-5.2 соответствует openai/gpt-5.2, а не openai/gpt-5.4-mini. Переход на другую модель — отдельное решение, а не добавление префикса.
Можно ли вызвать Claude через OpenAI SDK?
Если выбранная модель Claude поддерживает эндпоинт OpenAI Chat Completions, укажите её ID из каталога OfoxAI в том же клиенте. Перед использованием инструментов и структурированного вывода проверьте поддерживаемые параметры.
Достаточно ли сменить base URL для безопасного переноса приложения?
Нет. В тестовой среде проверьте авторизацию, ID моделей, параметры, потоковые ответы, обработку ошибок и оплату. До переноса рабочего трафика подготовьте конфигурацию для отката.
Руководство охватывает все эндпоинты OpenAI?
Нет. Примеры используют Chat Completions. Responses, эмбеддинги, изображения и другие API нужно проверять отдельно с учётом модели и версии SDK.