メインコンテンツへスキップ

プロバイダーカタログ

Moonshot Kimi API ガイド

共通のカスタマー向け chat-completion エンドポイントを使用し、現在公開されている Moonshot Kimi のモデル識別子とサービス利用状況を確認できます。

ワークフロー
  1. API 製品を選ぶ推論リクエストとモデル学習のワークフローを区別します。
  2. 仕様を確認する該当する API ドキュメントと OpenAPI リファレンスを使います。
  3. スコープ付きキーを作成するカスタマー API キーを作成し、安全に保管します。
  4. 連携して検証するドキュメントに記載されたリクエストを送り、レスポンスを確認します。
  5. 監視してキーを更新する利用状況を確認し、必要に応じてキーを失効またはローテーションします。

公開中の Moonshot Kimi モデル

有効な場合は、モデルレジストリからモデル名、正確なルーティング識別子、バージョン、推論の利用状況を表示します。識別子が空欄の場合、カタログにルーティング値は公開されていません。モデル名から推測しないでください。

開発者
Moonshot AI
新規顧客の利用可否
利用可能
モデル名正確なモデル識別子バージョン推論の利用状況
Kimi K3.1 Pro kimi-k3.1-pro — 提供中 · 推論に利用可能
Kimi K3.1 Pro Highspeed kimi-k3.1-pro-highspeed — 提供中 · 推論に利用可能
Kimi K3 ルーティング識別子は公開されていません — 公開ルーティング識別子がないため、モデルを直接呼び出せるか確認できません。
Kimi K2.7 Code ルーティング識別子は公開されていません — 公開ルーティング識別子がないため、モデルを直接呼び出せるか確認できません。
Kimi K2.6 ルーティング識別子は公開されていません — 公開ルーティング識別子がないため、モデルを直接呼び出せるか確認できません。
Kimi K2.5 ルーティング識別子は公開されていません — 公開ルーティング識別子がないため、モデルを直接呼び出せるか確認できません。

このプロバイダーの利用

  • アプリケーションを設定する前に、正確な識別子でモデルを選び、ステータスを確認してください。表示名は人が読むためのものです。model フィールドに使えるのは識別子だけです。
  • 各プロバイダーのページには、OpenAI互換とClaude Messagesの例があります。利用するクライアントに合ったプロトコルを選び、要求する機能にモデル自体も対応していることを確認してください。
  • 既存顧客のみが対象のサービスでは、既存アカウントのアクセスを維持してください。公開モデル一覧を、新たにサブスクリプションを開始できる案内と解釈しないでください。

モデル別APIリクエスト例

公開済みのモデル識別子、APIプロトコル、言語を選んでリクエスト例を確認できます。顧客用APIキーは信頼できるサーバー上で管理してください。

プロトコル要件

OpenAI互換リクエストでは、設定済みの顧客用APIベースURL(既定値は https://fusionpointai.com/api/v1)に POST /chat/completions を送信します。推論権限のある顧客用キーを Authorization: Bearer で指定してください。既定の完全なURLは https://fusionpointai.com/api/v1/chat/completions です。

対応機能

現在の OpenAI 互換チャットエンドポイントが扱うのは、同期型のテキストメッセージです。このエンドポイントはストリーミングとツール呼び出しに対応していません。

クライアントのインストール

Python用とNode.js用のクライアントは、別々のパッケージとしてインストールします。

Python: pip install openai anthropic

Node.js: npm install openai @anthropic-ai/sdk

cURL
curl 'https://fusionpointai.com/api/v1/chat/completions' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "kimi-k3.1-pro",
    "messages": [
        {
            "role": "user",
            "content": "Summarize this in one sentence."
        }
    ],
    "temperature": 0.7,
    "max_tokens": 300
}'

リクエストのパターン

APIキーを安全に設定する

推論権限を付与した顧客用APIキーを作成し、シークレット管理ツールまたは環境変数を通じてサーバープロセスに渡します。

  1. サーバー環境に FUSIONPOINTAI_API_KEY を設定します。キーをブラウザー側のコードに埋め込んだり、ソース管理にコミットしたりしないでください。
  2. HTTPSを使用し、キーの利用範囲をアカウントとアプリケーションに必要な推論権限に限定します。
  3. ログ、トレース、サポートへの問い合わせでは Authorization と x-api-key ヘッダーを伏せてください。漏えいの可能性がある場合はキーを失効させます。
Bash
export FUSIONPOINTAI_API_KEY="YOUR_CUSTOMER_API_KEY"

正確なモデル識別子を選ぶ

model フィールドは表示名ではなく、リクエストの振り分けに使う値です。公開中のモデルカタログに掲載された識別子を選んでください。

  1. 推論に利用可能と示された有効なモデルまたはレガシーモデルを選びます。
  2. 句読点やバージョン接尾辞も含め、識別子をそのままコピーします。モデル名からIDを推測しないでください。
  3. 識別子が公開されていない場合は、推測した値で代用せず、カタログへの掲載を待ってください。
Python
model_id = "kimi-k3.1-pro"
# Use this exact identifier with either protocol.

システム指示と複数ターンのメッセージを送る

会話の順序を保ち、選択したプロトコルとモデルでサポートされるロールおよびコンテンツ形式だけを使用してください。

  1. OpenAI互換リクエストでは、system、user、assistant の各メッセージを、文字列コンテンツを持つ順序付きの項目として送信します。
  2. Claude Messages では、プロトコル固有のフィールドを使い、サポート対象の system 指示と user/assistant の各ターンを順番どおりに送ります。
  3. アプリケーションに必要な会話履歴だけを保持し、選択したモデルのコンテキスト上限を守ってください。
Python
response = client.messages.create(
    model="kimi-k3.1-pro",
    max_tokens=512,
    system="Answer in clear, concise German.",
    messages=[
        {"role": "user", "content": "What is an API?"},
        {"role": "assistant", "content": "An API lets software exchange requests and responses."},
        {"role": "user", "content": "Give a practical example."},
    ],
)
for block in response.content:
    if block.type == "text":
        print(block.text)

JSON形式の応答を要求する

アプリケーションで構造化出力が必要な場合は、利用する前に応答が所定のスキーマに適合するか検証してください。

  1. 選択したプロトコルと上流モデルがサポートする構造化出力の設定を使います。
  2. 生成されたJSONは信頼できない入力として扱います。解析後、必須フィールドと型を検証し、不正な出力にも対処してください。
  3. モデルのドキュメントに明記されていない限り、そのモデルとプロトコルの組み合わせがJSONモードに対応すると想定しないでください。
Python
import json

# JSON is generated content, not trusted application input.
response = client.messages.create(
    model="kimi-k3.1-pro", max_tokens=256,
    messages=[{"role": "user", "content": 'Return only JSON with a string field named "summary". Explain an API in one sentence.'}],
)
text = "".join(block.text for block in response.content if block.type == "text")
try:
    result = json.loads(text)
    if not isinstance(result, dict) or not isinstance(result.get("summary"), str):
        raise ValueError("Unexpected response schema")
    print(result["summary"])
except (json.JSONDecodeError, ValueError) as error:
    print("Handle invalid model output:", error)

SSEで出力を逐次受信する

ストリーミングの挙動は選択したプロトコルと上流モデルによって異なります。通常のJSON応答はストリームではありません。

  1. 現在の OpenAI 互換チャットは同期型のテキストを返し、ストリーミングには対応していません。
  2. Claude Messages では、選択した上流モデルが対応する場合に stream モードを使います。プロキシはネイティブのサーバー送信イベントを転送します。
  3. イベントを順次処理し、完了またはエラー時に適切に停止します。途中までの出力を完成した回答として扱わないでください。
Python
# client is the Anthropic client configured above.
with client.messages.stream(
    model="kimi-k3.1-pro", max_tokens=512,
    messages=[{"role": "user", "content": "Explain API authentication."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final_message = stream.get_final_message()
print("\nStop reason:", final_message.stop_reason)

ツール、コンテンツブロック、エラーを扱う

プロトコル固有のデータ構造を保ち、ツール呼び出し、マルチモーダルコンテンツ、失敗時のアプリケーション動作を明確に定義してください。

  1. 現在の OpenAI 互換チャットは、ツール呼び出しにもテキスト以外のコンテンツブロックにも対応していません。
  2. Claude は、選択した上流モデルが対応する場合、ネイティブのコンテンツブロックとツール使用/結果データを保持します。実行前にツール名と引数を検証してください。
  3. HTTPステータスと応答本文を確認し、認証、権限、入力検証、レート制限によるエラーを区別します。一時的なエラーはバックオフを入れて再試行してください。
Python
import json
from datetime import datetime, timezone
from anthropic import APIError

messages = [{"role": "user", "content": "What time is it in UTC?"}]
tools = [{
    "name": "current_utc_time", "description": "Read the current UTC time.",
    "input_schema": {"type": "object", "properties": {}, "additionalProperties": False},
}]
try:
    reply = client.messages.create(model="kimi-k3.1-pro", max_tokens=256, messages=messages, tools=tools)
    results = []
    for block in reply.content:
        if block.type == "tool_use":
            if block.name != "current_utc_time" or block.input != {}:
                raise ValueError("Unapproved tool request")
            results.append({"type": "tool_result", "tool_use_id": block.id,
                            "content": json.dumps({"utc": datetime.now(timezone.utc).isoformat()})})
    if results:
        messages.append({"role": "assistant", "content": reply.content})
        messages.append({"role": "user", "content": results})
        reply = client.messages.create(model="kimi-k3.1-pro", max_tokens=256, messages=messages, tools=tools)
    print("".join(block.text for block in reply.content if block.type == "text"))
except APIError as error:
    # Log status only; never log keys or private prompts.
    print("API request failed:", getattr(error, "status_code", None))

よくある質問

リクエストにモデルの表示名を使えますか?

推論用に公開された正確な識別子だけを使用してください。表示名は振り分け用の値ではありません。未公開の識別子を推測してはいけません。

顧客用キーを設定する環境変数はどれですか?

どちらのプロトコルでも FUSIONPOINTAI_API_KEY を使用します。値は信頼できるサーバー環境で管理し、クライアント側のコードやログには含めないでください。

OpenAIクライアントにはどのURLを指定しますか?

設定済みの顧客用APIベースURLを指定します。既定値は https://fusionpointai.com/api/v1 です。チャット補完のエンドポイントには /chat/completions が追加されます。

Claude SDKとcURLでベースURLが異なるのはなぜですか?

Anthropic SDKは /v1/messages を追加するため、ベースURLには https://fusionpointai.com/api を指定します。HTTPで直接リクエストする場合は、/api/v1/messages まで含む完全なURLを使います。

OpenAI互換チャットはストリーミングやツールに対応していますか?

いいえ。現在のエンドポイントが対応するのは同期型のテキストメッセージのみで、ストリーミングとツール呼び出しは利用できません。

Claudeのすべてのモデルでブロック、ツール、ストリーミングを利用できますか?

いいえ。これらのネイティブ機能が使えるのは、選択した上流モデルが対応している場合です。モデルの機能を確認し、未対応のリクエストも適切に処理してください。

Claude Messages · POST /messages

Claude Messages リクエストでは POST /api/v1/messages を送信します。顧客用キーを x-api-key で送り、anthropic-version に 2023-06-01 を設定してください。Anthropic SDK は /v1/messages を追加するため、ベースURLには https://fusionpointai.com/api を指定します。Bearer 認証も利用できます。

Claude Messages プロキシは、選択した上流モデルが対応する場合、ネイティブのコンテンツブロック、ツールデータ、実際のサーバー送信イベント(SSE)ストリーミングをそのまま扱います。

フィールド型必須制約
model string はい {"minLength":1,"maxLength":160}
max_tokens integer はい {"minimum":1,"maximum":100000}
messages array はい {"minItems":1,"maxItems":100,"items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","maxLength":80}},"additionalProperties":true}}]}}}}
system string | array いいえ {"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object","required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}},"additionalProperties":true}}]}
stream boolean いいえ {"default":false}
temperature number いいえ {"minimum":0,"maximum":1}
top_p number いいえ {"minimum":0,"maximum":1}
top_k integer いいえ {"minimum":0,"maximum":100000}
stop_sequences array いいえ {"items":{"type":"string"}}
tools array いいえ {"items":{"type":"object","additionalProperties":true}}
tool_choice object いいえ {"additionalProperties":true}
thinking object いいえ {"additionalProperties":true}
metadata object いいえ {"additionalProperties":true}
output_config object いいえ {"additionalProperties":true}
service_tier string いいえ []
Claude Messages · 例
{
    "id": "msg_example",
    "type": "message",
    "role": "assistant",
    "model": "kimi-k3.1-pro",
    "content": [
        {
            "type": "text",
            "text": "A concise answer to the supplied question."
        }
    ],
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
        "input_tokens": 12,
        "output_tokens": 10
    }
}
{"type":"error","error":{"type":"authentication_error","message":"Invalid or missing API key."}}

最初のリクエストを送信する

以下のベースURLへHTTPSリクエストを送信します。OpenAI互換のテキストチャットには POST /chat/completions、Claude Messagesには POST /messages を使います。モデルワークベンチでプロトコルを選び、その正確なURLとJSON形式を使用してください。

API ベース URL: https://fusionpointai.com/api/v1

アカウントの API キー設定で、カスタマー API キーを作成または管理します。Bearer トークンとして送信し、信頼できるサーバー上で保管してください。ブラウザーコード、ソース管理、公開ログには含めないでください。

キーには ai:inference スコープと、該当するカスタマーサブスクリプションへのアクセス権が必要です。公開 API キーはアカウントのパスワードではありません。共有しないでください。

以下の例では、登録済みの JSON chat-completion エンドポイントと、OpenAI 互換の Python および Node.js クライアントを使用します。キーは環境変数 FUSIONPOINTAI_API_KEY に保存してください。model の値は、上記に掲載された正確な識別子に限って置き換えてください。

Shell
# Install the client for your application language.
# Python:
python -m pip install openai
# Node.js:
npm install openai

# Bash: enter the key without storing it in shell history.
read -rs -p 'FusionPointAI API key: ' FUSIONPOINTAI_API_KEY
export FUSIONPOINTAI_API_KEY
printf '\n'
# After finishing:
# unset FUSIONPOINTAI_API_KEY
cURL — 例
curl 'https://fusionpointai.com/api/v1/chat/completions' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "kimi-k3.1-pro",
    "messages": [
        {
            "role": "user",
            "content": "Summarize this in one sentence."
        }
    ],
    "temperature": 0.7,
    "max_tokens": 300
}'
Python — 例
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["FUSIONPOINTAI_API_KEY"],
    base_url="https://fusionpointai.com/api/v1",
)

response = client.chat.completions.create(
    model="kimi-k3.1-pro",
    messages=[{"role": "user", "content": "Summarize this in one sentence."}],
    temperature=0.7,
    max_tokens=300,
)
print(response.choices[0].message.content)
Node.js — 例
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.FUSIONPOINTAI_API_KEY,
  baseURL: "https://fusionpointai.com/api/v1",
});

const response = await client.chat.completions.create({
  model: "kimi-k3.1-pro",
  messages: [{ role: "user", content: "Summarize this in one sentence." }],
  temperature: 0.7,
  max_tokens: 300,
});
console.log(response.choices[0].message.content);

OpenAI · リクエストとレスポンスの仕様

エンドポイントは JSON を受け付けます。メッセージは送信順に処理され、各メッセージにはサポート対象の role と文字列の content が必要です。任意の生成パラメーターは、以下の検証上限内で指定してください。レスポンスは choices を含む JSON の chat.completion オブジェクトで、プロバイダーから返される場合はトークン使用量も含まれます。

フィールド型必須制約
modelstringはい文字列、最大 160 文字。公開済みの識別子を指定してください。
messagesarrayはいメッセージ数は 1~100 件です。
messages[].rolestringはい各 role は system、user、assistant のいずれかです。
messages[].contentstringはい各メッセージの content は最大 100,000 文字の文字列です。
temperaturenumberいいえ任意の数値。0~2 の範囲です。
max_tokensintegerいいえ任意の整数。1~100,000 の範囲ですが、選択したモデルの出力上限がこれより低い場合があります。

レスポンスの構造

成功時のレスポンスには id、object (chat.completion)、created、model、choices が含まれます。choice には index、assistant message、finish_reason が含まれます。usage にトークン数が返されることもあります。ゲートウェイの検証を通過したリクエストでも、プロバイダー固有の制限が適用される場合があります。

例 · JSON
{
    "id": "chatcmpl_example",
    "object": "chat.completion",
    "created": 1700000000,
    "model": "kimi-k3.1-pro",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "A concise summary of the supplied text."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 12,
        "completion_tokens": 10,
        "total_tokens": 22
    }
}

アクセス、上限、安全な運用

本番のカスタマーサブスクリプションでは、リクエスト数やトークン使用量はクォータとして計上されません。サンドボックスキーには、公開されている月間利用枠が適用されます。このサブスクリプションに関する説明と、モデルや上流サービスの技術的な制限は別のものです。

  • モデルのコンテキストウィンドウ、最大出力サイズ、対応するリクエスト機能、一時的な上流トラフィック制御はそれぞれ異なります。本番トラフィックを送る前に、プロバイダーとモデルの情報を確認してください。
  • エンドポイントには、該当するスロットル識別単位ごとに毎分 60 リクエストのアプリケーション制限があります。HTTP 429 は一時的な上流トラフィック制御を示す場合もあります。短い間隔で繰り返さず、間隔を空けて再試行してください。
  • HTTPS を使用し、キーはサーバー側で管理してください。推論に必要なスコープだけを付与し、漏えいの可能性があるキーは速やかに失効させてください。
  • Chat Completionsが対応するのは同期型のテキストです。Claude Messagesは、選択したモデルが対応する場合に限り、ネイティブのコンテンツブロック、ツール、SSEを別途サポートします。これらの仕様は他のプロバイダーエンドポイントを対象としません。

プロバイダーへのアクセスとアカウント要件

ai:inference スコープを持ち、このサービスを利用できるアカウントに属するカスタマー API キーで認証してください。カタログには、新規顧客が現在利用可能かどうかが表示されますが、それによってアクセス権が付与されたり、サブスクリプションが作成されたり、アカウントやキーの権限が変更されたりすることはありません。

エラーとトラブルシューティング

エンドポイントが返す検証エラーおよび利用できないプロバイダー応答は、message、type、code を含む JSON エラーオブジェクトになります。検証エラーにはフィールドの詳細が含まれる場合もあります。サポートへの問い合わせに API キーや非公開のプロンプト内容を含めないでください。

chat 操作のリクエスト検証エラーとプロバイダーエラーは、エラーオブジェクトで返されます。一方、認証、スコープ、スロットルのミドルウェアは、トップレベルの message フィールドを返す場合があります。ステータスとレスポンスボディを併せて確認してください。

HTTP ステータス意味と次の対応
400リクエストボディが無効です。必須フィールド、メッセージ数と内容、role の値、temperature、max_tokens を確認してください。
401Bearer キーがないか、無効です。キーが有効で、Authorization ヘッダーに含まれていることを確認してください。
403キーに必要な推論スコープまたはアカウントアクセス権がない可能性があります。キーの権限とサブスクリプションへのアクセスを確認してください。
429リクエスト制限または上流のトラフィック制御が適用されました。送信頻度を下げ、指数バックオフで再試行してください。
500プロバイダーが利用可能な completion を返さなかったか、サービスでエラーが発生しました。慎重に再試行し、サポートには時刻と機密情報を除いたリクエスト ID を伝えてください。

よくある質問

モデルの値に表示名を使えますか?

その文字列と完全に一致する値が、ルーティング識別子として別途公開されている場合に限り使えます。識別子の欄を確認してください。空欄の場合、ここにはルーティング値が公開されていません。

Claude SDKを利用できますか?

はい。モデルワークベンチでClaudeを選び、表示されたベースURLを使ってAnthropic SDKを設定してください。SDKはChat Completionsではなく、ネイティブのMessagesリクエストを送信します。利用可能な機能はモデルごとに異なります。

掲載モデルでエラーになるのはなぜですか?

モデルが利用できない、アカウントまたはキーにアクセス権がない、あるいは上流サービスの技術的な制限が適用されている可能性があります。ステータス、識別子、キーのスコープ、エラーレスポンスを確認してください。

サポートへの問い合わせには何を記載すればよいですか?

プロバイダー、正確なモデル識別子、リクエスト時刻、HTTP ステータス、機密情報を除いたリクエスト ID を記載してください。API キーと機密性の高いプロンプト内容は削除してください。