> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Demande et utilisation de l'API Kimi Chat Completion

> Kimi API guide - Ace Data Cloud

Kimi est une série de modèles d'IA lancée par la Face Sombre de la Lune. Le modèle recommandé actuellement, `kimi-k3`, est destiné à la programmation à long terme, aux agents, au raisonnement complexe et au travail de connaissance, et peut être appelé via l'API Chat Completions compatible avec OpenAI.

Ce document présente principalement le processus d'utilisation de l'API Kimi Chat Completion, qui nous permet d'utiliser facilement les fonctionnalités de conversation de Kimi.

## Processus de demande

Pour utiliser l'API Kimi Chat Completion, commencez par obtenir votre token API sur le [tableau de bord Ace Data Cloud](https://platform.acedata.cloud/console/applications) pour le garder en réserve.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

Si vous n'êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter, après quoi vous serez automatiquement renvoyé à la page actuelle.

**Un seul token API suffit pour appeler tous les services de la plateforme, sans avoir besoin de demander un pour chaque service.** La première demande vous donnera un quota gratuit pour une expérience sans frais ; en cas de quota insuffisant, vous pouvez recharger le solde général dans le [tableau de bord](https://platform.acedata.cloud/console/coin).

> 📘 Documentation complète : [Kimi Chat Completion API →](https://platform.acedata.cloud/documents/kimi-chat-completions)

## Utilisation de base

Vous pouvez ensuite remplir le contenu correspondant sur l'interface, comme indiqué sur l'image :

<p>
  <img src="https://cdn.acedata.cloud/ej5ozg.png" width="400" className="m-auto" />
</p>

Lors de la première utilisation de cette interface, vous devez remplir au moins trois éléments : `authorization` peut être sélectionné directement dans la liste déroulante ; `model` est utilisé pour choisir le modèle Kimi, il est recommandé d'utiliser `kimi-k3` ; `messages` est un tableau de messages de conversation, chaque message contenant `role` et `content`, où `role` prend en charge `user`, `assistant`, `system` et `tool`.

Vous pouvez également remarquer qu'il y a un code d'appel correspondant généré à droite, que vous pouvez copier et exécuter directement, ou cliquer sur le bouton « Essayer » pour effectuer un test.

<p>
  <img src="https://cdn.acedata.cloud/six7e3.png" width="400" className="m-auto" />
</p>

Voici une réponse réelle de K3 obtenue en utilisant `reasoning_effort: max` (les champs d'extension non utilisés sont omis) :

```json theme={null}
{
  "id": "msg_2D4Btbg1WgvkNE3tCYkR4xGA",
  "object": "chat.completion",
  "created": 1784466588,
  "model": "kimi-k3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Bonjour ! Comment puis-je vous aider aujourd'hui ?"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 86,
    "completion_tokens": 206,
    "total_tokens": 292
  }
}
```

Le résultat de retour contient plusieurs champs, décrits comme suit :

* `id`, l'ID généré pour cette tâche de conversation, utilisé pour identifier de manière unique cette tâche de conversation.
* `model`, le modèle Kimi sélectionné sur le site officiel.
* `choices`, les informations de réponse fournies par Kimi en fonction de la question.
* `usage` : les informations statistiques sur les tokens pour cette question-réponse.

Parmi ceux-ci, `choices` contient les informations de réponse de Kimi, et à l'intérieur de `choices` se trouvent les informations spécifiques de la réponse de Kimi, comme le montre l'image.

<p>
  <img src="https://cdn.acedata.cloud/tv9rul.png" width="400" className="m-auto" />
</p>

On peut voir que le champ `content` à l'intérieur de `choices` contient le contenu spécifique de la réponse de Kimi ; K3 peut également renvoyer `reasoning_content`, utilisé pour indiquer le processus de raisonnement.

## Intensité de raisonnement K3

`kimi-k3` active toujours le raisonnement. Le corps de la requête prend en charge le champ `reasoning_effort` au niveau supérieur, la seule valeur actuellement prise en charge est `max` ; si ce champ est omis, `max` est également utilisé. `standard`, `high` ou d'autres chaînes peuvent être partiellement acceptées par des systèmes en amont compatibles, mais il n'est pas garanti que cela modifie le comportement de raisonnement, ne pas en dépendre.

```bash theme={null}
curl https://api.acedata.cloud/kimi/chat/completions \
  -H "Authorization: Bearer $ACEDATACLOUD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [{"role": "user", "content": "Examinez ce code et proposez une solution de correction"}],
    "reasoning_effort": "max"
  }'
```

Lors de l'utilisation du SDK OpenAI, vous pouvez directement transmettre ce champ :

```python theme={null}
response = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "Concevez une file d'attente de tâches fiable"}],
    reasoning_effort="max",
)
```

Pour les conversations à plusieurs tours et les appels d'outils, veuillez renvoyer le message complet de l'assistant de la dernière ronde dans `messages`, y compris `reasoning_content` et `tool_calls`.

### Références officielles

* [Thinking Effort](https://platform.kimi.ai/docs/guide/use-thinking-effort) : indique que Kimi K3 active toujours le raisonnement, la seule valeur actuellement prise en charge pour `reasoning_effort` est `max`.
* [Model Parameter Reference](https://platform.kimi.ai/docs/api/models-overview) : compare les paramètres de raisonnement, la fenêtre de contexte et les différences d'appels d'outils entre K3 et la série K2.
* [Create Chat Completion](https://platform.kimi.ai/docs/api/chat) : demande, réponse et définition des champs OpenAPI pour les Chat Completions officiels de Moonshot.

## Réponse en continu

Cette interface prend également en charge les réponses en continu, ce qui est très utile pour l'intégration web, permettant d'afficher les résultats caractère par caractère.

Si vous souhaitez renvoyer une réponse en continu, vous pouvez modifier le paramètre `stream` dans l'en-tête de la requête pour le définir sur `true`.

La modification est illustrée sur l'image, mais le code d'appel doit également être modifié pour prendre en charge les réponses en continu.

<p>
  <img src="https://cdn.acedata.cloud/a3nzpw.png" width="400" className="m-auto" />
</p>

Après avoir modifié `stream` en `true`, l'API renverra les données JSON ligne par ligne, et au niveau du code, nous devons apporter les modifications nécessaires pour obtenir les résultats ligne par ligne.

Exemple de code d'appel en Python :

```python theme={null}
import requests

url = "https://api.acedata.cloud/kimi/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "kimi-k3",
    "messages": [{"role":"user","content":"Bonjour"}],
    "reasoning_effort": "max",
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Voici un extrait des blocs de données de début, de raisonnement, de corps, de fin et d'utilisation d'une réponse en continu réelle de K3 Max :

```json theme={null}
data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"reasoning_content":"Le"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"content":"Bonjour"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[],"usage":{"prompt_tokens":172,"completion_tokens":168,"total_tokens":340}}

data: [DONE]
```

Vous pouvez voir que la réponse contient de nombreuses `data`, où `data` contient les `choices`, qui sont le contenu de la réponse la plus récente, conforme à ce qui a été présenté ci-dessus. `choices` est le contenu de réponse ajouté, que vous pouvez intégrer dans votre système. De plus, la fin de la réponse en streaming est déterminée par le contenu de `data`; si le contenu est `[DONE]`, cela signifie que la réponse en streaming est entièrement terminée. Le résultat `data` retourné contient plusieurs champs, décrits comme suit :

* `id`, l'ID généré pour cette tâche de conversation, utilisé pour identifier de manière unique cette tâche de conversation.
* `model`, le modèle choisi sur le site officiel de Kimi.
* `choices`, les informations de réponse fournies par Kimi en réponse aux questions.

JavaScript est également pris en charge, par exemple, le code d'appel en streaming pour Node.js est comme suit :

```javascript theme={null}
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "kimi-k3",
    "messages": [{"role":"user","content":"Bonjour"}],
    "stream": true
  })
};

fetch("https://api.acedata.cloud/kimi/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Exemple de code en Java :

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "kimi-k3");
jsonObject.put("messages", [{"role":"user","content":"Bonjour"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.acedata.cloud/kimi/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
```

D'autres langages peuvent être réécrits séparément, le principe est le même.

## Dialogue multi-tours

Si vous souhaitez intégrer la fonctionnalité de dialogue multi-tours, vous devez télécharger plusieurs questions dans le champ `messages`, des exemples spécifiques de plusieurs questions sont illustrés ci-dessous :

<p>
  <img src="https://cdn.acedata.cloud/g85v2a.png" width="400" className="m-auto" />
</p>

Exemple de code d'appel en Python :

```python theme={null}
import requests

url = "https://api.acedata.cloud/kimi/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "kimi-k3",
    "messages": [{"role":"assistant","content":"Bonjour! Comment puis-je vous aider aujourd'hui?"},{"role":"user","content":"Quel modèle êtes-vous?"}],
    "reasoning_effort": "max"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

En téléchargeant plusieurs questions, vous pouvez facilement réaliser un dialogue multi-tours. Voici la réponse réelle obtenue de K3 Max pour cette demande (les champs d'extension non utilisés sont omis) :

```json theme={null}
{
  "id": "msg_Rqp8nPGBDHWwBlL4VpxuafOp",
  "object": "chat.completion",
  "created": 1784466628,
  "model": "kimi-k3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Je suis Kimi, un assistant IA développé par Moonshot AI (月之暗面). Je n'ai pas d'identifiant de version de modèle public spécifique à partager ici."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 134,
    "completion_tokens": 346,
    "total_tokens": 480
  }
}
```

Vous pouvez voir que les informations contenues dans `choices` sont cohérentes avec le contenu de base utilisé, cela inclut le contenu de réponse de Kimi pour plusieurs dialogues, ce qui permet de répondre aux questions correspondantes en fonction de plusieurs contenus de dialogue.

## Gestion des erreurs

Lors de l'appel de l'API, si une erreur se produit, l'API renverra le code d'erreur et les informations correspondantes. Par exemple :

* `400 token_mismatched` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `400 api_not_implemented` : Mauvaise requête, probablement en raison de paramètres manquants ou invalides.
* `401 invalid_token` : Non autorisé, jeton d'autorisation invalide ou manquant.
* `429 too_many_requests` : Trop de requêtes, vous avez dépassé la limite de taux.
* `500 api_error` : Erreur interne du serveur, quelque chose s'est mal passé sur le serveur.

### Exemple de réponse d'erreur

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "échec de la récupération"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Conclusion

Grâce à ce document, vous avez compris comment utiliser l'API Kimi Chat Completion pour réaliser des conversations ordinaires, des réponses en streaming, des dialogues multi-tours, ainsi que contrôler l'intensité de raisonnement de K3 via `reasoning_effort`.
