> ## 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モデルシリーズです。現在推奨されている`kimi-k3`は、長期プログラミング、エージェント、複雑な推論、知識作業に向けて設計されており、OpenAI互換のChat Completions APIを通じて呼び出すことができます。

この文書では、Kimi Chat Completion APIの操作の使用フローについて説明します。これを利用することで、公式Kimiの対話機能を簡単に使用できます。

## 申請フロー

Kimi Chat Completion APIを使用するには、まず[Ace Data Cloudコンソール](https://platform.acedata.cloud/console/applications)にアクセスしてAPIトークンを取得し、保管しておきます。

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

まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。完了後、現在のページに自動的に戻ります。

**1つのAPIトークンでプラットフォームのすべてのサービスを呼び出すことができ、各サービスごとに個別に申請する必要はありません。** 初回申請時には無料のクレジットが付与され、無料で体験できます。クレジットが不足した場合は、[コンソール](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>

このインターフェースを初めて使用する際には、少なくとも3つの内容を入力する必要があります：`authorization`はドロップダウンリストから直接選択できます；`model`はKimiモデルを選択するためのもので、`kimi-k3`の使用を推奨します；`messages`は対話メッセージの配列であり、各メッセージには`role`と`content`が含まれています。`role`は`user`、`assistant`、`system`、`tool`をサポートしています。

また、右側には対応する呼び出しコードが生成されていることに注意してください。コードをコピーして直接実行することも、直接「Try」ボタンをクリックしてテストすることもできます。

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

以下は、`reasoning_effort: max`を使用して得られた実際のK3応答（未使用の拡張フィールドは省略）です：

```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>

`choices`の中の`content`フィールドには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)：Moonshot公式のChat Completionsリクエスト、応答、およびOpenAPIフィールド定義。

## ストリーミング応答

このインターフェースはストリーミング応答もサポートしており、ウェブページとの接続に非常に便利で、ウェブページで逐次表示効果を実現できます。

ストリーミングで応答を返したい場合は、リクエストヘッダー内の`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": "私は Kimi です、Moonshot AI（月の暗面）によって開発された 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": "フェッチに失敗しました"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## 結論

この文書を通じて、Kimi Chat Completion API を使用して通常の対話、ストリーミング応答、多輪対話を実現し、`reasoning_effort` を通じて K3 の推論強度を制御する方法を理解しました。
