Xiaomi MiMo-V2.5-Pro APIをNovita AIで使用する方法

Xiaomi MiMo-V2.5-Pro APIをNovita AIで使用する方法

Xiaomi MiMo-V2.5-Pro は、Novita AI で Serverless API を通じて利用可能です。開発者は、確認済みのモデル ID xiaomimimo/mimo-v2.5-pro を、Novita の OpenAI 互換 Chat Completions エンドポイントで呼び出し、長いコンテキストのテキスト処理、推論を多用するコーディングタスク、関数呼び出し、構造化出力の実験などに使用できます。

クイックセットアップ

Novita AI API キーを既に持っており、最初のリクエストへの最短の確認済みパスを求めている場合は、この開始点を使用してください。

pip install openai
export NOVITA_API_KEY="YOUR_NOVITA_API_KEY"
import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="xiaomimimo/mimo-v2.5-pro",
    messages=[
        {
            "role": "system",
            "content": "You are a concise software architecture assistant.",
        },
        {
            "role": "user",
            "content": "Outline a migration plan for moving a Python monolith into services.",
        },
    ],
    max_tokens=2048,
    temperature=0.7,
)

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

現在の Xiaomi MiMo-V2.5-Pro モデルページ では、このモデルが Novita AI Serverless API オプションとしてリストされており、OpenAI 互換のベース URL https://api.novita.ai/openai が示されています。現在の Novita AI chat completions API リファレンス では、REST パスとして /openai/v1/chat/completions が文書化されています。

Xiaomi MiMo-V2.5-Pro とは

Xiaomi MiMo-V2.5-Pro は、テキスト入力・テキスト出力の大規模言語モデルであり、複雑なエージェント型およびソフトウェアエンジニアリングワークフロー向けです。Novita AI での API モデル ID は次のとおりです。

xiaomimimo/mimo-v2.5-pro

Novita AI のモデル一覧では、現在以下の実装詳細が確認されています。

フィールド 現在の値
アクセスパス Serverless API
エンドポイントファミリー OpenAI 互換 Chat Completions
ベースURL https://api.novita.ai/openai
モデルID xiaomimimo/mimo-v2.5-pro
コンテキスト長 1,048,576 トークン
最大出力 131,072 トークン
入力機能 テキスト
出力機能 テキスト
関数呼び出し 対応
構造化出力 対応
推論 対応
Anthropic API 対応

上流では、Xiaomi MiMo-V2.5-Pro Hugging Face モデルカード が MiMo-V2.5-Pro をオープンソースの Mixture-of-Experts 言語モデルと説明しており、総パラメータ数 1.02 兆、アクティブパラメータ数 420 億、最大 100 万トークンのコンテキストウィンドウを備えています。上流のモデルカードはモデルファミリーの背景として有用ですが、Novita AI 特有のモデル ID、料金、可用性、エンドポイントの詳細については Novita AI モデルページを参照してください。

MiMo-V2.5-Pro を使用するタイミング

MiMo-V2.5-Pro は、アプリケーションが短い単一ターンの回答ではなく、長時間実行される指示重視の作業用にホスト型テキストモデルを必要とする場合に最も有用です。適切な評価対象には、リポジトリ分析、複数ファイルのリファクタリング計画、長いコンテキストのドキュメント合成、エージェント計画、ツールルーティングのプロトタイプ、構造化抽出タスクなどが含まれます。

以下の場合に使用してください。

  • Novita AI 上で確認済みの 1,048,576 トークンコンテキストウィンドウが必要な場合。
  • 詳細な計画、コードレビュー、移行概要、マルチステップ推論トレース用の高い最大出力設定が必要な場合。
  • モデルの決定をアプリケーションツールにルーティングするための関数呼び出しサポートが必要な場合。
  • 下流サービスが解析できる JSON 形式の応答を可能にする構造化出力サポートが必要な場合。
  • 既存の SDK パターンを再利用できるよう、OpenAI 互換の Chat Completions が必要な場合。

すべてのタスクにおいて最安または最低レイテンシの選択肢と想定しないでください。短いプロンプト、高スループットの分類、単純なチャットの場合は、すべてのトラフィックを長コンテキストモデルにルーティングする前に、現在のオプションを Novita AI モデルライブラリNovita AI 料金ページ で比較してください。

前提条件

最初のリクエストを行う前に、4 つの準備をしてください。

  1. Novita AI アカウント
  2. NOVITA_API_KEY などの環境変数に保存された Novita AI API キー
  3. OpenAI Python SDK、または OpenAI 互換エンドポイントを呼び出せる HTTP クライアント
  4. xiaomimimo/mimo-v2.5-pro の現在の料金と制限の確認

現在の Novita AI モデルページには、MiMo-V2.5-Pro のトークン単位のサーバーレス料金が表示されています。一般的な表示価格は、入力トークン 100 万につき 2 ドル、キャッシュ読み取りトークン 100 万につき 0.4 ドル、出力トークン 100 万につき 6 ドルです。また、入力長に基づく段階的料金も表示されています。

入力長 入力価格(100万トークンあたり) 出力価格(100万トークンあたり) キャッシュ読み取り価格(100万トークンあたり)
1 ~ 262,144 トークン未満 $1 $3 $0.2
262,144 ~ 1,048,576 トークン未満 $2 $6 $0.4

モデルページや料金表は変更される可能性があるため、本番環境で使用する前に、特に長いプロンプトで第 2 ティアが適用される可能性がある場合には、モデルページまたは料金ページで現在のレートを確認してください。

最初の API リクエスト

最も単純な最初の呼び出しは、OpenAI SDK を Novita AI のベース URL と MiMo-V2.5-Pro モデル ID で使用します。

import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="xiaomimimo/mimo-v2.5-pro",
    messages=[
        {"role": "system", "content": "You are a practical coding assistant."},
        {
            "role": "user",
            "content": "Review this API design and list the main reliability risks.",
        },
    ],
    max_tokens=1024,
    temperature=0.7,
)

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

REST をお好みの場合は、現在の Chat Completions パスを直接呼び出してください。

curl --request POST \
  --url https://api.novita.ai/openai/v1/chat/completions \
  --header "Authorization: Bearer $NOVITA_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "xiaomimimo/mimo-v2.5-pro",
    "messages": [
      {
        "role": "system",
        "content": "You are a practical coding assistant."
      },
      {
        "role": "user",
        "content": "Create a checklist for validating a payment webhook integration."
      }
    ],
    "max_tokens": 1024,
    "temperature": 0.7
  }'

本番コードでは、API キーをソース管理外に保管し、max_tokens をワークフローに実際に必要な量に制限し、トークン使用量をログに記録して、長いコンテキストのプロンプトがコストを支配し始めたときに把握できるようにしてください。

ストリーミングと長コンテキスト使用時の注意

Novita AI Chat Completions リファレンスには stream および stream_options フィールドが含まれており、MiMo-V2.5-Pro モデルページでは 1,048,576 トークンのコンテキスト長と 131,072 トークンの最大出力が確認されています。これらの制限をエンジニアリング上の上限として使用し、デフォルト設定にしないでください。

ストリーミング応答の例:

import os
from openai import OpenAI

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

stream = client.chat.completions.create(
    model="xiaomimimo/mimo-v2.5-pro",
    messages=[
        {"role": "system", "content": "You write concise engineering plans."},
        {
            "role": "user",
            "content": "Draft a step-by-step rollback plan for a failed database migration.",
        },
    ],
    max_tokens=2048,
    temperature=0.7,
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="")

長いコンテキストのプロンプトでは、以下のプラクティスを守ってください。

  • タスク、出力形式、停止条件を会話の最初のほうに配置する。
  • 無関係なファイルやドキュメントは、明確にラベル付けされたセクションに分割する。
  • モデルに、提供されたコンテキストからセクション名やファイルパスを引用させ、新しい場所をでっち上げさせないようにする。
  • 開発中は小さい max_tokens 値から始め、ワークフローが長い出力を必要とする場合にのみ上限を引き上げる。
  • 応答に usage オブジェクトが含まれている場合は、そこからプロンプト、完了、合計トークンを追跡する。

関数呼び出しの例

MiMo-V2.5-Pro モデルページは関数呼び出しのサポートを確認しており、Chat Completions リファレンスには関数メタデータを含む tools パラメータが含まれています。モデルが内部チケットの参照、アカウント状態の取得、デプロイタスクの作成などのアプリケーションアクションを選択する必要がある場合に使用します。

import json
import os
from openai import OpenAI

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

tools = [
    {
        "type": "function",
        "function": {
            "name": "create_deployment_ticket",
            "description": "Create a deployment follow-up ticket.",
            "parameters": {
                "type": "object",
                "properties": {
                    "service": {
                        "type": "string",
                        "description": "The service that needs follow-up.",
                    },
                    "priority": {
                        "type": "string",
                        "enum": ["low", "medium", "high"],
                    },
                    "summary": {
                        "type": "string",
                        "description": "A short ticket summary.",
                    },
                },
                "required": ["service", "priority", "summary"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    }
]

response = client.chat.completions.create(
    model="xiaomimimo/mimo-v2.5-pro",
    messages=[
        {
            "role": "system",
            "content": "Decide whether the user's deployment note requires a follow-up ticket.",
        },
        {
            "role": "user",
            "content": "Checkout latency increased after the payment-service deploy. Create a high priority follow-up.",
        },
    ],
    tools=tools,
    max_tokens=1024,
    temperature=0.2,
)

message = response.choices[0].message

if message.tool_calls:
    tool_call = message.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    print(args)
else:
    print(message.content)

実際のアプリケーションでは、アクションを実行する前にサーバーサイドでツールの引数を検証してください。関数呼び出しは、モデルから構造化された決定をアプリケーションに提供しますが、認可、入力検証、監査ログ、ロールバック制御を置き換えるものではありません。

構造化出力の例

MiMo-V2.5-Pro モデルページは構造化出力のサポートも確認しており、Novita AI Chat Completions リファレンスには JSON スキーマフィールドを含む response_format が含まれています。モデルに自由形式の散文ではなく、解析可能なデータを返してほしい場合に構造化出力を使用します。

import json
import os
from openai import OpenAI

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

response_format = {
    "type": "json_schema",
    "json_schema": {
        "name": "migration_risk_report",
        "schema": {
            "type": "object",
            "properties": {
                "risk_level": {
                    "type": "string",
                    "enum": ["low", "medium", "high"],
                },
                "main_risks": {
                    "type": "array",
                    "items": {"type": "string"},
                },
                "next_actions": {
                    "type": "array",
                    "items": {"type": "string"},
                },
            },
            "required": ["risk_level", "main_risks", "next_actions"],
            "additionalProperties": False,
        },
        "strict": True,
    },
}

response = client.chat.completions.create(
    model="xiaomimimo/mimo-v2.5-pro",
    messages=[
        {
            "role": "system",
            "content": "Return only a structured migration risk report.",
        },
        {
            "role": "user",
            "content": "We are moving billing jobs from cron to a queue and changing retry behavior.",
        },
    ],
    response_format=response_format,
    max_tokens=1024,
    temperature=0.2,
)

report = json.loads(response.choices[0].message.content)
print(json.dumps(report, indent=2))

テスト中に応答の JSON 解析が失敗した場合は、プロンプトのあいまいさを減らし、温度を下げ、スキーマをコンパクトに保ち、短い入力で再試行してください。本番ワークフローでは、使用する前に解析されたオブジェクトを独自のスキーマに対して検証してください。

コスト、レイテンシ、制限に関する注意

MiMo-V2.5-Pro は長コンテキストおよびエージェント型タスク向けに構築されているため、コスト管理が重要です。上位コンテキスト層に近いプロンプトは、短いリクエストよりも大幅に高価になる可能性があり、長い出力も完了トークンのコストを増加させます。Novita AI モデルページには現在、段階的な入出力価格がリストされているため、大きなジョブを自動ルーティングする前に、プロンプトと完了トークンの両方を見積もってください。

以下の制御を使用してください。

  • デフォルトで最大出力制限を使用するのではなく、実用的な max_tokens 上限を設定する。
  • 現在のタスクに必要なコンテキストのみを要約または取得する。
  • アーキテクチャがサポートする場合、安定したコンテキストをキャッシュまたは再利用する。
  • 機能、ユーザー、ワークフローごとにトークン使用量を監視する。
  • ネットワーク呼び出しの周りにタイムアウトと再試行を追加する。
  • すべてのリクエストで MiMo-V2.5-Pro を必要としない製品の場合は、短いタスク用に小さなフォールバックモデルを維持する。

レイテンシは、プロンプトの長さ、出力の長さ、ストリーミングモード、現在のサービス状況によって異なります。ユーザー向けアプリケーションの場合は、適切な場合に長い回答をストリーミングし、単一のブロッキング応答ではなく、段階的な出力を中心に UI を設計してください。

トラブルシューティング

最初の MiMo-V2.5-Pro リクエストが失敗した場合は、まず以下の項目を確認してください。

症状 考えられる原因 修正方法
認証エラー API キーがない、または不正な形式 REST 呼び出しでは Authorization: Bearer $NOVITA_API_KEY を送信し、SDK クライアントでは api_key を渡す。
モデルが見つからない 誤ったモデル ID Novita AI モデルページにリストされている xiaomimimo/mimo-v2.5-pro を正確に使用する。
リクエストパスエラー ベース URL の混在 OpenAI SDK では https://api.novita.ai/openai、REST では https://api.novita.ai/openai/v1/chat/completions を使用する。
コンテキストまたは出力エラー プロンプトと出力リクエストがモデル制限を超過 合計プロンプト長を現在のコンテキストウィンドウ内に保ち、max_tokens を確認済み最大出力未満に制限する。
ツール呼び出しがない プロンプトがツールを必要としない、またはツールスキーマが不明確 ツールの決定を明示し、関数スキーマを簡潔に保つ。
構造化出力の解析に失敗 スキーマまたはプロンプトが緩すぎる response_format を使用し、必要に応じて strict を設定し、温度を下げ、結果を検証する。
予期しないコスト 大きなプロンプト、大きな出力、または上位の価格層 現在の価格を確認し、トークン使用量をログに記録し、コンテキストまたは最大出力を減らす。

エンドポイントの詳細については、Novita AI Chat Completions API リファレンス を参照してください。モデル固有の制限と価格については、Xiaomi MiMo-V2.5-Pro API およびプレイグラウンドページ を参照してください。

次のステップ

Xiaomi MiMo-V2.5-Pro モデルページ から始め、プレイグラウンドで小さなプロンプトをテストし、同じプロンプトを確認済みのモデル ID で API クライアントに移行してください。代替案を比較する準備ができたら、Novita AI モデルライブラリNovita AI 料金ページ を使用して、現在の価格、コンテキストウィンドウ、出力制限、機能サポートを確認してください。

エージェント型アプリケーションの場合、MiMo-V2.5-Pro を独自のトレース(リポジトリ編集、ツール呼び出しルーティング、構造化抽出、長コンテキスト要約、あいまいな指示からの回復)で評価してください。一般的なベンチマークの主張ではなく、アプリケーションの実際のプロンプトに基づいて評価を実行してください。