API Anthropic compatible

Puyun AI est compatible avec le protocole Anthropic Messages API. Vous pouvez utiliser directement le SDK Anthropic ou tout client compatible Claude pour vous connecter.

URL de base

text
https://ai.tracup.com

Authentification

Tous les points de terminaison nécessitent une authentification :

  • Bearer Token : Authorization: Bearer <your-api-key>
  • En-tête x-api-key : x-api-key: <your-api-key>

Messages

Point de terminaison Messages compatible Anthropic Claude. Prend en charge les modèles Claude ainsi que d'autres modèles via la conversion de protocole.

bash
curl https://ai.tracup.com/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Expliquez l'informatique quantique"}
    ]
  }'

Paramètres de la requête :

ParamètreTypeRequisDescription
modelstringOuiID du modèle (ex. claude-sonnet-4-6)
messagesarrayOuiTableau d'objets de message
max_tokensintegerOuiNombre maximal de Token générés
streambooleanNonActiver les réponses en streaming
temperaturenumberNonTempérature d'échantillonnage (0-1)
top_pnumberNonProbabilité de nucleus sampling
top_kintegerNonÉchantillonnage Top-K
stop_sequencesarrayNonSéquences d'arrêt
systemstring/arrayNonPrompt système
toolsarrayNonDéfinitions d'outils
tool_choiceobjectNonStratégie d'appel d'outil

Exemple de réponse :

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "L'informatique quantique est une discipline qui exploite les principes de la mécanique quantique..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

Réponses en streaming

Lorsque "stream": true est défini, la réponse utilise le format SSE avec des types d'événements conformes au protocole Anthropic natif :

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"L'informatique"}}

event: message_stop
data: {"type":"message_stop"}

Conversion automatique de protocole

Lorsque vous appelez un modèle non-Claude via le point de terminaison Anthropic, Puyun AI effectue automatiquement la conversion de protocole :

  • Conversion de requête : transformation du format Anthropic Messages vers le format natif du modèle cible (ex. OpenAI Chat Completions)
  • Conversion de réponse : transformation de la réponse du modèle cible au format Anthropic Messages
  • Adaptation du streaming : les types d'événements en streaming sont automatiquement adaptés au format SSE d'Anthropic

Vous pouvez ainsi appeler des modèles OpenAI, Gemini et d'autres via ce point de terminaison depuis des clients natifs Anthropic comme Claude Code, sans aucune adaptation nécessaire.

Utiliser le SDK Anthropic

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://ai.tracup.com"
)

# Appeler un modèle Claude
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Bonjour"}]
)

# Appeler un modèle OpenAI — conversion automatique de protocole
message = client.messages.create(
    model="gpt-4o",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Bonjour"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://ai.tracup.com",
});

// Appeler un modèle Claude
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Bonjour" }],
});

Entrée multimodale

Prise en charge de l'entrée d'images (Vision) :

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "Décrivez cette image"
                }
            ]
        }
    ]
)

Réponses d'erreur

Les réponses d'erreur suivent le format d'erreur Anthropic :

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
Code HTTPSignification
400Paramètres de requête invalides
401Échec d'authentification — clé API invalide
403Permissions insuffisantes
404Modèle introuvable
429Limite de débit ou solde insuffisant
500Erreur interne du serveur
529Service en amont surchargé