Konductor

Быстрый старт

Эта страница есть и в виде Markdown для ИИ-ассистентов — quickstart.md.

Возьми ключ, укажи адрес и отправь первый запрос. Konductor принимает запросы в формате OpenAI Chat Completions (/v1/chat/completions) и в формате Anthropic Messages (/v1/messages).

Ключ

Нужен ключ компании: строка, которая начинается с sk-kz-. Положи её в переменную окружения и не храни в коде:

export KONDUCTOR_KEY="<ключ>"

В каждом запросе ключ идёт в заголовке Authorization: Bearer $KONDUCTOR_KEY. Для /v1/messages и /v1/key подойдёт и заголовок x-api-key. Не отправляй два разных ключа в двух заголовках сразу: Konductor ответит 401.

Адрес

Адрес Konductor — https://llm.kodzavod.ru. Пути запросов:

ПутьЧто делает
/v1/chat/completionsОтвет модели в формате OpenAI
/v1/messagesОтвет модели в формате Anthropic
/v1/keyСтатус ключа, его лимит и остаток

Если SDK просит base_url, смотри, дописывает ли он /v1 сам. OpenAI SDK не дописывает, поэтому ему нужен адрес https://llm.kodzavod.ru/v1. Anthropic SDK и Claude Code дописывают /v1/messages сами, им нужен адрес без /v1.

Модель

Идентификатор модели возьми из каталога на странице Цены и положи в переменную:

export KONDUCTOR_MODEL="<идентификатор модели>"

Первый запрос

curl:

curl https://llm.kodzavod.ru/v1/chat/completions \
  -H "Authorization: Bearer $KONDUCTOR_KEY" \
  -H "Content-Type: application/json" \
  -d @- <<EOF
{
  "model": "$KONDUCTOR_MODEL",
  "messages": [{"role": "user", "content": "Привет!"}],
  "max_tokens": 256
}
EOF

В ответе текст модели лежит в choices[0].message.content, а в usage.cost_rub — сколько рублей списано с баланса за этот запрос.

Node.js 18 и новее, без зависимостей:

const response = await fetch('https://llm.kodzavod.ru/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KONDUCTOR_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: process.env.KONDUCTOR_MODEL,
    messages: [{ role: 'user', content: 'Привет!' }],
    max_tokens: 256,
  }),
});

if (!response.ok) {
  throw new Error(`${response.status} ${await response.text()}`);
}

const completion = await response.json();
console.log(completion.choices[0].message.content);

Python и OpenAI SDK — на странице OpenAI SDK через Konductor. Claude Code — на странице Claude Code через Konductor.

Проверь ключ

Запрос к /v1/key ничего не списывает и не расходует лимит запросов в минуту. Он возвращает статус ключа, его лимит и остаток:

curl https://llm.kodzavod.ru/v1/key \
  -H "Authorization: Bearer $KONDUCTOR_KEY"

Если запрос не прошёл

Коды 402, 403 и 429 разобраны на странице Ошибки 402, 403 и 429. Полный список путей, полей и ответов — в справочнике API.