Перейти к основному содержанию
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, идентификатор задачи диалога, созданной для уникальной идентификации этой задачи диалога.
  • 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":"Привет"}],
    "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"
}

Заключение

С помощью этого документа вы узнали, как использовать Gemini Chat Completion API для легкой реализации функции диалога официального Gemini. Надеемся, что этот документ поможет вам лучше интегрировать и использовать этот API. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.