如何在 Novita AI 上使用 Xiaomi MiMo-V2.5-Pro API

如何在 Novita AI 上使用 Xiaomi MiMo-V2.5-Pro API

Xiaomi MiMo-V2.5-Pro 現已在 Novita AI 上透過無伺服器 API (Serverless API) 提供,開發者可使用經驗證的模型 ID xiaomimimo/mimo-v2.5-pro,並透過 Novita 的 OpenAI 相容聊天補全端點 (chat completions endpoint) 進行長上下文文字工作流程、推理密集的程式碼任務、函式呼叫 (function calling) 以及結構化輸出 (structured output) 實驗。

快速設定

如果您已經擁有 Novita AI API 金鑰,並希望以最簡短且經過驗證的方式發出第一個請求,可以從此處開始。

pip install openai
export NOVITA_API_KEY="你的_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": "你是一位簡潔的軟體架構助理。",
        },
        {
            "role": "user",
            "content": "制定一個將 Python 大型單體應用遷移為服務的計畫大綱。",
        },
    ],
    max_tokens=2048,
    temperature=0.7,
)

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

目前的 Xiaomi MiMo-V2.5-Pro 模型頁面 將此模型列為 Novita AI 無伺服器 API 選項,並顯示與 OpenAI 相容的基礎 URL https://api.novita.ai/openai。目前的 Novita AI 聊天補全 API 參考文件 則記載 REST 路徑為 /openai/v1/chat/completions

Xiaomi MiMo-V2.5-Pro 是什麼?

Xiaomi MiMo-V2.5-Pro 是一個文字輸入、文字輸出的大型語言模型,適用於複雜的代理型 (agentic) 與軟體工程工作流程。在 Novita AI 上,API 模型 ID 為:

xiaomimimo/mimo-v2.5-pro

Novita AI 模型列表目前驗證了以下實作細節:

欄位 目前值
存取路徑 無伺服器 API
端點家族 OpenAI 相容聊天補全
基礎 URL https://api.novita.ai/openai
模型 ID xiaomimimo/mimo-v2.5-pro
上下文長度 1,048,576 tokens
最大輸出 131,072 tokens
輸入能力 文字
輸出能力 文字
函式呼叫 支援
結構化輸出 支援
推理 支援
Anthropic API 支援

根據 Xiaomi MiMo-V2.5-Pro Hugging Face 模型卡 的說明,MiMo-V2.5-Pro 是一個開源的混合專家 (Mixture-of-Experts) 語言模型,擁有 1.02 兆總參數、420 億活躍參數,以及高達 100 萬 tokens 的上下文視窗。請將上游的模型卡視為了解模型系列的有用背景資訊,並使用 Novita AI 模型頁面來獲取 Novita 專屬的模型 ID、定價、可用性及端點詳細資訊。

何時使用 MiMo-V2.5-Pro

當您的應用程式需要一個託管文字模型來處理長時間執行、指令密集的工作,而非簡短的一次性回答時,MiMo-V2.5-Pro 最為實用。適合的評估場景包括:儲存庫分析、多檔案重構計畫、長上下文文件合成、代理規劃、工具路由原型設計,以及結構化擷取任務。

適合使用的情境包括:

  • 在 Novita AI 上需要經過驗證的 1,048,576 tokens 上下文視窗。
  • 需要較高的最大輸出設定,以產出詳細計畫、程式碼審查、遷移大綱或多步驟推理軌跡。
  • 需要函式呼叫支援,以將模型決策路由至應用程式工具。
  • 需要結構化輸出支援,以產生下游服務可解析的 JSON 格式回應。
  • 需要與 OpenAI 相容的聊天補全,以便重複使用現有的 SDK 模式。

請不要假設它對所有任務都是成本最低或延遲最低的選擇。對於簡短提示、高流量分類或簡單對話,請在將所有流量導向長上下文模型之前,先比較 Novita AI 模型庫Novita AI 定價頁面 中的當前選項。

先決條件

在發出第一個請求之前,請準備以下四項:

  1. 一個 Novita AI 帳戶。
  2. 一個 Novita AI API 金鑰,並儲存在環境變數中(例如 NOVITA_API_KEY)。
  3. OpenAI Python SDK 或其他能呼叫 OpenAI 相容端點的 HTTP 客戶端。
  4. 檢查 xiaomimimo/mimo-v2.5-pro 的當前定價與限制。

目前的 Novita AI 模型頁面顯示 MiMo-V2.5-Pro 的基於 tokens 的無伺服器定價:一般顯示價格為每百萬輸入 tokens $2、每百萬快取讀取 tokens $0.4、每百萬輸出 tokens $6。同時也列出了依輸入長度分級的定價:

輸入長度 每百萬 tokens 輸入價格 每百萬 tokens 輸出價格 每百萬 tokens 快取讀取價格
1 至低於 262,144 tokens $1 $3 $0.2
262,144 至低於 1,048,576 tokens $2 $6 $0.4

由於模型頁面與定價表可能變更,請在正式使用前,特別是當長提示可能觸發第二級定價時,確認模型頁面或定價頁面上的當前費率。

第一個 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": "你是一位實用的程式碼助手。"},
        {
            "role": "user",
            "content": "審查這個 API 設計,並列出主要可靠性風險。",
        },
    ],
    max_tokens=1024,
    temperature=0.7,
)

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

如果您偏好 REST 呼叫,可以直接呼叫目前的聊天補全路徑:

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": "你是一位實用的程式碼助手。"
      },
      {
        "role": "user",
        "content": "建立一個驗證支付 Webhook 整合的檢查清單。"
      }
    ],
    "max_tokens": 1024,
    "temperature": 0.7
  }'

在正式環境程式碼中,請將 API 金鑰保留在原始碼控制之外,將 max_tokens 設定為工作流程實際需要的數量,並記錄 token 用量,以便在長上下文提示開始主導成本時能及時察覺。

串流與長上下文使用注意事項

Novita AI 聊天補全參考文件中包含了 streamstream_options 欄位,而 MiMo-V2.5-Pro 模型頁面驗證了 1,048,576 tokens 的上下文長度與 131,072 tokens 的最大輸出。請將這些限制視為工程上限,而非預設設定。

串流回應範例:

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": "你撰寫簡潔的工程計畫。"},
        {
            "role": "user",
            "content": "草擬一份針對失敗資料庫遷移的逐步回滾計畫。",
        },
    ],
    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 物件中追蹤提示 (prompt)、補全 (completion) 與總 tokens 數(如果回應中包含該物件)。

函式呼叫範例

MiMo-V2.5-Pro 模型頁面驗證了對函式呼叫的支援,聊天補全參考文件也包含了帶有函式元資料的 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": "建立部署後續追蹤票務。",
            "parameters": {
                "type": "object",
                "properties": {
                    "service": {
                        "type": "string",
                        "description": "需要後續追蹤的服務。",
                    },
                    "priority": {
                        "type": "string",
                        "enum": ["low", "medium", "high"],
                    },
                    "summary": {
                        "type": "string",
                        "description": "簡短的票務摘要。",
                    },
                },
                "required": ["service", "priority", "summary"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    }
]

response = client.chat.completions.create(
    model="xiaomimimo/mimo-v2.5-pro",
    messages=[
        {
            "role": "system",
            "content": "決定使用者提供的部署備註是否需要後續追蹤票務。",
        },
        {
            "role": "user",
            "content": "payment-service 部署後結帳延遲增加。建立一個高優先級後續追蹤。",
        },
    ],
    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 聊天補全參考文件包含了帶有 JSON Schema 欄位的 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": "僅回傳結構化的遷移風險報告。",
        },
        {
            "role": "user",
            "content": "我們正在將計費任務從 cron 遷移至佇列,並改變重試行為。",
        },
    ],
    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 解析失敗,請減少提示中的模糊性、降低 temperature、保持 schema 簡潔,並使用較短的輸入重試。在正式工作流程中,請先根據您自己的 schema 驗證解析後的物件,然後再使用它。

成本、延遲與限制注意事項

MiMo-V2.5-Pro 專為長上下文與代理型任務打造,因此成本控制至關重要。接近上限上下文層級的提示可能比簡短請求昂貴許多,而長輸出也會增加補全 token 成本。Novita AI 模型頁面目前列出了分層的輸入/輸出定價,因此在自動路由大量任務之前,請務必同時估算提示與補全 token。

請使用以下控制手段:

  • 設定實際的 max_tokens 上限,而非預設使用最大輸出限制。
  • 僅擷取或摘要目前任務所需的上下文。
  • 在架構允許的情況下快取或重複使用穩定的上下文。
  • 監控每個功能、使用者與工作流程的 token 用量。
  • 為網路呼叫加入逾時與重試機制。
  • 若您的產品並非每個請求都需要 MiMo-V2.5-Pro,則可為簡短任務保留一個較小的備援模型。

延遲可能因提示長度、輸出長度、串流模式與目前服務狀況而異。對於使用者面向的應用程式,請在適當情況下串流較長的回答,並圍繞增量輸出設計 UI,而非單次阻斷式回應。

疑難排解

如果您的第一個 MiMo-V2.5-Pro 請求失敗,請優先檢查以下項目。

症狀 可能原因 解決方法
驗證錯誤 缺少或格式錯誤的 API 金鑰 在 REST 呼叫中傳送 Authorization: Bearer $NOVITA_API_KEY,或將 api_key 傳遞給 SDK 客戶端。
模型未找到 不正確的模型 ID 使用 Novita AI 模型頁面上所列出的確切 ID xiaomimimo/mimo-v2.5-pro
請求路徑錯誤 混合使用基礎 URL 使用 OpenAI SDK 時使用 https://api.novita.ai/openai,使用 REST 時則使用 https://api.novita.ai/openai/v1/chat/completions
上下文或輸出錯誤 提示加上輸出請求超過模型限制 將總提示長度保持在目前上下文視窗內,並將 max_tokens 設定在已驗證的最大輸出之下。
缺少工具呼叫 提示不需要工具,或工具 schema 不明確 明確要求模型做出工具決策,並保持函式 schema 簡潔。
結構化輸出解析失敗 Schema 或提示過於寬鬆 使用 response_format,在適當時設定 strict,降低 temperature,並驗證結果。
意外成本 提示過長、輸出過大或觸發較高定價層級 檢查目前定價、記錄 token 用量,並減少上下文或最大輸出。

如需端點詳細資訊,請參閱 Novita AI 聊天補全 API 參考文件。如需模型專屬限制與定價,請參閱 Xiaomi MiMo-V2.5-Pro API 與 Playground 頁面

下一步

Xiaomi MiMo-V2.5-Pro 模型頁面 開始,先在 Playground 中測試一個簡短提示,然後使用已驗證的模型 ID 將相同的提示移入您的 API 客戶端。當您準備好比較其他選項時,請使用 Novita AI 模型庫Novita AI 定價頁面 檢查目前的定價、上下文視窗、輸出限制與功能支援。

對於代理型應用程式,請根據您自己的軌跡評估 MiMo-V2.5-Pro:儲存庫編輯、工具呼叫路由、結構化擷取、長上下文摘要,以及從模糊指令中恢復的能力。務必將評估與您應用程式的實際提示結合,而非依賴通用的基準測試宣稱。