Миграция совместимого с OpenAI клиента
Замените базовый URL и ключ API в существующей совместимой с OpenAI интеграции.
Обновлено
Запустите полный пример с SDK
Официальный OpenAI SDK можно сохранить для методов, которые входят в совместимый API provod.ai. Понадобятся Node.js, npm, curl и jq. Начните с одного обычного, не потокового запроса Chat Completions: он возвращает единый JSON-ответ, а не части по мере готовности.
Установите SDK
npm install openaiЗадайте ключ и выберите актуальную модель
Запросите текстовые модели, которые принимают используемый в примере параметр max_tokens. Проверки ниже требуют available == true и исключают записи для графических адресов API.
set -euo pipefail
export PROVOD_API_KEY="sk_..."
if ! MODELS_JSON="$(
curl --fail-with-body --silent --show-error "https://api.provod.ai/v1/models?output_modalities=text&supported_parameters=max_tokens" \
-H "Authorization: Bearer $PROVOD_API_KEY"
)"; then
printf '%s\n' "$MODELS_JSON" >&2
exit 1
fi
if ! PROVOD_MODEL="$(
jq -er '
first(
.data[]
| select(
.available == true
and ((.architecture.output_modalities // []) | index("text"))
and ((.supported_parameters // []) | index("max_tokens"))
and ((.supported_endpoint_types // []) | all(. != "image-generation" and . != "image-edit"))
)
| .id
)
' <<<"$MODELS_JSON"
)"; then
printf 'No available text model with max_tokens found in /v1/models.\n' >&2
exit 1
fi
export PROVOD_MODEL
printf '%s\n' "$PROVOD_MODEL"Создайте клиент и запрос
Сохраните код в файле migrate.mjs:
import OpenAI from "openai";
const apiKey = process.env.PROVOD_API_KEY;
const model = process.env.PROVOD_MODEL;
if (!apiKey || !model) {
throw new Error("Set PROVOD_API_KEY and PROVOD_MODEL");
}
const client = new OpenAI({
apiKey,
baseURL: "https://api.provod.ai/v1"
});
const completion = await client.chat.completions.create({
model,
messages: [{ role: "user", content: "Reply with ok" }],
max_tokens: 64
});
console.log(completion.choices[0]?.message?.content);Запустите и прочитайте результат
node migrate.mjsПри успехе программа выводит текст из choices[0].message.content, например:
okСохраните SDK и направьте поддерживаемые методы в provod.ai.
Перенесите новые настройки на provod.ai
Уже настроенные клиенты с адресом api.promptra.ru могут использовать его как адрес совместимости на время миграции. Во всех новых и обновляемых конфигурациях указывайте https://api.provod.ai/v1. Адрес совместимости помогает при переходе, но это не бессрочная гарантия его доступности.
Учитывайте границы совместимости
Замена baseURL не добавляет все адреса OpenAI. Пример работает, потому что client.chat.completions.create() соответствует опубликованному контракту POST /v1/chat/completions. provod.ai также публикует список моделей и документированные адреса изображений, но сейчас не предоставляет POST /v1/responses, API векторных представлений и адреса транскрибации или перевода аудио.
Перед миграцией выясните, какой метод вызывает SDK или инструмент. Если ему нужен неопубликованный адрес API и его нельзя переключить на Chat Completions или Messages, одной замены URL недостаточно.
Оставьте получение каталога в настройке
Обновляйте данные через GET /v1/models, а не считайте идентификатор модели из примера постоянным. Добавляйте необязательные поля запроса с учётом текущей доступности модели и её supported_parameters.
Публичный код ошибки — это значение для клиента в ошибке API, обычно error.code. Для диагностики миграции сохраните его вместе с HTTP-статусом, не используя внутренние данные транспорта.