Основное API

Чатовые ответы

Главный метод AllTokens: POST /api/v1/chat/completions.

POST /api/v1/chat/completions — главный метод AllTokens для работы с LLM в совместимом с OpenAI формате.

Когда использовать

  • чат-интерфейсы
  • сценарии помощника в коде и чате
  • вызов инструментов
  • потоковые ответы
  • маршрутизация через alltokens/auto и alltokens/free

Request

curl -X POST "https://api.alltokens.ru/api/v1/chat/completions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "alltokens/auto",
    "messages": [
      {"role": "system", "content": "Отвечай кратко."},
      {"role": "user", "content": "Объясни, что такое векторная база данных"}
    ],
    "temperature": 0.2,
    "stream": false,
    "metadata": {
      "objective": "balanced"
    }
  }'

Главные поля запроса

ПолеТипЧто делает
modelstringКонкретная модель или routing-модель alltokens/auto / alltokens/free
messagesarrayИстория диалога
streambooleanВключает потоковый ответ через серверные события
temperaturenumberУправляет вариативностью ответа
max_tokensintegerОграничивает размер ответа
metadataobjectЦели маршрутизации и ограничения
extra_bodyobjectАльтернативное место для параметров маршрутизации

Поддерживаемые параметры маршрутизации

ПолеТип
objectivecheapest | fastest | reliable | balanced
allowed_modelsstring[]
blocked_modelsstring[]
provider_policyobject

Response

{
  "id": "gen-...",
  "object": "chat.completion",
  "model": "openai/gpt-4.1-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Vector database хранит embeddings и умеет искать похожие записи."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 13,
    "total_tokens": 37,
    "cost": 0.72
  }
}

Что важно в ответе

ПолеЗачем нужно
idИспользуйте для generation и route/explain
choices[0].message.contentОсновной текст ответа
usage.costСведения о стоимости запроса
modelФактическая модель, если ответ был не потоковым

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

Передайте "stream": true, если хотите получать поток через серверные события.

После потокового ответа удобнее разбирать фактический маршрут через /api/route/explain, а не пытаться собирать всю отладочную информацию из частей потока.

Коды ответов

КодПричина
400Невалидный JSON или отсутствуют обязательные поля
401Проблема с ключом
402Недостаточно баланса
404Не найдена модель или не осталось подходящих кандидатов под ограничения
429Превышена допустимая частота запросов

Частые вопросы

В большинстве случаев достаточно model и messages. Всё остальное, включая stream, temperature и metadata, лучше добавлять уже после того, как базовый запрос стабильно заработал.

Если ваш клиент позволяет, используйте обычное поле metadata как основной и более понятный вариант. extra_body полезен как обходной путь для SDK или обвязок, которые не дают пробросить произвольные поля напрямую.

chat/completions работает с массивом messages и лучше подходит для современных чатовых и агентных сценариев. completions уместнее там, где у вас уже есть старый формат с одиночным prompt.

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

Связанные страницы