Vai al contenuto principale
Kimi è un sistema di dialogo AI molto potente, basta inserire una parola chiave e in pochi secondi può generare risposte fluide e naturali. Kimi può fornire assistenza intelligente sorprendente, aumentando notevolmente l’efficienza e la creatività umana. Questo documento descrive principalmente il processo di utilizzo dell’API Kimi Chat Completion, che ci consente di utilizzare facilmente le funzionalità di dialogo ufficiali di Kimi.

Processo di richiesta

Per utilizzare l’API Gemini Chat Completion, puoi prima andare alla pagina Kimi Chat Completion API e cliccare sul pulsante “Acquire” per ottenere le credenziali necessarie per la richiesta: Se non hai ancora effettuato il login o la registrazione, verrai automaticamente reindirizzato alla pagina di login che ti invita a registrarti e accedere; dopo aver effettuato il login o la registrazione, verrai automaticamente riportato alla pagina corrente. Alla prima richiesta, verrà fornito un credito gratuito, che ti consente di utilizzare gratuitamente questa API.

Utilizzo di base

Successivamente, puoi compilare i contenuti corrispondenti nell’interfaccia, come mostrato nell’immagine:

Quando utilizzi per la prima volta questa interfaccia, è necessario compilare almeno tre contenuti: uno è authorization, che puoi semplicemente selezionare dal menu a discesa. Un altro parametro è model, model è la categoria del modello che scegli di utilizzare dal sito ufficiale di Kimi; qui abbiamo principalmente 7 modelli, i dettagli possono essere consultati nei modelli forniti. L’ultimo parametro è messages, messages è un array delle parole di domanda che inseriamo, rappresenta un array che può caricare più parole di domanda contemporaneamente, ogni parola di domanda contiene role e content, dove role indica il ruolo del richiedente; abbiamo fornito tre identità: user, assistant, system. L’altro content è il contenuto specifico della nostra domanda. Puoi anche notare che a destra c’è il codice di chiamata corrispondente generato, puoi copiare il codice e eseguirlo direttamente, oppure cliccare direttamente sul pulsante “Try” per testare.

Dopo la chiamata, scopriamo che il risultato restituito è il seguente:
{
  "id": "chatcmpl-b5d9e1b799c137e3",
  "object": "chat.completion",
  "created": 1770991864,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Ciao! Come posso aiutarti oggi?",
        "refusal": null,
        "reasoning_content": " L'utente ha semplicemente detto \"Ciao\". Questo è un saluto semplice. Dovrei rispondere in modo amichevole e utile, pronto ad assistere con qualsiasi cosa di cui abbiano bisogno. Poiché non c'è ancora una domanda o un compito specifico, riconoscerò il loro saluto e chiederò come posso aiutare.\n\nDovrei mantenerlo:\n- Amichevole e accogliente\n- Professionale ma caloroso\n- Aperto per invitarli a condividere di cosa hanno bisogno aiuto\n- Conciso ma non troppo breve\n\nRisposte possibili:\n1. \"Ciao! Come posso aiutarti oggi?\"\n2. \"Ciao! Cosa posso fare per te?\"\n3. \"Ciao! Sono pronto ad assisterti. Cosa vorresti sapere o su cosa lavorare?\"\n4. \"Ehi! È un piacere conoscerti. Come posso esserti utile?\"\n\nAndrò con qualcosa di caloroso e professionale che li invita a condividere di cosa hanno bisogno. ",
        "reasoning": " L'utente ha semplicemente detto \"Ciao\". Questo è un saluto semplice. Dovrei rispondere in modo amichevole e utile, pronto ad assistere con qualsiasi cosa di cui abbiano bisogno. Poiché non c'è ancora una domanda o un compito specifico, riconoscerò il loro saluto e chiederò come posso aiutare.\n\nDovrei mantenerlo:\n- Amichevole e accogliente\n- Professionale ma caloroso\n- Aperto per invitarli a condividere di cosa hanno bisogno aiuto\n- Conciso ma non troppo breve\n\nRisposte possibili:\n1. \"Ciao! Come posso aiutarti oggi?\"\n2. \"Ciao! Cosa posso fare per te?\"\n3. \"Ciao! Sono pronto ad assisterti. Cosa vorresti sapere o su cosa lavorare?\"\n4. \"Ehi! È un piacere conoscerti. Come posso esserti utile?\"\n\nAndrò con qualcosa di caloroso e professionale che li invita a condividere di cosa hanno bisogno. ",
        "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": {}
  }
}
Il risultato restituito ha diversi campi, descritti come segue:
  • id, l’ID della generazione di questo compito di dialogo, utilizzato per identificare univocamente questo compito di dialogo.
  • model, il modello scelto dal sito ufficiale di Kimi.
  • choices, le informazioni di risposta fornite da Kimi per le parole di domanda.
  • usage: informazioni statistiche sui token per questo scambio di domande e risposte.
Tra cui choices contiene le informazioni di risposta di Kimi, all’interno di choices ci sono le informazioni specifiche della risposta di Kimi, come mostrato nell’immagine.

Si può notare che il campo content all’interno di choices contiene il contenuto specifico della risposta di Gemini.

Risposta in streaming

Questa interfaccia supporta anche la risposta in streaming, il che è molto utile per l’integrazione web, consentendo di realizzare un effetto di visualizzazione parola per parola. Se desideri restituire una risposta in streaming, puoi modificare il parametro stream nell’intestazione della richiesta, impostandolo su true. La modifica è mostrata nell’immagine, ma il codice di chiamata deve avere le modifiche corrispondenti per supportare la risposta in streaming.

Dopo aver modificato stream in true, l’API restituirà i dati JSON corrispondenti riga per riga; a livello di codice, dobbiamo apportare le modifiche necessarie per ottenere i risultati riga per riga. Esempio di codice di chiamata in 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":"Ciao"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
L’output sarà il seguente:
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": " Il", "reasoning": " Il"}, "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'utente ha detto \"Ciao\". Questo è un saluto semplice", "reasoning": " l'utente ha detto \"Ciao\". Questo è un saluto semplice"}, "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": ". Dovrei rispondere in modo amichevole e accogliente", "reasoning": ". Dovrei rispondere in modo amichevole e accogliente"}, "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": ". Poiché questo è l'inizio di una conversazione,", "reasoning": ". Poiché questo è l'inizio di una conversazione,"}, "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": " dovrei chiedere come posso aiutarli oggi.\n\n", "reasoning": " dovrei chiedere come posso aiutarli oggi.\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": "Lasciami creare una risposta:\n- Riconoscere il", "reasoning": "Lasciami creare una risposta:\n- Riconoscere il"}, "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": " saluto\n- Offrire assistenza\n- Mantenerlo caloroso", "reasoning": " saluto\n- Offrire assistenza\n- Mantenerlo caloroso"}, "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": " e professionale\n\nQualcosa del tipo: \"Ciao! Come", "reasoning": " e professionale\n\nQualcosa del tipo: \"Ciao! Come"}, "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": " posso aiutarti oggi?\" oppure \"Ciao", "reasoning": " posso aiutarti oggi?\" oppure \"Ciao"}, "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": "! Cosa posso fare per te?\"\n\nIn realtà", "reasoning": "! Cosa posso fare per te?\"\n\nIn realtà"}, "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": ", guardando il contesto, questo sembra essere", "reasoning": ", guardando il contesto, questo sembra essere"}, "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 avvio di conversazione generale. Lo terrò semplice e", "reasoning": " un avvio di conversazione generale. Lo terrò semplice e"}, "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": " aperto per incoraggiarli a condividere ciò di cui hanno bisogno", "reasoning": " aperto per incoraggiarli a condividere ciò di cui hanno bisogno"}, "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": " Ciao! Come posso aiutare", "reasoning_content": " aiutare. ", "reasoning": " aiutare. "}, "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": " te oggi?"}, "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: [FINE]
Si può vedere che nella risposta ci sono molti data, e data contiene choices, che è il contenuto della risposta più recente, coerente con quanto descritto in precedenza. choices è il contenuto della risposta aggiuntivo, che puoi integrare nel tuo sistema in base ai risultati. Inoltre, la fine della risposta in streaming è determinata dal contenuto di data; se il contenuto è [DONE], significa che la risposta in streaming è completamente terminata. I risultati data restituiti hanno diversi campi, descritti di seguito:
  • id, l’ID generato per questo compito di dialogo, utilizzato per identificare univocamente questo compito di dialogo.
  • model, il modello scelto dal sito ufficiale di Kimi.
  • choices, le informazioni di risposta fornite da Kimi in base alla domanda.
JavaScript è supportato, ad esempio, il codice per la chiamata in streaming di Node.js è il seguente:
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));
Esempio di codice 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())
Altre lingue possono essere riscritte autonomamente, il principio è lo stesso.

Dialogo multiplo

Se desideri integrare la funzionalità di dialogo multiplo, è necessario caricare più domande nel campo messages, un esempio specifico di più domande è mostrato nell’immagine sottostante:

Esempio di codice Python per la chiamata:
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)
Caricando più domande, è possibile realizzare facilmente un dialogo multiplo e ottenere risposte come la seguente:
{
  "id": "chatcmpl-81e5f161ea077f5e",
  "object": "chat.completion",
  "created": 1770992310,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " I'm Kimi, an AI assistant made by Moonshot AI. I'm from the **K2.5** series.",
        "refusal": null,
        "reasoning_content": " The user is asking \"What model are you?\" They want to know which AI model I am.\n\n I should identify myself as Kimi, an AI assistant made by Moonshot AI. I should mention that I'm Kimi from the K2.5 series specifically, as that's the model currently deployed.\n\n Key points:\n - I am Kimi\n - Made by Moonshot AI\n - Currently Kimi K2.5 (or just say I'm part of the K2.5 series)\n - I should be helpful and direct\n\n I should not:\n - Claim to be a different model (like GPT-4, Gemini, etc.)\n - Be evasive about my identity\n - Make up version numbers that aren't correct\n\n The current model identity is Kimi K2.5 (though sometimes the exact series designation might vary by deployment, but K2.5 is the current flagship). I'll identify myself as Kimi, an AI assistant by Moonshot AI, and mention I'm from the K2.5 series.\n\n Simple, direct, accurate. ",
        "reasoning": " The user is asking \"What model are you?\" They want to know which AI model I am.\n\n I should identify myself as Kimi, an AI assistant made by Moonshot AI. I should mention that I'm Kimi from the K2.5 series specifically, as that's the model currently deployed.\n\n Key points:\n - I am Kimi\n - Made by Moonshot AI\n - Currently Kimi K2.5 (or just say I'm part of the K2.5 series)\n - I should be helpful and direct\n\n I should not:\n - Claim to be a different model (like GPT-4, Gemini, etc.)\n - Be evasive about my identity\n - Make up version numbers that aren't correct\n\n The current model identity is Kimi K2.5 (though sometimes the exact series designation might vary by deployment, but K2.5 is the current flagship). I'll identify myself as Kimi, an AI assistant by Moonshot AI, and mention I'm from the K2.5 series.\n\n Simple, direct, accurate. ",
        "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": {}
  }
}
Si può vedere che le informazioni contenute in choices sono coerenti con il contenuto di utilizzo di base, che include il contenuto specifico delle risposte di Kimi a più dialoghi, in modo da poter rispondere alle domande corrispondenti in base ai contenuti di più dialoghi.

Gestione degli errori

Quando si chiama l’API, se si verifica un errore, l’API restituirà il codice di errore e le informazioni corrispondenti. Ad esempio:
  • 400 token_mismatched: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 400 api_not_implemented: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 401 invalid_token: Non autorizzato, token di autorizzazione non valido o mancante.
  • 429 too_many_requests: Troppe richieste, hai superato il limite di frequenza.
  • 500 api_error: Errore interno del server, qualcosa è andato storto sul server.

Esempio di risposta di errore

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusione

Attraverso questo documento, hai compreso come utilizzare l’API Gemini Chat Completion per implementare facilmente la funzionalità di dialogo ufficiale di Gemini. Speriamo che questo documento possa aiutarti a integrare e utilizzare meglio questa API. Se hai domande, non esitare a contattare il nostro team di supporto tecnico.