глава 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 показывает расход. Подробнее - в главе про токены.