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

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

> Kimi API guide - Ace Data Cloud

Kimi — это серия AI моделей, выпущенная Moonshot. Рекомендуемая модель `kimi-k3` предназначена для долгосрочного программирования, агентов, сложного вывода и интеллектуальной работы и может быть вызвана через совместимый с OpenAI API Chat Completions.

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

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

Чтобы использовать Kimi Chat Completion API, сначала перейдите в [консоль Ace Data Cloud](https://platform.acedata.cloud/console/applications), чтобы получить ваш API Token и сохранить его на всякий случай.

![](https://cdn.acedata.cloud/5hmkdg.jpg)

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

**Один API Token позволяет вызывать все услуги платформы, не нужно отдельно запрашивать для каждой услуги.** При первом запросе предоставляется бесплатный лимит, который можно использовать бесплатно; при недостатке лимита можно пополнить общий баланс в [консоли](https://platform.acedata.cloud/console/coin).

> 📘 Полная документация: [Kimi Chat Completion API →](https://platform.acedata.cloud/documents/kimi-chat-completions)

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

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

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

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

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

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

Ниже приведен реальный ответ K3, полученный с использованием `reasoning_effort: max` (пропущены неиспользуемые расширенные поля):

```json theme={null}
{
  "id": "msg_2D4Btbg1WgvkNE3tCYkR4xGA",
  "object": "chat.completion",
  "created": 1784466588,
  "model": "kimi-k3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Здравствуйте! Как я могу помочь вам сегодня?"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 86,
    "completion_tokens": 206,
    "total_tokens": 292
  }
}
```

Возвращаемый результат содержит несколько полей, описание которых приведено ниже:

* `id` — ID, сгенерированный для этой задачи диалога, используется для уникальной идентификации этой задачи.
* `model` — выбранная модель Kimi с официального сайта.
* `choices` — информация о ответах Kimi на заданные вопросы.
* `usage` — статистическая информация о токенах для данного вопроса и ответа.

В поле `choices` содержится информация о ответах Kimi, внутри него `choices` — это конкретная информация о ответах Kimi, как показано на изображении.

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

Можно увидеть, что поле `content` внутри `choices` содержит конкретное содержание ответа Kimi; K3 также может вернуть `reasoning_content`, чтобы отразить процесс вывода.

## Интенсивность вывода K3

`kimi-k3` всегда включает вывод. На верхнем уровне тела запроса поддерживается поле `reasoning_effort`, текущее единственное поддерживаемое значение — `max`; если это поле опущено, также используется `max`. Значения `standard`, `high` или другие строки могут быть частично совместимы с более свободным приемом, но не гарантируют изменения поведения вывода, не полагайтесь на это.

```bash theme={null}
curl https://api.acedata.cloud/kimi/chat/completions \
  -H "Authorization: Bearer $ACEDATACLOUD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [{"role": "user", "content": "Проверьте этот код и предложите исправления"}],
    "reasoning_effort": "max"
  }'
```

При использовании OpenAI SDK можно напрямую передать это поле:

```python theme={null}
response = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "Разработайте надежную очередь задач"}],
    reasoning_effort="max",
)
```

При многократных диалогах и вызовах инструментов необходимо передавать полное сообщение assistant из предыдущего раунда в `messages`, включая `reasoning_content` и `tool_calls`.

### Официальные ссылки

* [Thinking Effort](https://platform.kimi.ai/docs/guide/use-thinking-effort): объясняет, что Kimi K3 всегда включает вывод, текущее единственное поддерживаемое значение для `reasoning_effort` — `max`.
* [Model Parameter Reference](https://platform.kimi.ai/docs/api/models-overview): сравнивает параметры вывода K3 и K2, различия в контекстном окне и вызовах инструментов.
* [Create Chat Completion](https://platform.kimi.ai/docs/api/chat): официальные запросы, ответы и определения полей OpenAPI для Chat Completions от Moonshot.

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

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

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

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

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

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

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

```python theme={null}
import requests

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

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

payload = {
    "model": "kimi-k3",
    "messages": [{"role":"user","content":"Здравствуйте"}],
    "reasoning_effort": "max",
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Ниже приведены фрагменты из реального потокового ответа K3 Max, включая начальные, выводные, основные, завершающие и данные о расходах.

```json theme={null}
data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"reasoning_content":"Это"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{"content":"Привет"},"finish_reason":null}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null}

data: {"id":"msg_er7WZjyv2kD3TG2yzbFPu5ZJ","object":"chat.completion.chunk","created":1784466598,"model":"kimi-k3","choices":[],"usage":{"prompt_tokens":172,"completion_tokens":168,"total_tokens":340}}

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-k3",
    "messages": [{"role":"user","content":"Привет"}],
    "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:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "kimi-k3");
jsonObject.put("messages", [{"role":"user","content":"Привет"}]);
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`, конкретные примеры нескольких вопросов приведены на изображении ниже:

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

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

```python theme={null}
import requests

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

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

payload = {
    "model": "kimi-k3",
    "messages": [{"role":"assistant","content":"Привет! Как я могу помочь вам сегодня?"},{"role":"user","content":"Какую модель вы?"}],
    "reasoning_effort": "max"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Загрузив несколько вопросов, вы можете легко реализовать многоуровневый диалог. Вот реальный ответ K3 Max на этот запрос (неиспользуемые расширенные поля опущены):

```json theme={null}
{
  "id": "msg_Rqp8nPGBDHWwBlL4VpxuafOp",
  "object": "chat.completion",
  "created": 1784466628,
  "model": "kimi-k3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Я Кими, ИИ-ассистент, разработанный Moonshot AI (月之暗面). У меня нет конкретного идентификатора версии публичной модели, чтобы поделиться отсюда."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 134,
    "completion_tokens": 346,
    "total_tokens": 480
  }
}
```

Можно увидеть, что информация, содержащаяся в `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"
}
```

## Заключение

С помощью этого документа вы узнали, как использовать Kimi Chat Completion API для реализации обычного диалога, потоковых ответов, многоуровневого диалога, а также как контролировать интенсивность рассуждений K3 с помощью `reasoning_effort`.
