跳转到主要内容
三方模型

Kimi-千问 AI 平台

本文档介绍如何调用千问 AI 平台部署的 Kimi 模型推理服务。

Moonshot-Kimi-K2-Instruct、kimi-k2-thinking 将于2026年7月9日下架。推荐转用:qwen3.7-plus、qwen3.7-max、qwen3.7-flash。
模型体验:您可以前往模型体验中心体验 Kimi 模型效果。

服务接入地址

不同的服务接入方式对应不同的 Base URL。
  • OpenAI兼容
  • DashScope
SDK 调用配置的 base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1HTTP 请求地址:POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
前提条件 您需要已开通千问 AI 平台服务并完成 API Key 的创建。如果通过 SDK 调用,需要安装对应 SDK。

快速开始

以下为纯文本输入示例。多模态示例请参见多模态调用示例
  • OpenAI兼容
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
  api_key=os.getenv("DASHSCOPE_API_KEY"),
  base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
  model="kimi-k2.6",
  messages=[{"role": "user", "content": "你是谁"}],
  stream=True,
)

reasoning_content = ""  # 完整思考过程
answer_content = ""     # 完整回复
is_answering = False    # 是否进入回复阶段

print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
  if chunk.choices:
    delta = chunk.choices[0].delta
    # 只收集思考内容
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
      if not is_answering:
        print(delta.reasoning_content, end="", flush=True)
      reasoning_content += delta.reasoning_content
    # 收到content,开始进行回复
    if hasattr(delta, "content") and delta.content:
      if not is_answering:
        print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
        is_answering = True
      print(delta.content, end="", flush=True)
      answer_content += delta.content
返回结果
====================思考过程====================

用户问"你是谁",这是一个关于身份的直接问题。我需要根据我的实际身份如实回答。

我是由月之暗面科技有限公司(Moonshot AI)开发的人工智能助手,我的名字是Kimi。我应该清晰、简洁地介绍自己,包括:
1. 我的身份:AI助手
2. 我的开发者:月之暗面科技有限公司(Moonshot AI)
3. 我的名字:Kimi
4. 我的核心能力:长文本处理、智能对话、文件处理、搜索等

我应该保持友好、专业的语气,避免过于技术化的术语,让普通用户也能理解。同时,我应该强调我是一个AI,没有个人意识、情感或个人经历。

回答结构:
- 直接回答身份
- 说明开发者
- 简要介绍核心能力
- 保持简洁明了
====================完整回复====================

我是由月之暗面科技有限公司(Moonshot AI)开发的AI助手,名叫Kimi。我基于混合专家(MoE)架构,具备超长上下文理解、智能对话、文件处理、代码生成和复杂任务推理等能力。有什么可以帮您的吗?

多模态调用示例

kimi-k2.7-code、kimi-k2.6、kimi-k2.5 支持同时处理文本、图像或视频输入,并可通过 enable_thinking 参数开启思考模式。以下示例展示如何调用多模态能力。

开启或关闭思考模式

kimi-k2.6、kimi-k2.5 属于混合思考模型,模型可以在思考后回复,也可直接回复;通过 enable_thinking 参数控制是否开启思考模式:
  • true:开启思考模式
  • false(默认):关闭思考模式
kimi-k2.7-code 为仅思考模型,始终开启思考模式(enable_thinking 默认为 true,不可关闭),preserve_thinking 默认为 true kimi-k2.6 支持通过 preserve_thinking 参数在多轮对话中传递思考过程。 以下示例展示如何使用图像 URL 并开启思考模式,支持单图输入(主示例)和多图输入(注释代码)。
  • OpenAI兼容
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
  api_key=os.getenv("DASHSCOPE_API_KEY"),
  base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

# 单图传入示例(开启思考模式)
completion = client.chat.completions.create(
  model="kimi-k2.6",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "图中描绘的是什么景象?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
          }
        }
      ]
    }
  ],
  extra_body={"enable_thinking": True}  # 开启思考模式
)

# 输出思考过程
if hasattr(completion.choices[0].message, 'reasoning_content') and completion.choices[0].message.reasoning_content:
  print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")
  print(completion.choices[0].message.reasoning_content)

# 输出回复内容
print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
print(completion.choices[0].message.content)

# 多图传入示例(开启思考模式,取消注释使用)
# completion = client.chat.completions.create(
#     model="kimi-k2.6",
#     messages=[
#         {
#             "role": "user",
#             "content": [
#                 {"type": "text", "text": "这些图描绘了什么内容?"},
#                 {
#                     "type": "image_url",
#                     "image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}
#                 },
#                 {
#                     "type": "image_url",
#                     "image_url": {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"}
#                 }
#             ]
#         }
#     ],
#     extra_body={"enable_thinking":True}
# )
#
# # 输出思考过程和回复
# if hasattr(completion.choices[0].message, 'reasoning_content') and completion.choices[0].message.reasoning_content:
#     print("\n思考过程:\n" + completion.choices[0].message.reasoning_content)
# print("\n完整回复:\n" + completion.choices[0].message.content)

视频理解

视频文件

kimi-k2.7-code、kimi-k2.6、kimi-k2.5 模型通过从视频中提取帧序列进行内容分析。您可以通过以下两个参数控制抽帧策略:
  • fps:控制抽帧频率,每隔 1/fps 秒抽取一帧。取值范围为 [0.1, 10],默认值为 2.0。
    • 高速运动场景:建议设置较高的 fps 值,以捕捉更多细节
    • 静态或长视频:建议设置较低的 fps 值,以提高处理效率
  • max_frames:限制视频抽取帧的上限,默认值和最大值均为 2000。当按 fps 计算的总帧数超过此限制时,系统将自动在 max_frames 内均匀抽帧。此参数仅在使用 DashScope SDK 时可用。
  • OpenAI兼容
  • DashScope
使用 OpenAI SDK 或 HTTP 方式向模型直接输入视频文件时,需要将用户消息中的 "type" 参数设为 "video_url"
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
  api_key=os.getenv("DASHSCOPE_API_KEY"),
  base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
  model="kimi-k2.6",
  messages=[
    {
      "role": "user",
      "content": [
        # 直接传入视频文件时,请将type的值设置为video_url
        {
          "type": "video_url",
          "video_url": {
            "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
          },
          "fps": 2
        },
        {
          "type": "text",
          "text": "这段视频的内容是什么?"
        }
      ]
    }
  ]
)

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

图像列表

当视频以图像列表(即预先抽取的视频帧)传入时,可通过 fps 参数告知模型视频帧之间的时间间隔,这能帮助模型更准确地理解事件的顺序、持续时间和动态变化。模型支持通过 fps 参数指定原始视频的抽帧率,表示视频帧是每隔 1/fps 秒从原始视频中抽取的。
  • OpenAI兼容
  • DashScope
使用 OpenAI SDK 或 HTTP 方式向模型输入图片列表形式的视频时,需要将用户消息中的 "type" 参数设为 "video"
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
  api_key=os.getenv("DASHSCOPE_API_KEY"),
  base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
  model="kimi-k2.6",
  messages=[{"role": "user","content": [
    # 传入图像列表时,用户消息中的"type"参数为"video"
    {"type": "video","video": [
    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
    "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
    "fps":2},
    {"type": "text","text": "描述这个视频的具体过程"},
  ]}]
)

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

传入本地文件

以下示例展示如何传入本地文件。OpenAI 兼容接口仅支持 Base64 编码方式,DashScope 同时支持 Base64 编码和文件路径两种方式。
  • OpenAI兼容
  • DashScope
Base64 编码方式传入需要构建 Data URL
  • Python
  • Node.js
from openai import OpenAI
import os
import base64

#  编码函数: 将本地文件转换为 Base64 编码的字符串
def encode_image(image_path):
  with open(image_path, "rb") as image_file:
    return base64.b64encode(image_file.read()).decode("utf-8")

# 将xxx/eagle.png替换为你本地图像的绝对路径
base64_image = encode_image("xxx/eagle.png")

client = OpenAI(
  api_key=os.getenv('DASHSCOPE_API_KEY'),
  base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
  model="kimi-k2.6",
  messages=[
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {"url": f"data:image/png;base64,{base64_image}"},
        },
        {"type": "text", "text": "图中描绘的是什么景象?"},
      ],
    }
  ],
)
print(completion.choices[0].message.content)


# 以下为传入本地视频文件、本地图像列表的示例

# 【本地视频文件】将本地视频编码为 Data URL 后传入 video_url:
#   def encode_video_to_data_url(video_path):
#       with open(video_path, "rb") as f:
#           return "data:video/mp4;base64," + base64.b64encode(f.read()).decode("utf-8")

#   video_data_url = encode_video_to_data_url("xxx/local.mp4")
#   content = [{"type": "video_url", "video_url": {"url": video_data_url}, "fps": 2}, {"type": "text", "text": "这段视频的内容是什么?"}]

# 【本地图像列表】将多张本地图片分别 Base64 后组成 video 列表传入:
#   image_data_urls = [f"data:image/jpeg;base64,{encode_image(p)}" for p in ["xxx/f1.jpg", "xxx/f2.jpg", "xxx/f3.jpg", "xxx/f4.jpg"]]
#   content = [{"type": "video", "video": image_data_urls, "fps": 2}, {"type": "text", "text": "描述这个视频的具体过程"}]

文件限制

  • 图像限制
  • 视频限制
  • 图像分辨率:
    • 最小尺寸:图像的宽度和高度均须大于 10 像素。
    • 宽高比:图像长边与短边的比值不得超过 200:1
    • 像素上限:推荐将图像分辨率控制在 8K(7680x4320) 以内。超过此分辨率的图像可能因文件过大、网络传输耗时过长而导致 API 调用超时。
  • 支持的图像格式
    • 分辨率在 4K (3840x2160) 以下,支持的图像格式如下:
      图像格式常见扩展名MIME Type
      BMP.bmpimage/bmp
      JPEG.jpe, .jpeg, .jpgimage/jpeg
      PNG.pngimage/png
      TIFF.tif, .tiffimage/tiff
      WEBP.webpimage/webp
      HEIC.heicimage/heic
    • 分辨率处于 4K(3840x2160)8K(7680x4320) 范围,仅支持 JPEG、JPG、PNG 格式。
  • 图像大小:
    • 以公网 URL 和本地路径传入时:单个图像的大小不超过 10MB
    • 以 Base64 编码传入时:编码后的字符串不超过 10MB
  • 支持传入的图片数量:传入多张图像时,图片数量受模型的最大输入的限制,所有图片和文本的总 Token 数必须小于模型的最大输入。

其它功能

模型多轮对话思考模式Function Calling结构化输出联网搜索前缀续写上下文缓存
kimi-k2.7-code
kimi-k2.6
kimi-k2.5
kimi-k2-thinking
Moonshot-Kimi-K2-Instruct

参数默认值

模型enable_thinkingtemperaturetop_ppresence_penaltyfpsmax_frames
kimi-k2.7-codetrue(仅思考模式,不可关闭)1.00.950.022000
kimi-k2.6false思考模式:1.0 / 非思考模式:0.60.950.022000
kimi-k2.5false思考模式:1.0 / 非思考模式:0.60.950.022000
kimi-k2-thinking-1.0----
Moonshot-Kimi-K2-Instruct-0.61.00--
"-" 表示没有默认值,也不支持设置。

模型列表与计费

Kimi 系列模型是由月之暗面公司(Moonshot AI)推出的大语言模型。
  • kimi-k2.7-code:Kimi 迄今最智能的 Coding 模型,在长上下文中更可靠地遵循指令,能以更高的成功率完成编程任务。支持文本、图片与视频输入、思考模式、对话与 Agent 任务。
  • kimi-k2.6:Kimi 最新最智能的模型,具备更强更稳的长程代码编写能力,指令遵循和自我纠错能力显著提升。同时支持文本、图片与视频输入、思考与非思考模式、对话与 Agent 任务。
  • kimi-k2.5:在 Agent、代码生成、视觉理解及一系列通用智能任务上取得开源 SOTA 表现。同时支持图像、视频与文本输入、思考与非思考模式、对话与 Agent 任务。
  • kimi-k2-thinking:仅支持深度思考模式,并通过 reasoning_content 字段展示思考过程,具有卓越的编码和工具调用能力,适用于需要逻辑分析、规划或深度理解的场景。
  • Moonshot-Kimi-K2-Instruct:不支持深度思考,直接生成回复,响应速度更快,适用于需要快速直接回答的场景。
模型上下文长度与价格信息请参见千问 AI 平台控制台 按照模型的输入与输出 Token 数量计费。
思考模式下,思维链按照输出 Token 计费。

错误码

如果模型调用失败并返回报错信息,请参见错误码文档进行解决。