API сообщений не хранит состояние, что означает, что вы всегда отправляете полную историю разговора в API. Вы можете использовать этот шаблон для построения разговора с течением времени. Ранние реплики разговора не обязательно должны фактически исходить от Claude — вы можете использовать синтетические сообщения assistant.
Shell
#!/bin/shcurl https://api.anthropic.com/v1/messages \--header"x-api-key: $ANTHROPIC_API_KEY"\--header"anthropic-version: 2023-06-01"\--header"content-type: application/json"\--data\'{"model":"claude-opus-4-20250514","max_tokens":1024,"messages":[{"role":"user", "content":"Hello, Claude"},{"role":"assistant", "content":"Hello!"},{"role":"user", "content":"Can you describe LLMs to me?"}]}'
Python
import anthropicmessage = anthropic.Anthropic().messages.create( model="claude-opus-4-20250514", max_tokens=1024, messages=[{"role":"user","content":"Hello, Claude"},{"role":"assistant","content":"Hello!"},{"role":"user","content":"Can you describe LLMs to me?"}],)print(message)
TypeScript
import Anthropic from'@anthropic-ai/sdk';const anthropic =newAnthropic();await anthropic.messages.create({ model:'claude-opus-4-20250514', max_tokens:1024, messages:[{"role":"user","content":"Hello, Claude"},{"role":"assistant","content":"Hello!"},{"role":"user","content":"Can you describe LLMs to me?"}]});
JSON
{"id":"msg_018gCsTGsXkYJVqYPxTgDHBU","type":"message","role":"assistant","content":[{"type":"text","text":"Sure, I'd be happy to provide..."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":30,"output_tokens":309}}
Вы можете предварительно заполнить часть ответа Claude в последней позиции списка входящих сообщений. Это можно использовать для формирования ответа Claude. В примере ниже используется "max_tokens": 1, чтобы получить от Claude единственный ответ с множественным выбором.
#!/bin/shcurl https://api.anthropic.com/v1/messages \--header"x-api-key: $ANTHROPIC_API_KEY"\--header"anthropic-version: 2023-06-01"\--header"content-type: application/json"\--data\'{"model":"claude-opus-4-20250514","max_tokens":1,"messages":[{"role":"user", "content":"What is latin for Ant? (A) Apoidea, (B) Rhopalocera, (C) Formicidae"},{"role":"assistant", "content":"The answer is ("}]}'
Claude может читать как текст, так и изображения в запросах. Мы поддерживаем типы источников base64 и url для изображений, а также типы медиа image/jpeg, image/png, image/gif и image/webp. Подробнее см. в нашем руководстве по зрению.
#!/bin/sh# Option 1: Base64-encoded imageIMAGE_URL="https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"IMAGE_MEDIA_TYPE="image/jpeg"IMAGE_BASE64=$(curl"$IMAGE_URL"| base64)curl https://api.anthropic.com/v1/messages \--header"x-api-key: $ANTHROPIC_API_KEY"\--header"anthropic-version: 2023-06-01"\--header"content-type: application/json"\--data\'{"model":"claude-opus-4-20250514","max_tokens":1024,"messages":[{"role":"user", "content":[{"type":"image", "source":{"type":"base64","media_type":"'$IMAGE_MEDIA_TYPE'","data":"'$IMAGE_BASE64'"}},{"type":"text", "text":"What is in the above image?"}]}]}'# Option 2: URL-referenced imagecurl https://api.anthropic.com/v1/messages \--header"x-api-key: $ANTHROPIC_API_KEY"\--header"anthropic-version: 2023-06-01"\--header"content-type: application/json"\--data\'{"model":"claude-opus-4-20250514","max_tokens":1024,"messages":[{"role":"user", "content":[{"type":"image", "source":{"type":"url","url":"https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"}},{"type":"text", "text":"What is in the above image?"}]}]}'
JSON
{"id":"msg_01EcyWo6m4hyW8KHs2y2pei5","type":"message","role":"assistant","content":[{"type":"text","text":"This image shows an ant, specifically a close-up view of an ant. The ant is shown in detail, with its distinct head, antennae, and legs clearly visible. The image is focused on capturing the intricate details and features of the ant, likely taken with a macro lens to get an extreme close-up perspective."}],"model":"claude-opus-4-20250514","stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1551,"output_tokens":71}}