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

# Kimi Chat Completion API Заявка и использование

> Kimi 集成指南 - XHuoAPI

Kimi — это очень мощная система AI-диалогов, которая может генерировать плавные и естественные ответы всего за несколько секунд, просто вводя подсказки. Kimi предоставляет потрясающую интеллектуальную помощь, значительно повышая эффективность и креативность работы человека.

Этот документ в основном описывает процесс использования Kimi Chat Completion API, с помощью которого мы можем легко использовать официальные функции диалога Kimi.

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

Чтобы использовать Gemini Chat Completion API, сначала перейдите на страницу [Kimi Chat Completion API](https://api.xhuoapi.ai/documents/b23bbfa3-c820-47ee-b307-6c6dedc9d0cf) и нажмите кнопку «Acquire», чтобы получить необходимые для запроса учетные данные:

![](https://cdn.xhuoapi.ai/nyq0xz.png)

Если вы еще не вошли в систему или не зарегистрированы, вас автоматически перенаправят на страницу входа, пригласив зарегистрироваться и войти в систему. После входа в систему или регистрации вы автоматически вернетесь на текущую страницу.

При первой подаче заявки предоставляется бесплатный лимит, который позволяет бесплатно использовать этот API.

## Основное использование

Теперь вы можете заполнить соответствующие поля на интерфейсе, как показано на рисунке:

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

При первом использовании этого интерфейса нам необходимо заполнить как минимум три поля: одно из них — `authorization`, которое можно выбрать прямо из выпадающего списка. Другой параметр — `model`, `model` — это категория модели, которую мы выбираем для использования с сайта Kimi, здесь у нас в основном есть 7 моделей, подробности можно посмотреть в предоставленных моделях. Последний параметр — `messages`, `messages` — это массив наших вопросов, который представляет собой массив, позволяющий одновременно загружать несколько вопросов, каждый из которых содержит `role` и `content`, где `role` обозначает роль задающего вопрос, мы предоставили три роли: `user`, `assistant`, `system`. Другой `content` — это конкретное содержание нашего вопроса.

Также вы можете заметить, что справа есть соответствующий код вызова, который вы можете скопировать и запустить, или просто нажать кнопку «Try» для тестирования.

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

После вызова мы получаем следующий результат:

```json theme={null}
{
  "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, как показано на рисунке.

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

Можно увидеть, что поле `content` внутри `choices` содержит конкретное содержание ответа Gemini.

## Потоковый ответ

Этот интерфейс также поддерживает потоковые ответы, что очень полезно для веб-интеграции, позволяя веб-странице реализовать эффект отображения по буквам.

Если вы хотите получить потоковый ответ, вы можете изменить параметр `stream` в заголовке запроса на `true`.

Изменение показано на рисунке, однако код вызова должен быть соответствующим образом изменен, чтобы поддерживать потоковые ответы.

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

После изменения `stream` на `true`, API будет возвращать соответствующие JSON-данные построчно, и на уровне кода нам нужно внести соответствующие изменения, чтобы получить построчные результаты.

Пример кода вызова на Python:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/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)
```

Вывод будет следующим:

```json theme={null}
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 приведен ниже:

```javascript theme={null}
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.xhuoapi.ai/v1/kimi/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Пример кода на Java:

```java theme={null}
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.xhuoapi.ai/v1/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`, конкретные примеры нескольких вопросов приведены на изображении ниже:

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

Пример кода на Python:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/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)
```

Загрузив несколько вопросов, вы можете легко реализовать многоуровневый диалог и получить следующий ответ:

```json theme={null}
{
  "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. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.
