Passer au contenu principal
Kimi est un système de dialogue AI très puissant, il suffit d’entrer un mot-clé pour générer des réponses fluides et naturelles en quelques secondes. Kimi peut fournir une assistance intelligente impressionnante, augmentant considérablement l’efficacité et la créativité humaines. 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 dialogue officielles de Kimi.

Processus de demande

Pour utiliser l’API Gemini Chat Completion, vous pouvez d’abord vous rendre sur la page Kimi Chat Completion API et cliquer sur le bouton « Acquire » pour obtenir les informations d’identification nécessaires à la demande : 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 vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle. Lors de la première demande, un quota gratuit sera offert, vous permettant d’utiliser cette API gratuitement.

Utilisation de base

Ensuite, vous pouvez remplir le contenu correspondant sur l’interface, comme indiqué sur l’image :

Lors de la première utilisation de cette interface, nous devons remplir au moins trois contenus : l’un est authorization, que vous pouvez sélectionner directement dans la liste déroulante. L’autre paramètre est model, model est la catégorie de modèle que nous choisissons d’utiliser sur le site officiel de Kimi, ici nous avons principalement 7 types de modèles, pour plus de détails, vous pouvez consulter les modèles que nous fournissons. Le dernier paramètre est messages, messages est un tableau de mots de question que nous entrons, il s’agit d’un tableau qui permet de télécharger plusieurs mots de question simultanément, chaque mot de question contenant role et content, où role représente le rôle du questionneur, nous avons fourni trois identités : user, assistant, system. L’autre content est le contenu spécifique de notre question. Vous pouvez également remarquer qu’il y a un code d’appel correspondant généré à droite, vous pouvez copier le code pour l’exécuter directement ou cliquer sur le bouton « Try » pour effectuer un test.

Après l’appel, nous constatons que le résultat retourné est le suivant :
{
  "id": "chatcmpl-b5d9e1b799c137e3",
  "object": "chat.completion",
  "created": 1770991864,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Bonjour ! Comment puis-je vous aider aujourd'hui ?",
        "refusal": null,
        "reasoning_content": " L'utilisateur a simplement dit \"Bonjour\". C'est un salut simple. Je devrais répondre de manière amicale et utile tout en étant prêt à aider avec ce dont ils ont besoin ensuite. Comme il n'y a pas encore de question ou de tâche spécifique, je vais reconnaître leur salut et demander comment je peux aider.\n\nJe devrais garder cela :\n- Amical et accueillant\n- Professionnel mais chaleureux\n- Ouvert pour les inviter à partager ce dont ils ont besoin d'aide\n- Concis mais pas trop bref\n\nRéponses possibles :\n1. \"Bonjour ! Comment puis-je vous aider aujourd'hui ?\"\n2. \"Salut ! Que puis-je faire pour vous ?\"\n3. \"Bonjour ! Je suis prêt à aider. Que voudriez-vous savoir ou sur quoi travailler ?\"\n4. \"Salut ! Ravi de vous rencontrer. Comment puis-je vous servir ?\"\n\nJe vais opter pour quelque chose de chaleureux et professionnel qui les invite à partager ce dont ils ont besoin. ",
        "reasoning": " L'utilisateur a simplement dit \"Bonjour\". C'est un salut simple. Je devrais répondre de manière amicale et utile tout en étant prêt à aider avec ce dont ils ont besoin ensuite. Comme il n'y a pas encore de question ou de tâche spécifique, je vais reconnaître leur salut et demander comment je peux aider.\n\nJe devrais garder cela :\n- Amical et accueillant\n- Professionnel mais chaleureux\n- Ouvert pour les inviter à partager ce dont ils ont besoin d'aide\n- Concis mais pas trop bref\n\nRéponses possibles :\n1. \"Bonjour ! Comment puis-je vous aider aujourd'hui ?\"\n2. \"Salut ! Que puis-je faire pour vous ?\"\n3. \"Bonjour ! Je suis prêt à aider. Que voudriez-vous savoir ou sur quoi travailler ?\"\n4. \"Salut ! Ravi de vous rencontrer. Comment puis-je vous servir ?\"\n\nJe vais opter pour quelque chose de chaleureux et professionnel qui les invite à partager ce dont ils ont besoin. ",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 184,
    "total_tokens": 193,
    "prompt_tokens_details": {
      "cached_tokens_details": {}
    },
    "completion_tokens_details": {}
  }
}
Le résultat retourné contient plusieurs champs, décrits comme suit :
  • id, l’ID généré pour cette tâche de dialogue, utilisé pour identifier de manière unique cette tâche de dialogue.
  • model, le modèle choisi sur le site officiel de Kimi.
  • choices, les informations de réponse fournies par Kimi pour les mots de question.
  • usage : les informations statistiques sur les tokens pour cette question-réponse.
Parmi eux, choices contient les informations de réponse de Kimi, où choices est les informations spécifiques de la réponse de Kimi, comme indiqué sur l’image.

On peut voir que le champ content dans choices contient le contenu spécifique de la réponse de Gemini.

Réponse en flux

Cette interface prend également en charge les réponses en flux, ce qui est très utile pour l’intégration sur le web, permettant d’afficher les résultats caractère par caractère. Si vous souhaitez retourner une réponse en flux, vous pouvez modifier le paramètre stream dans l’en-tête de la demande, en le changeant en true. Modifiez comme indiqué sur l’image, mais le code d’appel doit également être modifié pour prendre en charge la réponse en flux.

Après avoir modifié stream en true, l’API renverra les données JSON correspondantes 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 :
import requests

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

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

payload = {
    "model": "kimi-k2.5",
    "messages": [{"role":"user","content":"Bonjour"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
L’effet de sortie est le suivant :
data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"content": "", "role": "assistant"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " Le", "reasoning": " Le"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " l'utilisateur a dit \"Bonjour\". C'est un simple salut", "reasoning": " l'utilisateur a dit \"Bonjour\". C'est un simple salut"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": ". Je devrais répondre de manière amicale et accueillante", "reasoning": ". Je devrais répondre de manière amicale et accueillante"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": ". Puisque c'est le début d'une conversation,", "reasoning": ". Puisque c'est le début d'une conversation,"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " je devrais demander comment je peux les aider aujourd'hui.\n\n", "reasoning": " je devrais demander comment je peux les aider aujourd'hui.\n\n"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": "Laissez-moi rédiger une réponse:\n- Reconnaître le", "reasoning": "Laissez-moi rédiger une réponse:\n- Reconnaître le"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " salut\n- Offrir de l'aide\n- Garder cela chaleureux", "reasoning": " salut\n- Offrir de l'aide\n- Garder cela chaleureux"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " et professionnel\n\nQuelque chose comme: \"Bonjour! Comment", "reasoning": " et professionnel\n\nQuelque chose comme: \"Bonjour! Comment"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " puis-je vous aider aujourd'hui?\" ou \"Salut là-bas", "reasoning": " puis-je vous aider aujourd'hui?\" ou \"Salut là-bas"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": "! Que puis-je faire pour vous?\"\n\nEn fait", "reasoning": "! Que puis-je faire pour vous?\"\n\nEn fait"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": ", en regardant le contexte, cela semble être", "reasoning": ", en regardant le contexte, cela semble être"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " un déclencheur de conversation général. Je vais garder cela simple et", "reasoning": " un déclencheur de conversation général. Je vais garder cela simple et"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"reasoning_content": " ouvert pour les encourager à partager ce dont ils ont besoin", "reasoning": " ouvert pour les encourager à partager ce dont ils ont besoin"}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"content": " Bonjour! Comment puis-je aider", "reasoning_content": " à aider. ", "reasoning": " à aider. "}, "logprobs": null, "finish_reason": null}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [{"index": 0, "delta": {"content": " vous aujourd'hui?"}, "logprobs": null, "finish_reason": "stop"}], "usage": null}

data: {"id": "chatcmpl-952dd5e75583c4d1", "object": "chat.completion.chunk", "created": 1770992031, "model": "kimi-k2.5", "system_fingerprint": null, "choices": [], "usage": {"prompt_tokens": 9, "completion_tokens": 135, "total_tokens": 144, "prompt_tokens_details": {"cached_tokens_details": {}}, "completion_tokens_details": {}}}

data: [DONE]
On peut voir que la réponse contient de nombreuses data, et que les choices à l’intérieur de data correspondent au contenu de la dernière réponse, en accord avec ce qui a été présenté précédemment. Les choices sont le nouveau contenu de réponse, que vous pouvez intégrer dans votre système en fonction des résultats. 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. Les résultats data retournés contiennent plusieurs champs, décrits comme suit :
  • id, l’ID de la tâche de dialogue générée, utilisé pour identifier de manière unique cette tâche de dialogue.
  • model, le modèle choisi sur le site officiel de Kimi.
  • choices, les informations de réponse fournies par Kimi en fonction des questions posées.
JavaScript est également pris en charge, par exemple, le code d’appel en streaming de Node.js est le suivant :
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "kimi-k2.5",
    "messages": [{"role":"user","content":"Hello"}],
    "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 Java :
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "kimi-k2.5");
jsonObject.put("messages", [{"role":"user","content":"Hello"}]);
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 de manière similaire, le principe reste le même.

Dialogue multi-tours

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

Exemple de code d’appel en Python :
import requests

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

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

payload = {
    "model": "kimi-k2.5",
    "messages": [{"role":"assistant","content":"Hello! How can I help you today?"},{"role":"user","content":"What model are you?"}]
}

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 et obtenir des réponses comme suit :
{
  "id": "chatcmpl-81e5f161ea077f5e",
  "object": "chat.completion",
  "created": 1770992310,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Je suis Kimi, un assistant IA créé par Moonshot AI. Je fais partie de la série **K2.5**.",
        "refusal": null,
        "reasoning_content": " L'utilisateur demande \"Quel modèle es-tu ?\" Il veut savoir quel modèle IA je suis.\n\n Je devrais m'identifier comme Kimi, un assistant IA créé par Moonshot AI. Je devrais mentionner que je suis Kimi de la série K2.5 spécifiquement, car c'est le modèle actuellement déployé.\n\n Points clés :\n - Je suis Kimi\n - Créé par Moonshot AI\n - Actuellement Kimi K2.5 (ou simplement dire que je fais partie de la série K2.5)\n - Je devrais être utile et direct\n\n Je ne devrais pas :\n - Prétendre être un modèle différent (comme GPT-4, Gemini, etc.)\n - Être évasif sur mon identité\n - Inventer des numéros de version qui ne sont pas corrects\n\n L'identité actuelle du modèle est Kimi K2.5 (bien que parfois la désignation exacte de la série puisse varier selon le déploiement, mais K2.5 est le modèle phare actuel). Je m'identifierai comme Kimi, un assistant IA de Moonshot AI, et mentionnerai que je viens de la série K2.5.\n\n Simple, direct, précis. ",
        "reasoning": " L'utilisateur demande \"Quel modèle es-tu ?\" Il veut savoir quel modèle IA je suis.\n\n Je devrais m'identifier comme Kimi, un assistant IA créé par Moonshot AI. Je devrais mentionner que je suis Kimi de la série K2.5 spécifiquement, car c'est le modèle actuellement déployé.\n\n Points clés :\n - Je suis Kimi\n - Créé par Moonshot AI\n - Actuellement Kimi K2.5 (ou simplement dire que je fais partie de la série K2.5)\n - Je devrais être utile et direct\n\n Je ne devrais pas :\n - Prétendre être un modèle différent (comme GPT-4, Gemini, etc.)\n - Être évasif sur mon identité\n - Inventer des numéros de version qui ne sont pas corrects\n\n L'identité actuelle du modèle est Kimi K2.5 (bien que parfois la désignation exacte de la série puisse varier selon le déploiement, mais K2.5 est le modèle phare actuel). Je m'identifierai comme Kimi, un assistant IA de Moonshot AI, et mentionnerai que je viens de la série K2.5.\n\n Simple, direct, précis. ",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 235,
    "total_tokens": 263,
    "prompt_tokens_details": {
      "cached_tokens_details": {}
    },
    "completion_tokens_details": {}
  }
}
On peut voir que les informations contenues dans choices sont cohérentes avec le contenu d’utilisation de base, cela inclut les réponses spécifiques de Kimi à plusieurs dialogues, permettant ainsi de répondre aux questions correspondantes.

Gestion des erreurs

Lors de l’appel à 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": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusion

Grâce à ce document, vous avez compris comment utiliser l’API Gemini Chat Completion pour réaliser facilement les fonctionnalités de dialogue officielles de Gemini. Nous espérons que ce document vous aidera à mieux intégrer et utiliser cette API. Si vous avez des questions, n’hésitez pas à contacter notre équipe de support technique.