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

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

Xiaomi MiMo-V2.5-Pro 通过 Serverless API 在 Novita AI 上可用,因此开发者可以使用已验证的模型 ID xiaomimimo/mimo-v2.5-pro,结合 Novita 兼容 OpenAI 的聊天补全端点,用于长上下文文本工作流、推理密集型编码任务、函数调用以及结构化输出实验。

快速设置

如果你已有 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 的 base URL https://api.novita.ai/openai。当前的 Novita AI 聊天补全 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 的聊天补全
Base 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 描述为一个开源的专家混合语言模型,总参数量 1.02 万亿,活跃参数量 42 亿,支持最多 100 万 token 的上下文窗口。将上游模型卡片视为模型系列的有用背景,并使用 Novita AI 模型页面获取 Novita 特定的模型 ID、定价、可用性和端点详情。

何时使用 MiMo-V2.5-Pro

当你的应用程序需要一个托管的文本模型来处理长时间、指令密集型的工作,而不是短小的单轮回答时,MiMo-V2.5-Pro 最有用。适合的评估场景包括:仓库分析、多文件重构计划、长上下文文档合成、智能体规划、工具路由原型和结构化提取任务。

在以下情况下使用它:

  • 在 Novita AI 上需要一个已验证的 1,048,576 token 上下文窗口。
  • 需要高最大输出设置,用于详细计划、代码审查、迁移大纲或多步推理轨迹。
  • 支持函数调用,用于将模型决策路由到应用程序工具中。
  • 支持结构化输出,用于下游服务可解析的类 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 的基于 token 的 serverless 定价。它显示的通用价格为:输入 token 每百万 $2,缓存读取 token 每百万 $0.4,输出 token 每百万 $6。它还按输入长度列出了阶梯定价:

输入长度 每百万 token 输入价格 每百万 token 输出价格 每百万 token 缓存读取价格
1 到 262,143 token $1 $3 $0.2
262,144 到 1,048,575 token $2 $6 $0.4

由于模型页面和定价表可能发生变化,在生产使用前请确认模型页面或定价页面上的当前费率,特别是对于可能应用第二阶梯的长提示。

第一个 API 请求

最简单的首次调用使用 OpenAI SDK,并指定 Novita AI 的 base 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,可以直接调用当前的聊天补全路径:

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 限制为工作流实际需要的数量,并记录 token 使用情况,以便在长上下文提示开始主导成本时能够察觉。

流式传输和长上下文使用说明

Novita AI 聊天补全参考中包含了 streamstream_options 字段,MiMo-V2.5-Pro 模型页面验证了 1,048,576 token 的上下文长度和 131,072 token 的最大输出。将这些限制用作工程上限,而不是默认设置。

对于流式响应:

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 对象时,跟踪提示、补全和总 token 数。

函数调用示例

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": "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 聊天补全参考包含了带有 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": "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,请减少提示中的歧义、降低温度、保持 schema 简洁,并用更短的输入重试。对于生产工作流,在使用之前,请根据你自己的 schema 验证解析后的对象。

成本、延迟和限制注意事项

MiMo-V2.5-Pro 专为长上下文和智能体任务而构建,因此成本控制至关重要。接近上层上下文层的提示可能比短请求昂贵得多,而长输出也会增加补全 token 的成本。Novita AI 模型页面目前列出了阶梯输入/输出定价,因此在自动路由大型任务之前,请估算提示 token 和补全 token。

使用以下控制措施:

  • 设置实际的 max_tokens 上限,而不是默认使用最大输出限制。
  • 仅总结或检索当前任务所需的上下文。
  • 在架构支持的情况下,缓存或重用稳定的上下文。
  • 监控每个特性、用户和工作流的 token 使用情况。
  • 在网络调用周围添加超时和重试。
  • 如果产品不需要在每个请求上都使用 MiMo-V2.5-Pro,则保留一个较小的备用模型用于短任务。

延迟可能因提示长度、输出长度、流模式和服务当前状态而异。对于面向用户的应用程序,在适当时流式传输较长的答案,并设计围绕增量输出的 UI,而不是单个阻塞响应。

故障排除

如果你的第一个 MiMo-V2.5-Pro 请求失败,请首先检查这些项目。

症状 可能的原因 修复方法
认证错误 API 密钥缺失或格式错误 对于 REST 调用,发送 Authorization: Bearer $NOVITA_API_KEY;或向 SDK 客户端传递 api_key
模型未找到 模型 ID 错误 使用 xiaomimimo/mimo-v2.5-pro,与 Novita AI 模型页面上列出的完全一致。
请求路径错误 base 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,降低温度,并验证结果。
意外成本 大量提示、大量输出或上层定价层级 检查当前定价,记录 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:代码仓库编辑、工具调用路由、结构化提取、长上下文摘要以及从模糊指令中恢复。将评估与应用程序的真实提示联系起来,而不是基于通用的基准声明。