Быстрый старт
ЦАРЬ РОУТЕР - агрегатор российских и open-source нейросетей с единым OpenAI-совместимым API. Один ключ, один формат: меняете base_url - и весь код на OpenAI SDK работает без изменений. Не нужно регистрироваться в Yandex Cloud, Cloud.ru, GigaChat или MWS - ЦАРЬ РОУТЕР берёт это на себя.
Информация
- При ответе
429(превышен лимит) подождите столько секунд, сколько указано в заголовкеRetry-After, и повторите запрос - пример в разделе 5. Если429мешает постоянно или возникают другие ошибки, напишите нам на support@tsarrouter.ru. - Действуют лимиты запросов по уровням - подробнее на странице Лимиты.
- На странице Истории изменений можно узнать какие модели добавились/изменились/удалились и другие изменения сервиса.
Спасибо, желаем удачного использования!
1. Базовый URL
https://api.tsarrouter.ru/v1Это адрес, который вы подставляете вместо base_url OpenAI. Все эндпоинты совместимы с форматом OpenAI.
2. Ключ
Зарегистрируйтесь в личном кабинете и создайте API-ключ.
Формат: sk-tsar- + 40 hex-символов. Ключ типа «Вызов моделей» открывает доступ ко всем моделям всех провайдеров. Второй тип, «Просмотр баланса», только показывает баланс аккаунта - см. «Ключи и доступ».
Передавайте ключ в заголовке Authorization:
Authorization: Bearer sk-tsar-ваш-ключ3. Первый запрос
from openai import OpenAI
client = OpenAI(
base_url="https://api.tsarrouter.ru/v1",
api_key="sk-tsar-ваш-ключ",
)
response = client.chat.completions.create(
model="yandex/yandexgpt-pro-5.1",
messages=[{"role": "user", "content": "Привет!"}],
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.tsarrouter.ru/v1",
apiKey: "sk-tsar-ваш-ключ",
});
const response = await client.chat.completions.create({
model: "sber/gigachat-2-max",
messages: [{ role: "user", content: "Привет!" }],
});
console.log(response.choices[0].message.content);curl https://api.tsarrouter.ru/v1/chat/completions \
-H "Authorization: Bearer sk-tsar-ваш-ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "yandex/yandexgpt-pro-5.1",
"messages": [{"role": "user", "content": "Привет!"}]
}'4. Названия моделей
Все модели используют формат provider/model:
yandex/yandexgpt-pro-5.1, sber/gigachat-2-max, BAAI/bge-m3.
Регистр имеет значение.
sber/gigachat-2-max≠Sber/gigachat-2-max.
Актуальный каталог моделей с ценами - на странице "Модели". Список моделей с ценами (pricing_rub, см. справочник) можно получить и запросом:
from openai import OpenAI
client = OpenAI(
base_url="https://api.tsarrouter.ru/v1",
api_key="sk-tsar-ваш-ключ",
)
models = client.models.list()
for model in models.data:
print(model.id)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.tsarrouter.ru/v1",
apiKey: "sk-tsar-ваш-ключ",
});
const models = await client.models.list();
for (const model of models.data) {
console.log(model.id);
}curl https://api.tsarrouter.ru/v1/models \
-H "Authorization: Bearer sk-tsar-ваш-ключ"5. Если пришёл 429
Ответ 429 значит, что превышен лимит запросов (см. «Лимиты»).
В заголовке Retry-After - сколько секунд подождать перед повтором:
import os
import time
import requests
def create_with_retry(payload, attempts=5):
for _ in range(attempts):
r = requests.post(
"https://api.tsarrouter.ru/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['TSARROUTER_KEY']}"},
json=payload,
)
if r.status_code != 429:
r.raise_for_status()
return r.json()
time.sleep(int(r.headers.get("Retry-After", "5")))
r.raise_for_status()async function createWithRetry(payload: object, attempts = 5) {
for (let i = 1; ; i++) {
const r = await fetch("https://api.tsarrouter.ru/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TSARROUTER_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(payload),
});
if (r.status !== 429 || i === attempts) {
if (!r.ok) throw new Error(`HTTP ${r.status}: ${await r.text()}`);
return r.json();
}
const wait = Number(r.headers.get("Retry-After") ?? 5);
await new Promise((resolve) => setTimeout(resolve, wait * 1000));
}
}Официальные SDK OpenAI повторяют 429 сами: по умолчанию 2 раза, с учётом
Retry-After. Число попыток задаётся параметром клиента - max_retries в Python,
maxRetries в TypeScript.
Если 429 приходит постоянно, напишите на
support@tsarrouter.ru.