Anthropic Messages
Le format de messagerie natif d'Anthropic pour les modèles Claude. Vous pouvez également appeler les modèles Claude via le point de terminaison Chat Completions au format OpenAI.
RequestREQUEST
POST
https://test.kailin.com.cn/v1/messagesResponseRESPONSE
Fill in the request and hit Send — the response shows up here
Requête
curl https://test.kailin.com.cn/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: sk-your-token" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Hello, introduce yourself" }
]
}'
Remarque
Les en-têtes x-api-key: sk-xxx et Authorization: Bearer sk-xxx fonctionnent tous les deux. L'en-tête anthropic-version est optionnel.
Corps de la requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
model | string | Oui | Nom du modèle Claude |
max_tokens | number | Oui | Nombre maximal de tokens à générer (obligatoire dans le format Anthropic) |
messages | array | Oui | Tableau de messages ; role n'accepte que user / assistant |
system | string / array | Non | Prompt système, transmis séparément des messages |
stream | boolean | Non | Sortie en streaming (SSE, types d'événements ci-dessous) |
temperature | number | Non | 0–1, défaut 1 |
top_p / top_k | number | Non | Paramètres d'échantillonnage |
stop_sequences | array | Non | Séquences d'arrêt |
tools | array | Non | Définitions d'outils (name / description / input_schema) |
tool_choice | object | Non | {"type": "auto"} / {"type": "any"} / {"type": "tool", "name": "..."} |
Exemple avec un prompt système et une image :
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "You are a rigorous technical writer.",
"messages": [
{
"role": "user",
"content": [
{ "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": "<base64>" } },
{ "type": "text", "text": "Describe this architecture diagram" }
]
}
]
}
Réponse (sans streaming)
{
"id": "msg_abc123",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{ "type": "text", "text": "Hello! I'm Claude…" }
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 18,
"output_tokens": 45
}
}
| Champ | Description |
|---|---|
content[] | Blocs de contenu — type peut être text / tool_use / thinking |
stop_reason | end_turn / max_tokens / stop_sequence / tool_use |
usage.input_tokens / output_tokens | Consommation de tokens |
Événements de streaming
Avec "stream": true, la réponse est du SSE avec des types event: distincts :
event: message_start
data: {"type":"message_start","message":{...}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":45}}
event: message_stop
data: {"type":"message_stop"}
| Événement | Description |
|---|---|
message_start | Début du message, avec la consommation initiale |
content_block_start / _delta / _stop | Début / delta / fin d'un bloc de contenu — les deltas arrivent dans delta.text |
message_delta | Mise à jour de statut de premier niveau (stop_reason, consommation finale) |
message_stop | Fin du message |
ping | Battement de maintien de connexion (keep-alive) |
error | Erreur dans le flux |
Utilisation du SDK Anthropic
from anthropic import Anthropic
client = Anthropic(
api_key="sk-your-token",
base_url="https://test.kailin.com.cn",
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: 'sk-your-token',
baseURL: 'https://test.kailin.com.cn',
});
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello' }],
});
console.log(message.content[0].text);
Astuce
Avec le SDK, définissez base_url sur l'adresse racine (sans /v1) — le SDK ajoute /v1/messages automatiquement.