---
title: "Interface de conversation Chat Completions"
description: "Requête minimale, champs courants, lecture de la réponse et rédaction de conversations multi-tours pour POST /v1/chat/completions."
headingIds: {"Requête minimale":"section-1","Champs courants":"section-2","Comment lire la réponse":"section-3","Conversations multi-tours":"section-4","Flux et suites":"section-5"}
---

<aside className="docs-publication" data-pagefind-ignore>

Documentation maintenue par [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Sources et corrections](https://1zheai.com/en/editorial/).

Vous avez trouvé une erreur ? [Contactez l'assistance](mailto:support@1zheai.com) en indiquant l'adresse de la page et une description. N'envoyez pas de clés API ni d'identifiants de compte.

</aside>
Si vous utilisez un client compatible OpenAI, ou si vous disposez déjà de code `chat.completions.create`, commencez par cette interface. L'adresse complète est `https://1zheai.com/v1/chat/completions` ; pour le SDK, la Base URL ne doit contenir que jusqu'à `/v1`.

## Requête minimale

Définissez d'abord `ONEZHE_API_KEY` dans le terminal avec la clé de ce site. Le modèle ci-dessous doit exister dans [votre liste de modèles disponibles](/fr/docs/api-models/).

```bash
curl --fail-with-body --connect-timeout 10 --max-time 120 \
  https://1zheai.com/v1/chat/completions \
  -H "Authorization: Bearer $ONEZHE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "messages": [{"role": "user", "content": "请用一句中文解释 DNS 的作用。"}]
  }'
```

`--fail-with-body` fait retourner un code de sortie non nul en cas d'erreur HTTP tout en conservant le corps de l'erreur ; nécessite curl 7.76 ou une version plus récente. Sur une version antérieure, utilisez d'abord `-i` pour afficher le code de statut.

## Champs courants

| Champ | Type | Mode d'emploi |
| --- | --- | --- |
| `model` | string | Obligatoire, copiez l'ID du modèle de ce site, sans ajouter de préfixe de fournisseur d'une autre plateforme |
| `messages` | array | Obligatoire, envoyez dans l'ordre la question de ce tour et les messages d'historique à conserver |
| `messages[].role` | string | Pour une conversation normale, utilisez `user` / `assistant` ; la prise en charge du rôle d'instruction système dépend du modèle |
| `messages[].content` | string ou tableau de blocs de contenu | Pour du texte pur, utilisez d'abord une chaîne ; l'entrée d'image nécessite que le modèle prenne en charge le bloc de contenu correspondant |
| `stream` | boolean | Lorsqu'il est défini sur `true`, lisez le SSE au lieu de traiter l'intégralité de la réponse comme un unique JSON |
| `temperature` | number | Facultatif, certains modèles de raisonnement ne permettent pas de le modifier ; omettez-le d'abord puis vérifiez item par item |
| `tools` / `tool_choice` | array / string ou object | Facultatif, doit être pris en charge à la fois par le modèle et l'amont ; l'exécution réelle des outils est effectuée par votre programme |

Les paramètres de limite de sortie varient selon le modèle. Ne remplacez pas mécaniquement les paramètres de Claude `max_tokens`, ceux de Responses `max_output_tokens` et ceux de Chat Completions ; référez-vous aux exigences du modèle choisi, et en cas de 400, consultez d'abord le corps de l'erreur.

## Comment lire la réponse

Le résultat en texte se trouve dans `choices[0].message.content`. La raison de fin se trouve dans `choices[0].finish_reason` ; lorsqu'un appel d'outil est renvoyé, le texte peut être vide et vous devrez lire `message.tool_calls`. Les `id`, `model` et `usage` de la réponse peuvent servir à vérifier cet appel.

Ci-dessous, seules les structures à examiner sont affichées ; les champs et chiffres omis ne représentent pas le résultat d'une vraie requête :

```json
{
  "id": "example-completion",
  "object": "chat.completion",
  "model": "gpt-5.6-sol",
  "choices": [{
    "index": 0,
    "message": {"role": "assistant", "content": "DNS 将域名解析为网络地址。"},
    "finish_reason": "stop"
  }]
}
```

## Conversations multi-tours

L'interface ne se souvient pas automatiquement du tour précédent parce que vous réutilisez la même clé. Envoyez ensemble l'historique à conserver :

```json
{
  "model": "gpt-5.6-sol",
  "messages": [
    {"role": "user", "content": "我正在学习 DNS。"},
    {"role": "assistant", "content": "我们可以从域名解析开始。"},
    {"role": "user", "content": "它和 HTTP 有什么区别？"}
  ]
}
```

Plus l'historique est long, plus la requête est volumineuse. L'application doit tronquer ou résumer selon la limite de contexte, et conserver les paires complètes d'appels d'outils et de résultats.

## Flux et suites

Avec `"stream": true` ajouté, les incrémentes de texte proviennent de `choices[].delta.content`. Certains événements n'ont pas de texte ou `choices` est vide ; à la lecture, il faut en tenir compte ; voir [sortie en flux](/fr/docs/streaming/).

Exécutez directement [l'exemple complet Python / Node.js](/fr/docs/code-examples/), ou passez à [Responses](/fr/docs/api-responses/) ; pour les paramètres natifs de Claude, voir [Messages](/fr/docs/api-messages/).
