Kimi K2.5 API の使い方

Ashley Innocent

Ashley Innocent

27 1月 2026

Kimi K2.5 API の使い方

開発者は、複雑なマルチモーダル入力を処理し、インテリジェントな出力を提供する、堅牢なAPIをますます求めています。Moonshot AIのKimi K2.5 APIは、テキスト、画像、動画を高度な推論能力で処理できるアプリケーションを可能にする、多用途なツールとして際立っています。このAPIを使えば、コードの視覚的なデバッグから、並列タスク実行のためのエージェントスウォームの編成まで、洗練されたAI駆動型ソリューションを構築できます。

💡
一緒に試してみませんか? Apidogをダウンロードして、Kimi K2.5 API呼び出しを視覚的にテストしましょう。Apidogを使えば、リクエストの設定、レスポンスの検査、認証問題のデバッグ、そして本番環境対応のコードの生成を、定型コードを書くことなくすべて行うことができます。これは、K2.5の機能をコードにコミットする前に試す最も速い方法です。
ボタン

Kimi K2.5とは?

Kimi K2.5は、Moonshot AIの最も先進的なオープンソースのマルチモーダルモデルであり、Kimi-K2-Baseアーキテクチャの上に、約15兆の視覚とテキストの混合トークンで継続的な事前学習を通じて構築されています。前身とは異なり、K2.5は視覚と言語の理解を高度なエージェント機能とシームレスに統合しており、AI駆動型アプリケーションを構築する開発者にとって特に強力なものとなっています。

image-314.png

このモデルは、他のAI APIとは一線を画すいくつかの画期的な機能を導入しています。そのネイティブなマルチモーダリティとは、後付けで視覚機能を追加するのではなく、視覚言語トークンで最初から事前学習されていることを意味します。このアプローチにより、視覚知識、クロスモーダル推論、視覚入力に基づいたエージェントツールの使用において優れたパフォーマンスを発揮します。

開発者にとってKimi K2.5が重要な理由:

主な機能と能力

ネイティブマルチモーダルインテリジェンス

K2.5は、視覚知識、クロスモーダル推論、および視覚入力に基づいたエージェントツールの使用において優れています。これは単なる画像認識ではなく、複雑な意思決定に役立つ視覚的コンテキストの深い理解です。

ビジョンによるコーディング

K2.5の際立った能力の一つは、視覚的仕様からコードを生成することです。UIデザインのモックアップを指示するだけで、機能的なフロントエンドコードを生成できます。ビデオワークフローを見せれば、視覚データ処理のためのツールを調整できます。これは特に以下の点で価値があります。

vision.gif

エージェントスウォームアーキテクチャ

K2.5は、単一エージェントのスケーリングから、自己指向的で協調的なスウォームのような実行スキームへと移行します。複雑なタスクに直面したとき、K2.5は以下のことができます。

  1. 問題を並列サブタスクに分解する
  2. ドメイン固有のエージェントを動的にインスタンス化する
  3. 複数のエージェント間の実行を調整する
  4. 結果を一貫性のある出力に統合する
image-316.png

このアーキテクチャにより、K2.5は、包括的なコードリファクタリング、複数ファイルにわたるドキュメント生成、複雑なデータ分析パイプラインなど、単一エージェントシステムでは圧倒されるようなタスクを処理できます。

ベンチマーク性能

image-315.png

Kimi K2.5 APIの利用開始

ステップ1: Moonshot AIアカウントの作成

platform.moonshot.ai にアクセスし、アカウントを登録します。登録プロセスは簡単です。

  1. 「Sign Up」または「Register」をクリックします
  2. メールアドレスを入力し、パスワードを作成します
  3. メールアドレスを確認します
  4. 必要なプロファイル情報を入力します
image-317.png

ステップ2: APIキーの生成

ログイン後:

  1. ダッシュボードのAPIキーセクションに移動します
  2. 「Create New API Key」をクリックします
  3. キーにわかりやすい名前を付けます(例:「kimi-k2-5-development」)
  4. APIキーをコピーし、安全に保管してください — 二度と表示されません
image-318.png

セキュリティのヒント: APIキーをバージョン管理システムにコミットしないでください。環境変数またはシークレットマネージャーを使用してください。

ステップ3: 環境設定

Pythonの場合:

pip install --upgrade 'openai>=1.0'

Node.jsの場合:

npm install openai@latest

ステップ4: APIキーの設定

APIキーを環境変数として設定します。

macOS/Linux:

export MOONSHOT_API_KEY="your-api-key-here"

Windows (PowerShell):

[System.Environment]::SetEnvironmentVariable("MOONSHOT_API_KEY", "your-api-key-here", "User")

Windows (コマンドプロンプト):

setx MOONSHOT_API_KEY "your-api-key-here"

Pythonコード例

基本的なチャット補完

Kimi K2.5を始めるための簡単な例です。

import os
from openai import OpenAI

# Moonshot AIエンドポイントでクライアントを初期化
client = OpenAI(
    api_key=os.environ.get("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.ai/v1",
)

# チャット補完を作成
response = client.chat.completions.create(
    model="kimi-k2.5-preview",
    messages=[
        {
            "role": "system",
            "content": "あなたはMoonshot AIによって開発されたAIアシスタントKimiです。あなたは親切で、無害で、正直です。"
        },
        {
            "role": "user",
            "content": "ニューラルネットワークにおけるMixture-of-Expertsアーキテクチャの概念を説明してください。"
        }
    ],
    temperature=0.6,
    max_tokens=2048,
)

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

ストリーミングレスポンス

リアルタイムアプリケーションでは、ストリーミングを使用してレスポンスが生成され次第表示します。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.ai/v1",
)

# レスポンスをストリームする
stream = client.chat.completions.create(
    model="kimi-k2.5-preview",
    messages=[
        {"role": "user", "content": "二分探索を実装するPython関数を書いてください。"}
    ],
    stream=True,
    temperature=0.3,
)

# ストリームを処理する
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

多ターン会話

複数回のやり取りでコンテキストを維持します。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.ai/v1",
)

conversation_history = [
    {"role": "system", "content": "あなたは親切なコーディングアシスタントです。"}
]

def chat(user_message):
    conversation_history.append({"role": "user", "content": user_message})

    response = client.chat.completions.create(
        model="kimi-k2.5-preview",
        messages=conversation_history,
        temperature=0.6,
    )

    assistant_message = response.choices[0].message.content
    conversation_history.append({"role": "assistant", "content": assistant_message})

    return assistant_message

# 会話例
print(chat("PythonでREST APIを作成するにはどうすればよいですか?"))
print(chat("それに認証を追加する方法を教えてください。"))
print(chat("レート制限についてはどうですか?"))

非同期実装

高性能アプリケーションには、async/awaitを使用します。

import os
import asyncio
from openai import AsyncOpenAI

async def main():
    client = AsyncOpenAI(
        api_key=os.environ.get("MOONSHOT_API_KEY"),
        base_url="https://api.moonshot.ai/v1",
    )

    # 複数のリクエストを同時に実行
    tasks = [
        client.chat.completions.create(
            model="kimi-k2.5-preview",
            messages=[{"role": "user", "content": f"What is {topic}?"}],
        )
        for topic in ["REST API", "GraphQL", "gRPC"]
    ]

    responses = await asyncio.gather(*tasks)

    for response in responses:
        print(response.choices[0].message.content[:200])
        print("-" * 50)

asyncio.run(main())

JavaScript/Node.jsの例

基本的なチャット補完

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.MOONSHOT_API_KEY,
  baseURL: 'https://api.moonshot.ai/v1',
});

async function chat(userMessage) {
  const response = await client.chat.completions.create({
    model: 'kimi-k2.5-preview',
    messages: [
      {
        role: 'system',
        content: 'あなたは親切なAIアシスタントKimiです。',
      },
      {
        role: 'user',
        content: userMessage,
      },
    ],
    temperature: 0.6,
  });

  return response.choices[0].message.content;
}

// 使用法
const answer = await chat('JavaScriptで二分探索木を実装するにはどうすればよいですか?');
console.log(answer);

Node.jsでのストリーミング

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.MOONSHOT_API_KEY,
  baseURL: 'https://api.moonshot.ai/v1',
});

async function streamChat(userMessage) {
  const stream = await client.chat.completions.create({
    model: 'kimi-k2.5-preview',
    messages: [{ role: 'user', content: userMessage }],
    stream: true,
  });

  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content;
    if (content) {
      process.stdout.write(content);
    }
  }
}

await streamChat('マイクロサービスアーキテクチャについて説明してください。');

Fetch APIの使用 (ブラウザ/エッジ関数)

async function callKimiAPI(prompt) {
  const response = await fetch('https://api.moonshot.ai/v1/chat/completions', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.MOONSHOT_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: 'kimi-k2.5-preview',
      messages: [{ role: 'user', content: prompt }],
      temperature: 0.6,
    }),
  });

  const data = await response.json();
  return data.choices[0].message.content;
}

// 使用法
const result = await callKimiAPI('API設計のベストプラクティスは何ですか?');
console.log(result);

ApidogでKimi K2.5 APIをテストする

AI APIを効果的にテストするには、リクエスト/レスポンス構造の理解、ストリーミングの処理、認証の管理、および問題のデバッグが必要です。Apidogは、Kimi K2.5との連携を簡単にするAPI開発のための包括的なソリューションを提供します。

image-319.png

ApidogでのKimi K2.5の設定

ステップ1: 新しいプロジェクトを作成する

  1. Apidogを開き、「Kimi K2.5 Integration」という名前の新しいプロジェクトを作成します
  2. これにより、Kimi関連のすべてのエンドポイントが一箇所に整理されます

ステップ2: 環境変数を設定する

  1. 環境設定に移動します
  2. 新しい環境変数を追加します。
image-321.png

ステップ3: チャット補完エンドポイントを作成する

  1. 新しいPOSTリクエストを追加します
  2. URL: https://api.moonshot.ai/v1/chat/completions
  3. ヘッダー:
image-322.png

ステップ4: リクエストボディを設定する

{
  "model": "kimi-k2.5-preview",
  "messages": [
    {
      "role": "system",
      "content": "あなたは親切なAIアシスタントです。"
    },
    {
      "role": "user",
      "content": "こんにちは、今日はどのようにサポートできますか?"
    }
  ],
  "temperature": 0.6,
  "max_tokens": 2048,
  "stream": false
}

Apidogでのデバッグ

Apidogの視覚的なインターフェースは、以下の点で役立ちます。

自動テストの作成

Apidogのテストランナーを使用すると、Kimi K2.5の統合を検証できます。

// Apidogでのレスポンス後テストスクリプト
pm.test("レスポンスステータスは200", function () {
    pm.response.to.have.status(200);
});

pm.test("レスポンスには選択肢が含まれる", function () {
    const response = pm.response.json();
    pm.expect(response.choices).to.be.an('array');
    pm.expect(response.choices.length).to.be.greaterThan(0);
});

pm.test("レスポンスコンテンツは空ではない", function () {
    const response = pm.response.json();
    pm.expect(response.choices[0].message.content).to.not.be.empty;
});

ツール呼び出しとエージェント機能

Kimi K2.5の最も強力な機能の1つは、外部ツールを呼び出す能力です。これにより、外部システムと連携できる洗練されたAIエージェントを構築できます。

ツールの定義

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.ai/v1",
)

# 利用可能なツールを定義
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "場所の現在の天気を取得",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "都市と国、例: 'ロンドン、英国'"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "温度単位"
                    }
                },
                "required": ["location"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "search_database",
            "description": "データベースで情報を検索",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "検索クエリ"
                    },
                    "limit": {
                        "type": "integer",
                        "description": "結果の最大数"
                    }
                },
                "required": ["query"]
            }
        }
    }
]

# ツールを使ってリクエストを作成
response = client.chat.completions.create(
    model="kimi-k2.5-preview",
    messages=[
        {"role": "user", "content": "東京の天気はどうですか?"}
    ],
    tools=tools,
    tool_choice="auto",
)

# ツール呼び出しを処理
if response.choices[0].message.tool_calls:
    for tool_call in response.choices[0].message.tool_calls:
        print(f"ツール: {tool_call.function.name}")
        print(f"引数: {tool_call.function.arguments}")

ツール呼び出しの実行

import json

def execute_tool_call(tool_call):
    """ツール呼び出しを実行し、結果を返す。"""
    name = tool_call.function.name
    args = json.loads(tool_call.function.arguments)

    if name == "get_weather":
        # 天気API呼び出しをシミュレート
        return json.dumps({
            "location": args["location"],
            "temperature": 22,
            "unit": args.get("unit", "celsius"),
            "condition": "sunny"
        })
    elif name == "search_database":
        # データベース検索をシミュレート
        return json.dumps({
            "results": [
                {"id": 1, "title": "Result 1"},
                {"id": 2, "title": "Result 2"}
            ]
        })

    return json.dumps({"error": "不明なツール"})

# ツール結果で会話を完了
messages = [
    {"role": "user", "content": "東京の天気はどうですか?"}
]

response = client.chat.completions.create(
    model="kimi-k2.5-preview",
    messages=messages,
    tools=tools,
)

if response.choices[0].message.tool_calls:
    # ツール呼び出しを含むアシスタントメッセージを追加
    messages.append(response.choices[0].message)

    # 各ツールを実行し、結果を追加
    for tool_call in response.choices[0].message.tool_calls:
        result = execute_tool_call(tool_call)
        messages.append({
            "role": "tool",
            "tool_call_id": tool_call.id,
            "content": result
        })

    # 最終レスポンスを取得
    final_response = client.chat.completions.create(
        model="kimi-k2.5-preview",
        messages=messages,
        tools=tools,
    )

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

ビジョンとマルチモーダル機能

K2.5のネイティブマルチモーダル機能により、テキストと並行して画像を処理できます。

import os
import base64
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.ai/v1",
)

def encode_image(image_path):
    """画像をbase64にエンコードする。"""
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

# 画像を分析する
image_base64 = encode_image("screenshot.png")

response = client.chat.completions.create(
    model="kimi-k2.5-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "このUIデザインを分析し、改善点を提案してください。"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{image_base64}"
                    }
                }
            ]
        }
    ],
    max_tokens=2048,
)

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

視覚入力からのコード生成

# ワイヤーフレームからコードを生成する
response = client.chat.completions.create(
    model="kimi-k2.5-preview",
    messages=[
        {
            "role": "system",
            "content": "あなたは専門のフロントエンド開発者です。クリーンで本番環境対応のコードを生成してください。"
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "このワイヤーフレームをTailwind CSSスタイリング付きのReactコンポーネントに変換してください。"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{encode_image('wireframe.png')}"
                    }
                }
            ]
        }
    ],
    temperature=0.3,
)

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

料金とレート制限

image-323.png

要点:

ベストプラクティスとヒント

トークン使用量の最適化

# システムプロンプトを効率的に使用する
system_prompt = """あなたは簡潔な技術アシスタントです。
ルール: 1) 簡潔に 2) コードブロックを使用 3) 形式的な挨拶は省略"""

# 繰り返しコンテキストのキャッシュを有効にする
# Moonshotは類似のプロンプトを自動的にキャッシュします

温度設定

エラー処理

from openai import OpenAI, APIError, RateLimitError

client = OpenAI(
    api_key=os.environ.get("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.ai/v1",
)

def safe_chat(message, retries=3):
    for attempt in range(retries):
        try:
            response = client.chat.completions.create(
                model="kimi-k2.5-preview",
                messages=[{"role": "user", "content": message}],
            )
            return response.choices[0].message.content
        except RateLimitError:
            if attempt < retries - 1:
                time.sleep(2 ** attempt)  # 指数バックオフ
            else:
                raise
        except APIError as e:
            print(f"APIエラー: {e}")
            raise

result = safe_chat("こんにちは、Kimi!")

よくある問題のトラブルシューティング

認証エラー

問題: 401 Unauthorizedエラー

解決策:

  1. APIキーが正しいことを確認する
  2. キーの有効期限が切れていないことを確認する
  3. Authorizationヘッダーの形式が正しいことを確認する: Bearer YOUR_KEY

レート制限

問題: 429 Too Many Requests

解決策:

  1. 指数バックオフを実装する
  2. 資金を追加してティアをアップグレードする
  3. X-RateLimit-Remainingヘッダーを監視する

コンテキスト長超過

問題: リクエストが256Kトークン制限を超過する

解決策:

  1. 長い会話を要約する
  2. スライディングウィンドウアプローチを使用する
  3. 複数のリクエストに分割する

タイムアウトの問題

問題: リクエストがタイムアウトする

解決策:

  1. 長いレスポンスにはストリーミングを使用する
  2. クライアントのタイムアウト設定を増やす
  3. 複雑なプロンプトをより小さなタスクに分割する

Kimi K2.5で構築する準備はできましたか?Apidogをダウンロードして、視覚的なテスト、自動ドキュメント、チームコラボレーション機能でAPI開発ワークフローを効率化し、AI APIの統合をより速く、より信頼性の高いものにしましょう。

ボタン

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる