Перейти к содержимому

Подключите Ablix к приложению.

Создайте ключ организации и отправьте текстовый запрос через API, совместимый с OpenAI Chat Completions.

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

  1. Войдите в консоль. При регистрации создаётся ваша организация. Вы можете изменить её название в настройках.
  2. В разделе API-ключей создайте ключ. Для этого нужна роль владельца или администратора. Ключ показывается один раз: сразу сохраните его в безопасном месте.
  3. Убедитесь, что на балансе создателя ключа достаточно кредитов. Запросы по ключу организации оплачиваются с личного баланса создателя ключа; общего кошелька организации пока нет.

Итоговая стоимость каждого запроса округляется вверх до $0,001. Например, расчётная стоимость $0,00015 приводит к списанию $0,001. Оценка в песочнице может отличаться от фактического списания в истории запросов.

Настройте окружение

Замените YOUR_ABLIX_HOST адресом сервера API вашей установки, YOUR_API_KEY — созданным ключом, а MODEL_ID_FROM_THE_CATALOGUE — ID из списка моделей ниже. Адрес здесь — шаблон, а не работающий публичный сервер.

Переменные окружения
export ABLIX_BASE_URL="https://YOUR_ABLIX_HOST/v1"
export ABLIX_API_KEY="YOUR_API_KEY"
export ABLIX_MODEL="MODEL_ID_FROM_THE_CATALOGUE"

Выполняйте примеры на сервере или локально в терминале. Не передавайте API-ключ в браузерное приложение. Для примера cURL также нужен jq.

Отправьте сообщение

JavaScript
// npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.ABLIX_API_KEY,
  baseURL: process.env.ABLIX_BASE_URL,
});

const reply = await client.chat.completions.create({
  model: process.env.ABLIX_MODEL,
  messages: [{ role: "user", content: "Explain an API in one sentence." }],
  max_tokens: 256,
});

console.log(reply.choices[0]?.message.content);

Текст ответа находится в choices[0].message.content. Поле usage содержит количество токенов.

Аутентификация

Оба API-метода требуют заголовок Authorization с Bearer-токеном. Cookie входа в консоль не заменяет API-ключ в этих запросах.

Заголовок запроса
Authorization: Bearer YOUR_API_KEY

Ключ привязан к организации, выбранной при создании. Храните его в переменной окружения или менеджере секретов. Если ключ раскрыт, отзовите его в консоли, создайте новый и обновите интеграцию.

Модели

Сначала получите доступные через API модели. Используйте значение id из ответа без изменений. Каталог API может быть меньше каталога чата: здесь возвращаются только модели, для которых включён API и настроена цена.

GET /v1/models
curl "$ABLIX_BASE_URL/models" \
  -H "Authorization: Bearer $ABLIX_API_KEY"

Ответ имеет форму { object: "list", data: [...] }. Пустой массив означает, что сейчас нет доступных моделей для API. Не подставляйте вместо публичного ID название модели из другого сервиса.

Поддерживаемые поля запроса

ПолеОписание
modelОбязательный публичный ID из GET /v1/models.
messagesОт 1 до 100 текстовых сообщений. Роли: system, user, assistant. content — непустая строка. Общий JSON сообщений — не более 256 000 символов.
max_tokensОт 1 до 4096 токенов. По умолчанию 4096; доступный баланс может уменьшить предел. Можно использовать max_completion_tokens вместо max_tokens, но не оба поля сразу.
temperatureНеобязательное число от 0 до 2. Без него используется настройка модели.
streamПо умолчанию false. Установите true для потокового ответа. Добавьте stream_options: { include_usage: true }, чтобы получить итоговые токены в отдельном событии.

Текущий API поддерживает текстовые Chat Completions. Изображения, аудио, инструменты, embeddings и другие API-методы не поддерживаются. Неизвестные поля отклоняются; совместимость с SDK не означает поддержку всех возможностей OpenAI.

Потоковые ответы

Добавьте stream: true, чтобы получать текст по частям. В примере используется клиент из раздела «Первый запрос». SDK читает события SSE за вас.

JavaScript · потоковый ответ
const stream = await client.chat.completions.create({
  model: process.env.ABLIX_MODEL,
  messages: [{ role: "user", content: "Write a short welcome message." }],
  max_tokens: 256,
  stream: true,
  stream_options: { include_usage: true },
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta.content ?? "");
}

При чтении SSE напрямую берите текст из choices[0].delta.content. События завершения не содержат текст; отдельное событие usage приходит только при include_usage: true. Поток заканчивается событием data: [DONE]. Обрыв соединения не считается завершённым ответом.

Ошибки

Проверяйте HTTP-статус и объект error перед чтением ответа. Не показывайте ключи и полные запросы в журналах ошибок.

  • 400 — неверный запрос: проверьте JSON, обязательные поля, предел токенов и ID модели. 413 — сократите размер запроса до 1 МиБ; 415 — укажите Content-Type: application/json.
  • 401 — ошибка доступа: проверьте ключ и его статус отзыва. Ключ также перестаёт работать, если его создатель удалён из организации, лишён роли администратора или заблокирован. Не повторяйте запрос с тем же недействительным ключом.
  • 402 — недостаточно кредитов: проверьте личный баланс создателя ключа, затем повторите запрос.
  • 409 — кредиты уже зарезервированы или требуют проверки: дождитесь завершения текущего ответа. Если состояние не меняется, обратитесь в поддержку.
  • 502 или 503 — сервис временно недоступен: повторяйте с увеличивающейся задержкой и ограничением числа попыток. Повтор после обрыва может стать новым оплачиваемым запросом.

Организации

При регистрации вы получаете организацию с собственными ID и названием. Настройки организации позволяют управлять командой; переключение организации меняет контекст её ключей и участников.

  • Владелец управляет организацией и передачей владения. Администраторы управляют участниками и ключами в пределах своих прав.
  • Чтобы пригласить человека, укажите его почту и роль. Поделитесь ссылкой приглашения с этим человеком; автоматическая отправка писем зависит от настройки сервиса.
  • Получатель входит с адресом, указанным в приглашении. Этот адрес должен быть подтверждён, прежде чем приглашение можно будет принять. Приглашения можно отменить; просроченная ссылка требует нового приглашения.
  • ID организации нужен для обращения в поддержку и работы с ней. Сам по себе он не предоставляет доступ. Личные чаты не становятся общими при приглашении участников.
Перейти к организации

Работа с данными

Чат сохраняет диалоги и версии на сервере. API и песочница учитывают метаданные запросов для статистики и кредитов, но не создают историю чата. Это различие не является обещанием нулевого хранения во всех системах обработки.

Подробнее об обработке данных