Caicaini
Начать

Возможности

Размышление

Расширенное размышление даёт модели приватный черновик перед ответом. Она расписывает рассуждения, ты решаешь, показывать ли их пользователю, а итоговый ответ оказывается заметно лучше на сложных задачах.

Когда использовать размышление

  • Многошаговая математика, логические задачи, задачи планирования.
  • Код, требующий держать в голове множество ограничений: архитектурные изменения, отладка, оптимизация.
  • Длинные агентские циклы, где каждый неверный вызов инструмента порождает новые ошибки.
  • Любое место, где ты сейчас вручную выстраиваешь подсказку «сначала подумай, потом ответь».

Включение размышления

Добавь в запрос поле thinking. budget_tokens — верхняя граница приватных токенов рассуждения; выбери значение меньше max_tokens, чтобы у модели остался запас на видимый ответ.

curl https://caicaini.com/v1/messages \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "caicaini/opus",
    "max_tokens": 4096,
    "thinking": { "type": "enabled", "budget_tokens": 2048 },
    "messages": [
      {"role":"user","content":"A jug has 12L. Two pours: 5L jug and 7L jug. Show me how to measure exactly 6L."}
    ]
  }'

Форма ответа

Ответ — это обычный Messages-ответ, у которого в начале массива content идут один или несколько блоков thinking, а за ними публичные блоки text.

ответ · 200 OK
{
  "id": "msg_01H...",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "thinking",
      "thinking": "Let me work this out step by step. I have 5L and 7L jugs, want exactly 6L. Fill the 7L jug, pour into 5L jug until full — leaves 2L. Empty 5L. Pour the 2L into the 5L. Fill the 7L again, pour into 5L until full (3L moves) — 4L left. Hmm not quite. Let me reconsider..."
    },
    {
      "type": "text",
      "text": "Here is one path: 1) Fill the 7L. 2) Pour into the 5L until full — 2L remains in the 7L. 3) Empty the 5L. 4) Move the 2L into the 5L. 5) Fill the 7L again. 6) Pour from the 7L into the 5L until full — that uses 3L, leaving 4L in the 7L. 7) Empty the 5L. 8) Move the 4L to the 5L. 9) Fill the 7L again. 10) Pour into the 5L until full — uses 1L, leaves exactly 6L in the 7L."
    }
  ],
  "model": "caicaini/opus",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 47,
    "output_tokens": 1830,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "credits_consumed": 612
  }
}

Сколько это стоит

  • Токены размышления тарифицируются как выходные по той же ставке, что и остальной вывод модели. Они учитываются в output_tokens в usage.
  • usage.credits_consumed — авторитетное значение и уже включает стоимость размышления.
  • Задавай budget_tokens консервативно. 1024–2048 хватает на большинство задач; повышай только когда видишь, что модель обрывается на середине рассуждения.

Стоит ли показывать размышление пользователям

Обычно нет. Рассуждение — это приватный черновик: иногда там есть гипотезы, тупиковые пути, самокоррекция, которые запутают неподготовленного пользователя. По умолчанию выводи только финальные блоки text. Если нужен переключатель «показать рассуждение», подпиши его явно и рендери thinking как сворачиваемую секцию.

Размышление + стриминг

Когда стримишь запрос с включённым размышлением, SSE-поток сначала шлёт content_block_start с типом thinking, затем фреймы content_block_delta, у которых delta.type равен thinking_delta, потом content_block_stop, и только после этого начинается первый текстовый блок. Полный словарь событий — на странице Стриминг.

Размышление вместе с инструментами

Tool use и thinking сочетаются. Модель размышляет, решает, какой инструмент позвать, отдаёт блок tool_use, ты возвращаешь результат, и в следующем повороте она снова может думать. Это самая качественная конфигурация для агентских циклов на сложных задачах. Полный цикл — на странице Инструменты.