Caicaini
Начать

Справочник

HTTP-клиенты

API Caicaini — это обычный HTTP и JSON. Никакого проприетарного клиента ставить не надо. Бери любую HTTP-библиотеку, которой доверяешь, или напиши маленькую обёртку по шаблонам ниже.

Почему нет first-party SDK

Поверхность HTTP небольшая (шесть эндпойнтов), а формы запросов и ответов — индустриальные конвенции Messages API и chat-completions. Завернуть это в вендорный SDK — добавить зависимость и собственный API, не сэкономив много работы. Тонкого фирменного клиента мы выпустим, когда он реально окупится.

А пока: любая сторонняя библиотека, нацеленная на одну из реализуемых Caicaini конвенций, заработает, если умеет переопределять base URL.

Переменные окружения

Ключ и base URL читай из переменных окружения, а не из литералов.

shell
# Set once, reuse everywhere.
export CAICAINI_API_KEY="cai_api_..."
export CAICAINI_BASE="https://caicaini.com/v1"

curl "$CAICAINI_BASE/messages" \
  -H "Authorization: Bearer $CAICAINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"caicaini/auto","max_tokens":256,"messages":[{"role":"user","content":"Hello!"}]}'

Тонкий клиент на каждый язык

Ниже примерно по 30 строк кода на язык: конструктор, вспомогательная функция без стрима и итератор стрима. Скопируй, вставь, поправь. Никакой магии.

# Set once, reuse everywhere.
export CAICAINI_API_KEY="cai_api_..."
export CAICAINI_BASE="https://caicaini.com/v1"

curl "$CAICAINI_BASE/messages" \
  -H "Authorization: Bearer $CAICAINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"caicaini/auto","max_tokens":256,"messages":[{"role":"user","content":"Hello!"}]}'

Рекомендации

  • Используй встроенный fetch на Node 20+, в браузерах, Cloudflare Workers, Deno, Bun. Встроен, поддерживает стриминг, минимальный след.
  • В Python бери httpx. Поддерживает sync и async, есть стриминговые контекст-менеджеры, хорошо живёт с пулом соединений на высокой конкурентности.
  • Переиспользуй пул соединений. На холодных соединениях задержку доминирует TLS-handshake — держи один экземпляр клиента на процесс.
  • Ставь щедрые таймауты: 120 с для не-стримов, 300 с+ для длинных стримов. Модели нужно время, особенно с расширенным размышлением.
  • Логируй id ответа на каждом вызове. Это самый быстрый идентификатор, чтобы мы трассировали запрос при обращении в поддержку.

Браузеры

Не вызывай API из браузера с настоящим ключом пользователя. Каждый API-ключ аутентифицирует твой аккаунт. Ходи через сервер, который ты контролируешь: простой Next.js Route Handler, Cloudflare Worker, Express-эндпойнт — что угодно, что оставит ключ на сервере.