Artfical AI / API
Obtenir une clé API Ouvrir tAI
Prise en main

Complétions de chat

POST /v1/chat/completions est l'unique point d'accès qui fait tout : questions à un seul tour, conversations à plusieurs tours, appel d'outils et entrée d'image, en mode bloquant ou en streaming.

Requête

POST https://api.artfical.com/v1/chat/completions
Authorization: Bearer tai-sk-...
Content-Type: application/json
ChampTypeRequisDescription
modelstringOuiL'un des identifiants de modèle listés sur la page Modèles, par ex. "tai-4.1". Une valeur non reconnue est rejetée avec un 400 avant même que la génération ne commence.
messagesarrayOuiLa conversation jusqu'à présent, du plus ancien au plus récent. Voir Messages ci-dessous pour la structure de chaque entrée.
streambooleanNonVaut false par défaut. Lorsque true, la réponse est un flux d'événements envoyés par le serveur (SSE) plutôt qu'un unique corps JSON ; voir Streaming.
toolsarrayNonDéfinitions d'outils de type fonction, au format OpenAI, que le modèle peut choisir d'appeler. Voir Appel d'outils.
temperature, top_p, presence_penalty, frequency_penalty, seed, stopdiversNonContrôles d'échantillonnage, transmis tels quels. Voir Paramètres d'échantillonnage pour les plages acceptées.

Messages

Chaque entrée de messages possède un role et un content. Quatre rôles sont reconnus :

RôleSignification
systemInstructions de fond pour la conversation. Si plusieurs messages system sont présents, ils sont fusionnés dans l'ordre. Un message system ne remplace jamais l'identité fondamentale ni les règles de comportement propres à tAI ; il s'ajoute au contexte de la conversation, sans toucher à ce que tAI est fondamentalement.
userCe que dit la personne (ou votre application, en son nom).
assistantUne réponse précédente du modèle. Incluez les messages assistant antérieurs lors de l'envoi de l'historique de conversation, afin que le modèle dispose de l'intégralité des échanges, pas seulement du dernier message utilisateur. Un message assistant peut aussi porter des tool_calls ; voir Appel d'outils.
toolLe résultat d'un appel d'outil exécuté par votre propre code, rattaché à l'appel via tool_call_id. Voir Appel d'outils.

Pour un tour en texte simple, content est simplement une chaîne de caractères :

{"role": "user", "content": "İstanbul'da bugün hava nasıl olur sence?"}

Pour inclure une image accompagnée de texte, content devient un tableau de parties typées plutôt qu'une simple chaîne ; voir Images pour la structure exacte et les modèles qui l'acceptent.

Réponse (mode non-streaming)

Avec "stream": false (valeur par défaut), la réponse est un unique objet JSON, renvoyé une fois la génération terminée :

{
  "id": "chatcmpl-817c002145ac47feb83a0006c58ff43b",
  "object": "chat.completion",
  "created": 1788961617,
  "model": "tai-4.1",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Merhaba! Ben tAI, size nasıl yardımcı olabilirim?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1303,
    "completion_tokens": 232,
    "total_tokens": 1535
  }
}
ChampDescription
idUn identifiant unique pour cette complétion, préfixé par chatcmpl-.
choicesToujours exactement une entrée (index 0). tAI ne prend pas en charge la demande de plusieurs complétions candidates pour une seule requête.
choices[].finish_reason"stop" pour une réponse normale et complète, ou "tool_calls" lorsque le modèle demande à appeler un ou plusieurs outils plutôt que de répondre directement. Voir Appel d'outils.
usageNombre de tokens pour cette requête. completion_tokens reflète ce que le modèle a réellement généré, indépendamment de tout plafond de type max_tokens.

Une conversation complète

Incluez l'historique complet dans chaque requête ; l'API est sans état et ne conserve aucune mémoire des appels précédents par elle-même. Chaque requête est autonome, avec exactement le contexte que vous lui envoyez.

{
  "model": "tai-4.1",
  "messages": [
    {"role": "system", "content": "Kısa ve net cevaplar ver."},
    {"role": "user", "content": "3 çarpı 4 kaç eder?"},
    {"role": "assistant", "content": "12."},
    {"role": "user", "content": "Peki onu 2'ye böl."}
  ]
}

Longueur de la réponse

Il n'existe actuellement aucun plafond réglable côté client sur le nombre de tokens que peut contenir une réponse ; chaque modèle possède son propre plafond interne, ajusté pour ce modèle. Si vous avez besoin qu'une requête échoue rapidement plutôt que de s'éterniser, le levier le plus fiable reste les séquences stop (voir Paramètres d'échantillonnage) ou simplement demander de la concision dans le prompt lui-même.