глава 03
Claude по API (Anthropic)
У Anthropic своя точка входа - Messages API. Идея та же, что у OpenAI, но отличаются адрес, заголовки и форма тела.
Из чего состоит запрос
- URL:
https://api.anthropic.com/v1/messages - Заголовок ключа:
x-api-key: <ваш ключ>(неAuthorization, как у OpenAI) - Версия API:
anthropic-version: 2023-06-01- обязательный заголовок - Тело: модель (
claude-...),max_tokens, отдельное полеsystemи массивmessages
Главное отличие от OpenAI: системная инструкция - это не элемент массива с ролью system, а отдельное поле system верхнего уровня. В messages остаются только роли user и assistant. Ещё одно отличие: поле max_tokens обязательное - это потолок длины ответа.
Запрос через curl
curl https://api.anthropic.com/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"system": "Ты помощник. Отвечай кратко.",
"messages": [
{"role": "user", "content": "Столица Франции?"}
]
}'
В ответ придёт JSON. Текст лежит в массиве content - в блоке типа text:
{
"content": [
{ "type": "text", "text": "Париж." }
],
"usage": {
"input_tokens": 18,
"output_tokens": 3
}
}
Обратите внимание: content - это массив блоков, а не строка. Текст ответа берут из первого блока с type равным text.
Запрос через Python (SDK anthropic)
Официальный SDK - пакет anthropic. Версию API и сборку запроса он берёт на себя.
import os
import anthropic
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="Ты помощник. Отвечай кратко.",
messages=[
{"role": "user", "content": "Столица Франции?"},
],
)
print(message.content[0].text)
Ключ читается из окружения. Если переменная ANTHROPIC_API_KEY задана, SDK подхватит её сам - можно вызывать anthropic.Anthropic() без аргументов. Тот же SDK есть для JavaScript - пакет @anthropic-ai/sdk.
Сколько это стоит
Как и у OpenAI, оплата по токенам: считаются вход (input_tokens) и выход (output_tokens), поле usage показывает расход. Подробнее - в главе про токены.