Разбор первого запроса
Построчный разбор одного вызова Messages — назначение каждого поля и содержимое ответа.
Краткое руководство позволяет получить ответ. Эта страница объясняет значение каждой части запроса, чтобы следующий запрос вы могли написать самостоятельно.
Запрос
curl https://aiprimetech.io/v1/messages \
-H "x-api-key: $CLAUDEAPIKEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
| Поле | Обязательно | Что делает |
|---|---|---|
model | да | Какую модель запускать. Значение должно совпадать с идентификатором из /v1/models в точности. |
max_tokens | да | Жёсткий верхний предел для вывода. Модель останавливается на этом пределе, даже посреди предложения. Это средство контроля затрат, а не целевое значение. |
messages | да | Вся история разговора, начиная с самых ранних сообщений. Каждая запись содержит role (user или assistant) и content. |
system | нет | Инструкции, действующие на протяжении всего разговора. Поле верхнего уровня, а не сообщение с role: system. |
temperature | нет | 0–1. Чем ниже значение, тем более детерминирован результат. Не задавайте его без необходимости. |
stream | нет | true возвращает события, отправляемые сервером, вместо одного тела JSON. См. Потоковая передача. |
Ответ
{
"id": "msg_01ABC...",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [{"type": "text", "text": "Hello! How can I help?"}],
"stop_reason": "end_turn",
"usage": {"input_tokens": 9, "output_tokens": 12}
}
content— это массив, а не строка. Текст находится вcontent[0].text. Обработка этого значения как строки — самая распространённая ошибка в клиенте.stop_reasonпоказывает, почему завершилась генерация:end_turn(завершена),max_tokens(достигнут заданный вами предел — ответ обрезан),stop_sequenceилиtool_use.usage— это то, на основании чего вам выставляют счёт. Записывайте это значение в журнал: это единственная надёжная основа для распределения затрат.
Если
stop_reason здесь является max_tokens, ваш ответ был обрезан. Увеличьте max_tokens или попросите более короткий ответ — не повторяйте запрос вслепую: за обрезанный вывод вы тоже платите.Многоходовые разговоры
API не сохраняет состояние. Чтобы продолжить разговор, нужно повторно отправить всю историю, включая предыдущие ответы модели:
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "What is the capital of France?"},
{"role": "assistant", "content": "Paris."},
{"role": "user", "content": "And its population?"}
]
}
Поскольку история отправляется заново на каждом шаге, количество входных токенов растёт по мере разговора, а вместе с ним растёт и счёт. Поэтому длительные сеансы работы с агентами обходятся дорого. Кэширование промптов и управление контекстом оба напрямую решают эту проблему.