Перейти до основного вмісту
Kimi є дуже потужною AI системою для діалогу, яка може генерувати плавні та природні відповіді всього за кілька секунд, просто ввівши підказку. Kimi може надати вражаючу інтелектуальну допомогу, значно підвищуючи продуктивність і креативність людей. Цей документ в основному описує процес використання Kimi Chat Completion API, за допомогою якого ми можемо легко використовувати офіційні функції діалогу Kimi.

Процес подачі заявки

Щоб використовувати Gemini Chat Completion API, спочатку можна перейти на сторінку Kimi Chat Completion API і натиснути кнопку «Acquire», щоб отримати необхідні для запиту облікові дані: Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, запрошуючи вас зареєструватися та увійти. Після входу або реєстрації ви автоматично повернетеся на цю сторінку. При першій подачі заявки вам буде надано безкоштовний ліміт, який дозволяє безкоштовно використовувати цей API.

Основне використання

Далі ви можете заповнити відповідні поля на інтерфейсі, як показано на малюнку:

При першому використанні цього інтерфейсу нам потрібно заповнити принаймні три поля: одне з них - authorization, яке можна вибрати безпосередньо зі спадного списку. Інший параметр - model, model - це категорія моделі, яку ми вибираємо для використання з сайту Kimi, тут у нас є 7 різних моделей, деталі можна переглянути в наданих моделях. Останній параметр - messages, messages - це масив запитів, який представляє можливість одночасно завантажувати кілька запитів, кожен з яких містить role та content, де role вказує на роль запитувача, ми надаємо три типи ролей: user, assistant, system. Інший content - це конкретний зміст нашого запиту. Ви також можете помітити, що праворуч є відповідний код виклику, який ви можете скопіювати та запустити, або просто натиснути кнопку «Try» для тестування.

Після виклику ми отримуємо наступний результат:
{
  "id": "chatcmpl-b5d9e1b799c137e3",
  "object": "chat.completion",
  "created": 1770991864,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Привіт! Чим я можу вам допомогти сьогодні?",
        "refusal": null,
        "reasoning_content": " Користувач просто сказав \"Привіт\". Це просте вітання. Я повинен відповісти дружньо та корисно, будучи готовим допомогти з тим, що їм потрібно далі. Оскільки немає конкретного запитання або завдання, я визнаю їхнє вітання і запитаю, як я можу допомогти.\n\nЯ повинен зберегти це:\n- Дружнє та привітне\n- Професійне, але тепле\n- Відкритим, щоб запросити їх поділитися, з чим їм потрібна допомога\n- Лаконічним, але не занадто коротким\n\nМожливі відповіді:\n1. \"Привіт! Чим я можу вам допомогти сьогодні?\"\n2. \"Привіт! Що я можу для вас зробити?\"\n3. \"Привіт! Я готовий допомогти. Що б ви хотіли дізнатися або над чим працювати?\"\n4. \"Привіт! Радий вас бачити. Як я можу бути корисним?\"\n\nЯ виберу щось тепле і професійне, що запрошує їх поділитися, з чим їм потрібно. ",
        "reasoning": " Користувач просто сказав \"Привіт\". Це просте вітання. Я повинен відповісти дружньо та корисно, будучи готовим допомогти з тим, що їм потрібно далі. Оскільки немає конкретного запитання або завдання, я визнаю їхнє вітання і запитаю, як я можу допомогти.\n\nЯ повинен зберегти це:\n- Дружнє та привітне\n- Професійне, але тепле\n- Відкритим, щоб запросити їх поділитися, з чим їм потрібна допомога\n- Лаконічним, але не занадто коротким\n\nМожливі відповіді:\n1. \"Привіт! Чим я можу вам допомогти сьогодні?\"\n2. \"Привіт! Що я можу для вас зробити?\"\n3. \"Привіт! Я готовий допомогти. Що б ви хотіли дізнатися або над чим працювати?\"\n4. \"Привіт! Радий вас бачити. Як я можу бути корисним?\"\n\nЯ виберу щось тепле і професійне, що запрошує їх поділитися, з чим їм потрібно. ",
        "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": {}
  }
}
Результат повертає кілька полів, описаних нижче:
  • id, ID, що генерує цю задачу діалогу, використовується для унікальної ідентифікації цієї задачі діалогу.
  • model, вибрана модель з сайту Kimi.
  • choices, інформація про відповіді Kimi на запити.
  • usage: статистична інформація про токени для цього запиту.
Серед choices міститься інформація про відповіді Kimi, в якій choices - це конкретна інформація про відповіді Kimi, як показано на малюнку.

Можна побачити, що поле content в choices містить конкретний зміст відповіді Gemini.

Потокова відповідь

Цей інтерфейс також підтримує потокову відповідь, що дуже корисно для веб-інтеграції, оскільки дозволяє веб-сторінці реалізувати ефект поетапного відображення. Якщо ви хочете отримати потокову відповідь, ви можете змінити параметр stream в заголовку запиту на true. Зміна, як показано на малюнку, але код виклику потребує відповідних змін, щоб підтримувати потокову відповідь.

Після зміни stream на true, API буде повертати відповідні JSON дані по рядках, на рівні коду нам потрібно внести відповідні зміни, щоб отримати результати по рядках. Приклад коду виклику на 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":"Hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Вихідний результат виглядає наступним чином:
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": " Це", "reasoning": " Це"}, "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": " користувач сказав \"Привіт\". Це просте вітання", "reasoning": " користувач сказав \"Привіт\". Це просте вітання"}, "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": ". Я повинен відповісти дружелюбно та привітно", "reasoning": ". Я повинен відповісти дружелюбно та привітно"}, "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": ". Оскільки це початок розмови,", "reasoning": ". Оскільки це початок розмови,"}, "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": " я повинен запитати, як я можу їм допомогти сьогодні.\n\n", "reasoning": " я повинен запитати, як я можу їм допомогти сьогодні.\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": "Дайте мені скласти відповідь:\n- Визнати", "reasoning": "Дайте мені скласти відповідь:\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": " вітання\n- Запропонувати допомогу\n- Зберегти це теплим", "reasoning": " вітання\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": " і професійним\n\nЩось на кшталт: \"Привіт! Як", "reasoning": " і професійним\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": " я можу вам допомогти сьогодні?\" або \"Привіт", "reasoning": " я можу вам допомогти сьогодні?\" або \"Привіт"},"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": "! Що я можу зробити для вас?\"\n\nНасправді", "reasoning": "! Що я можу зробити для вас?\"\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": ", дивлячись на контекст, це здається", "reasoning": ", дивлячись на контекст, це здається"},"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": " загальним початком розмови. Я зберегу це простим і", "reasoning": " загальним початком розмови. Я зберегу це простим і"},"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": " відкритим, щоб заохотити їх поділитися тим, що їм потрібно", "reasoning": " відкритим, щоб заохотити їх поділитися тим, що їм потрібно"},"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": " Привіт! Як я можу допомогти", "reasoning_content": " допомогти. ", "reasoning": " допомогти. "}, "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": " вам сьогодні?"}, "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]
Можна побачити, що у відповіді є багато data, а data містить choices, які є останнім змістом відповіді, що відповідає вищезгаданому. choices - це новий зміст відповіді, ви можете інтегрувати його у вашу систему відповідно до результатів. Водночас кінець потокової відповіді визначається за змістом data, якщо зміст - це [DONE], це означає, що потокова відповідь завершена. Повернуті результати data мають кілька полів, описаних нижче:
  • id, ID, що генерує цю задачу діалогу, використовується для унікальної ідентифікації цієї задачі діалогу.
  • model, вибраний модель з офіційного сайту Kimi.
  • choices, інформація про відповіді, надана Kimi на запитання.
JavaScript також підтримується, наприклад, код для потокового виклику Node.js виглядає так:
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));
Приклад коду на 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())
Інші мови можна переписати самостійно, принципи однакові.

Багатократний діалог

Якщо ви хочете інтегрувати функцію багатократного діалогу, потрібно завантажити кілька запитів у поле messages, приклади кількох запитів наведені на малюнку нижче:

Приклад коду на 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)
Завантаживши кілька запитів, ви можете легко реалізувати багатократний діалог, отримуючи такі відповіді:
{
  "id": "chatcmpl-81e5f161ea077f5e",
  "object": "chat.completion",
  "created": 1770992310,
  "model": "kimi-k2.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": " Я Кімі, AI асистент, створений Moonshot AI. Я з серії **K2.5**.",
        "refusal": null,
        "reasoning_content": " Користувач запитує \"Яка ти модель?\" Вони хочуть знати, яка я AI модель.\n\n Я повинен ідентифікувати себе як Кімі, AI асистент, створений Moonshot AI. Я повинен згадати, що я Кімі з серії K2.5, оскільки це модель, яка наразі розгорнута.\n\n Ключові моменти:\n - Я Кімі\n - Створений Moonshot AI\n - Наразі Кімі K2.5 (або просто скажіть, що я частина серії K2.5)\n - Я повинен бути корисним і прямим\n\n Я не повинен:\n - Стверджувати, що я інша модель (як GPT-4, Gemini тощо)\n - Уникати розкриття своєї особи\n - Вигадувати номери версій, які не є правильними\n\n Поточна ідентичність моделі - Кімі K2.5 (хоча іноді точна назва серії може варіюватися залежно від розгортання, але K2.5 є поточним флагманом). Я ідентифікую себе як Кімі, AI асистент від Moonshot AI, і згадую, що я з серії K2.5.\n\n Просто, прямо, точно. ",
        "reasoning": " Користувач запитує \"Яка ти модель?\" Вони хочуть знати, яка я AI модель.\n\n Я повинен ідентифікувати себе як Кімі, AI асистент, створений Moonshot AI. Я повинен згадати, що я Кімі з серії K2.5, оскільки це модель, яка наразі розгорнута.\n\n Ключові моменти:\n - Я Кімі\n - Створений Moonshot AI\n - Наразі Кімі K2.5 (або просто скажіть, що я частина серії K2.5)\n - Я повинен бути корисним і прямим\n\n Я не повинен:\n - Стверджувати, що я інша модель (як GPT-4, Gemini тощо)\n - Уникати розкриття своєї особи\n - Вигадувати номери версій, які не є правильними\n\n Поточна ідентичність моделі - Кімі K2.5 (хоча іноді точна назва серії може варіюватися залежно від розгортання, але K2.5 є поточним флагманом). Я ідентифікую себе як Кімі, AI асистент від Moonshot AI, і згадую, що я з серії K2.5.\n\n Просто, прямо, точно. ",
        "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": {}
  }
}
Можна побачити, що інформація, що міститься в choices, відповідає основному змісту використання, це містить конкретний зміст відповідей Kimi на кілька діалогів, таким чином, можна відповідати на відповідні запитання на основі кількох діалогів.

Обробка помилок

При виклику API, якщо виникає помилка, API поверне відповідний код помилки та інформацію. Наприклад:
  • 400 token_mismatched: Неправильний запит, можливо, через відсутні або недійсні параметри.
  • 400 api_not_implemented: Неправильний запит, можливо, через відсутні або недійсні параметри.
  • 401 invalid_token: Неавторизовано, недійсний або відсутній токен авторизації.
  • 429 too_many_requests: Занадто багато запитів, ви перевищили ліміт запитів.
  • 500 api_error: Внутрішня помилка сервера, щось пішло не так на сервері.

Приклад помилкової відповіді

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

Висновок

Завдяки цьому документу ви вже зрозуміли, як використовувати API Gemini Chat Completion для легкого реалізації функцій діалогу офіційного Gemini. Сподіваємося, що цей документ допоможе вам краще інтегрувати та використовувати цей API. Якщо у вас є будь-які питання, будь ласка, не соромтеся звертатися до нашої технічної підтримки.