Kimi K3 クイックスタート:長コンテキストAPIワークフロー向け

Kimi K3 クイックスタート:長コンテキストAPIワークフロー向け

Kimi K3 は、Novita AI のサーバーレス API を通じて利用可能です。モデル ID は moonshotai/kimi-k3、OpenAI 互換のチャットエンドポイント、1,048,576 トークンのコンテキストウィンドウ、そしてモデルページに記載された最大出力設定 1,048,576 トークンを備えています。このクイックスタートでは、認証、最初のリクエスト送信、レスポンス解析、そして Kimi K3 のトークン料金計画について、大規模アプリケーションに接続する前の手順を解説します。

このクイックスタートを使用するタイミング

すでに OpenAI API 形式を扱うアプリケーションから Kimi K3 をテストしたい場合、このガイドを参照してください。これは、長コンテキストのソフトウェアエンジニアリング、ドキュメント分析、研究、推論ワークフローにおいて、リクエストに通常のチャットプロンプトよりもはるかに多くのコンテキストが含まれる可能性がある場合の実用的な出発点となります。

Kimi K3 の Novita モデルページには、2.8 兆パラメータのモデルで、ネイティブのビジュアル理解と 100 万トークンのコンテキストウィンドウを備えていると記載されています。同じページには、テキスト、画像、動画入力とテキスト出力、さらにサーバーレスアクセス、構造化出力、推論、関数呼び出しがリストされています。これらは、すべての OpenAI SDK 機能がモデル間で同一の動作をすることを前提とするのではなく、意図したリクエスト形状に対して検証すべき機能として扱ってください。

これはベンチマーク比較ではありません。目的は、1 つの認証済みリクエストを動作させ、その後、Kimi K3 があなたのワークロードに適しているかどうかを判断するための十分な運用詳細を提供することです。

ステップ 1: Novita API キーを取得する

Novita AI アカウントを作成または選択し、API キー設定を開き、サーバーサイドで使用するキーを作成します。キーはフロントエンドバンドル、公開リポジトリ、チーム外で共有するノートブック、可能な限りシェル履歴から遠ざけてください。

いずれかのサンプルを実行する前に、キーを環境変数として設定します。

export NOVITA_API_KEY="your_api_key_here"

アカウント設定でサポートされている場合は、プロジェクトキーまたは一時キーを使用してください。公開デモや漏洩の疑いがある場合は、キーをローテーションしてください。

ステップ 2: モデル ID とエンドポイントを確認する

接続情報をまとめて管理し、表示名が実際のモデル識別子を誤って置き換えないようにしてください。

フィールド
モデル ID moonshotai/kimi-k3
ベース URL https://api.novita.ai/openai/v1
チャット完了エンドポイント https://api.novita.ai/openai/v1/chat/completions
コンテキストウィンドウ 1,048,576 トークン
最大出力設定 1,048,576 トークン
入力機能 テキスト、画像、動画
出力機能 テキスト
アクセスタイプ サーバーレス API

Kimi K3 モデルページ が、可用性、現在の制限、機能、料金に関する信頼できる情報源です。モデル設定や価格は変更される可能性があるため、出荷前に再度確認してください。

ステップ 3: 最初のリクエストを送信する

短いテキストのみのリクエストから始めてください。小さなプロンプトを使用すると、認証やルーティングの問題と、アプリケーションレベルのプロンプトの問題を分離しやすくなります。

たとえば、Kimi K3 に短い実装チェックリストを返すように依頼します。

ストリーミング API クライアントにリトライを追加する際の最大のリスクを 3 つ挙げてください。リスクごとに 1 文で返してください。

最初の max_tokens 値は控えめに設定してください。大きな出力許容量は、基本的なリクエスト、レスポンス解析、エラーハンドリングが正しく動作するようになってから初めて有用になります。

ステップ 4: レスポンスを読み取る

OpenAI 互換のレスポンスでは、標準の非ストリーミングチャット完了の場合、アシスタントのテキストは choices[0].message.content に配置されます。リクエストトレーシングやコスト計算が必要な場合は、アプリケーションでレスポンスメタデータと使用量フィールドを保持してください。

本番環境での統合では、少なくとも以下を記録してください。

  • モデル ID とリクエストタイムスタンプ。
  • クライアントまたはレスポンスヘッダーによって返されるプロバイダーリクエスト ID。
  • プロンプトと完了トークンの使用量。
  • リトライ回数と HTTP ステータス。
  • リクエストがテキストのみか、マルチモーダルコンテンツを使用したか。

最初の呼び出しが成功したら、実際のワークロードに近いプロンプト(長いソースファイル、複数のドキュメント、ツールスキーマ、構造化レスポンス契約など)をテストしてください。短いプロンプトの成功は、接続性を確認するものであり、本番品質を保証するものではありません。

ステップ 5: 料金、制限、一般的なエラーを確認する

Novita モデルページには、Kimi K3 のサーバーレス料金として、入力トークン 100 万トークンあたり 3 ドル キャッシュ読み取りトークン 100 万トークンあたり 0.30 ドル 出力トークン 100 万トークンあたり 15 ドル と記載されています。見積もりには、リクエストの両側、リトライ、繰り返し送信するコンテキストの量を含める必要があります。

また、このページには以下のリクエストレート層も記載されています。

1 分あたりのリクエスト数 1 分あたりのトークン数
T1 30 50,000,000
T2 100 50,000,000
T3 1,000 50,000,000
T4 3,000 50,000,000
T5 6,000 50,000,000

適用される層はアカウントによって異なります。すべてのプロジェクトが T1 から始まる、またはすべてのワークロードが表示されている最大レートを使用できるという約束としてテーブルを扱わないでください。

最初の統合でよくあるエラーは次のとおりです。

  • Authorization: Bearer ヘッダーがない、または間違った環境変数を設定している。
  • moonshotai/kimi-k3 の代わりに kimi-k3 やマーケティング名を送信している。
  • SDK のベース URL として https://api.novita.ai/openai を使用しているが、クライアントがバージョン付きのパス .../openai/v1 を期待している。
  • リクエストボディが有効な JSON ではない。
  • アプリケーションが保存または処理できるよりも大きな出力制限を設定している。
  • マルチモーダルリクエストボディがすべての SDK やモデルファミリーで同一であると想定している。

Python の例

環境に OpenAI Python クライアントをインストールし、NOVITA_API_KEY を設定してこのサンプルを実行します。

pip install openai
import os

from openai import OpenAI


client = OpenAI(
    api_key=os.environ["NOVITA_API_KEY"],
    base_url="https://api.novita.ai/openai/v1",
)

response = client.chat.completions.create(
    model="moonshotai/kimi-k3",
    messages=[
        {
            "role": "system",
            "content": "You are a concise engineering assistant.",
        },
        {
            "role": "user",
            "content": "List three risks when adding retries to a streaming API client.",
        },
    ],
    temperature=0.2,
    max_tokens=300,
)

print(response.choices[0].message.content)

この例では、意図的に短い完了を使用しています。コンテキストと出力の予算を増やすのは、アプリケーションに適したタイムアウト、リトライ、ロギング、使用量追跡を追加した後に行ってください。

cURL の例

SDK を使用せずに同じリクエストをテストできます。

payload='{
  "model": "moonshotai/kimi-k3",
  "messages": [
    {
      "role": "system",
      "content": "You are a concise engineering assistant."
    },
    {
      "role": "user",
      "content": "List three risks when adding retries to a streaming API client."
    }
  ],
  "temperature": 0.2,
  "max_tokens": 300
}'

curl --request POST "https://api.novita.ai/openai/v1/chat/completions" \
  --header "Authorization: Bearer $NOVITA_API_KEY" \
  --header "Content-Type: application/json" \
  --data "$payload"

主要パラメータ

パラメータ 制御内容 適切な初期値
model リクエストに応答するホスト型モデル moonshotai/kimi-k3
messages システム、ユーザー、アシスタントの会話ターン 1 つのシステムメッセージと 1 つのユーザーメッセージ
temperature 出力のばらつき 0.2(再現可能なテスト用)
max_tokens 生成される最大出力 300、その後意図的に増やす
stream 出力を段階的に受け取るかどうか デバッグ中は無効のままにする
tools モデルが利用可能な関数定義 基本的なチャットが動作した後に追加する
response_format 構造化出力の要件 使用前に返された JSON を検証する

画像または動画入力の場合は、アプリケーションに追加する前に、モデルと API のドキュメントで現在のリクエスト形式を確認してください。モデルページの機能ラベルは、クライアントライブラリが使用する正確なコンテンツ構造のテストに代わるものではありません。

トラブルシューティング

認証に失敗する

リクエストを実行する同じプロセスで NOVITA_API_KEY が設定されていることを確認してください。ヘッダーが Bearer を使用しており、クエリパラメータや異なる資格情報名を使用していないことを確認してください。

モデルが見つからない

正確な ID moonshotai/kimi-k3 を使用してください。モデル表示名は API モデル ID の有効な代替手段ではありません。

リクエストが拒否される

プロンプトと max_tokens の値を減らし、JSON ボディを検証し、エンドポイントが /openai/v1/chat/completions であることを確認してください。リクエストが画像、動画、ツール、または構造化出力を使用している場合は、それらのフィールドを削除し、1 つずつ追加し直してください。

リクエストが遅い、またはレート制限される

プロンプトと出力トークン数を測定し、不要な繰り返しコンテキストを削減し、リトライ可能なレスポンスに対して制限付き指数バックオフを追加してください。モデルページのテーブルで最も高い層を想定するのではなく、アカウントの現在のレート層を確認してください。

レスポンスが不完全である

終了理由と使用量データを確認してください。max_tokens の値が小さいと、長い回答が途中で止まる可能性があります。値を増やすと、アプリケーションが支払い、処理する出力量も増加します。

FAQ

Kimi K3 にはどのモデル ID を送信すればよいですか?

model フィールドに moonshotai/kimi-k3 を送信してください。

OpenAI クライアントはどのエンドポイントを使用しますか?

SDK のベース URL を https://api.novita.ai/openai/v1 に設定します。チャット完了リクエストは https://api.novita.ai/openai/v1/chat/completions に送信されます。

Kimi K3 のコンテキストウィンドウはどのくらいの大きさですか?

Novita モデルページには、1,048,576 トークンのコンテキストウィンドウと 1,048,576 トークンの最大出力設定が記載されています。デプロイ前にページで更新を確認してください。

Kimi K3 は無料で呼び出せますか?

ここでは無料アクセスについての主張はありません。モデルページにはトークンベースのサーバーレス料金が記載されています。大きなリクエストを送信する前に、アカウントとモデルに表示されている現在の料金を確認してください。

マルチモーダルリクエストから始めるべきですか?

いいえ。認証、エンドポイント選択、レスポンス解析、エラーハンドリングを簡単に検証できるように、小さなテキストのみのリクエストから始めてください。そのパスが安定したら、マルチモーダル入力を追加してください。

推奨記事

ソース