跳转到主要内容
POST
/
v1
/
chat
/
completions
创建聊天补全
curl --request POST \
  --url https://api.moonshot.cn/v1/chat/completions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "messages": [
    {
      "role": "system",
      "content": "<string>",
      "name": null,
      "partial": false
    }
  ],
  "model": "kimi-k2.6"
}
'
{
  "id": "<string>",
  "object": "chat.completion",
  "created": 123,
  "model": "<string>",
  "choices": [
    {
      "index": 123,
      "message": {
        "role": "assistant",
        "content": "<string>",
        "tool_calls": [
          {
            "id": "<string>",
            "type": "function",
            "function": {
              "name": "<string>",
              "arguments": "<string>"
            }
          }
        ]
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 123,
    "completion_tokens": 123,
    "total_tokens": 123
  }
}
创建一个对话补全请求,模型将根据输入的消息列表生成回复。
content 字段支持以下两种形式:纯文本字符串
"content": "你好"
对象数组(用于多模态输入)数组中每个元素通过 type 字段区分类型:
"content": [
    { "type": "text", "text": "描述这张图片" },
    { "type": "image_url", "image_url": { "url": "data:image/png;base64,..." } },
    { "type": "video_url", "video_url": { "url": "data:video/mp4;base64,..." } }
]
其中 image_urlvideo_url 也支持直接传入字符串,效果等同于对象形式中的 url 字段:
{ "type": "image_url", "image_url": "data:image/png;base64,..." }

参数说明

数组中每个元素的字段说明如下:
参数名称是否必须说明类型
typerequired内容类型"text" | "image_url" | "video_url"
texttype=text 时必填文本内容string
image_urltype=image_url 时必填用于传输图片,支持对象形式 {"url": "..."} 或直接传入 URL 字符串object | string
video_urltype=video_url 时必填用于传输视频,支持对象形式 {"url": "..."} 或直接传入 URL 字符串object | string
image_url 传入对象时,其字段说明如下:
参数名称是否必须说明类型
urlrequired使用 base64 编码或通过 file id 指定的图片内容string
video_url 传入对象时,其字段说明如下:
参数名称是否必须说明类型
urlrequired使用 base64 编码或通过 file id 指定的视频内容,例如 data:video/mp4;base64,...string
无论使用对象形式(url 字段)还是字符串简写,均支持以下两种格式:
  • base64 编码:data:image/png;base64,...data:video/mp4;base64,...
  • 文件引用:ms://<file_id>
详见使用 Kimi 视觉模型

调用示例

import os
import base64

from openai import OpenAI
from openai.types.chat import ChatCompletion

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

# 对图片进行 base64 编码
with open("您的图片地址", "rb") as f:
    img_base: str = base64.b64encode(f.read()).decode("utf-8")

response: ChatCompletion = client.chat.completions.create(
    model="kimi-k2.6",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/jpeg;base64,{img_base}",
                    },
                },
                {
                    "type": "text",
                    "text": "请描述这个图片",
                },
            ],
        }
    ],
)
print(response.choices[0].message.content)

非流式响应

{
    "id": "cmpl-04ea926191a14749b7f2c7a48a68abc6",
    "object": "chat.completion",
    "created": 1698999496,
    "model": "kimi-k2.6",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "你好,李雷!1+1等于2。如果你有其他问题,请随时提问!"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 19,
        "completion_tokens": 21,
        "total_tokens": 40,
        "cached_tokens": 10
    }
}

流式响应

data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}

...

data: {"id":"cmpl-xxx","object":"chat.completion.chunk","created":1698999575,"model":"kimi-k2.6","choices":[{"index":0,"delta":{},"finish_reason":"stop","usage":{"prompt_tokens":19,"completion_tokens":13,"total_tokens":32}}]}

data: [DONE]
响应示例中的模型名称会根据请求中的 model 参数返回。当使用 kimi-k2.6 模型时,响应中的 "model" 字段将显示为 "kimi-k2.6"

授权

Authorization
string
header
必填

Authorization 请求头需要一个 Bearer 令牌。使用 MOONSHOT_API_KEY 作为令牌。这是一个服务端密钥,请在 API 密钥页面 生成。

请求体

application/json
messages
object[]
必填

包含迄今为止对话的消息列表。每个元素格式为 {"role": "user", "content": "你好"}。role 支持 system、user、assistant 其一,content 不得为空。content 字段可以是 string,也可以是 array[object](用于多模态输入)

model
enum<string>
默认值:kimi-k2.6
必填

模型 ID

可用选项:
kimi-k2.6
max_tokens
integer
已弃用

已弃用,请使用 max_completion_tokens

max_completion_tokens
integer

聊天补全生成的最大 Token 数量。如果不给的话,默认给一个不错的整数比如 1024。如果结果达到最大 Token 数而未结束,finish reason 将为 "length";否则为 "stop"。此值为期望返回的 Token 长度,而非输入加输出的总长度。如果输入加 max_completion_tokens 超出模型上下文窗口,将返回 invalid_request_error。

response_format
object

控制模型输出格式。默认值为 {"type": "text"},即纯文本输出。设置为 {"type": "json_object"} 可启用 JSON 模式,确保输出为合法 JSON 对象(需在 prompt 中引导模型输出 JSON 并指定格式)。设置为 {"type": "json_schema"} 可启用 Structured Output,按指定的 JSON Schema 约束输出结构(推荐,需配合 json_schema 字段使用)。如果您在使用 JSON Schema 时遇到校验问题,欢迎到 walle GitHub Issues (https://github.com/MoonshotAI/walle/issues) 提交反馈。

stop

停用词,完全匹配时将停止输出。匹配到的词本身不会被输出。最多允许 5 个字符串,每个不超过 32 字节

stream
boolean
默认值:false

是否以流式方式返回响应,默认 false

stream_options
object

流式响应选项

tools
object[]

模型可调用的工具列表

Maximum array length: 128
prompt_cache_key
string

用于缓存相似请求的响应以优化缓存命中率。对于 Coding Agent,通常是代表单个会话的 session id 或 task id;退出并恢复会话时应保持不变。对于 Kimi Code Plan,此字段为必填以提高缓存命中率。对于其他多轮对话 Agent,也建议使用此字段

safety_identifier
string

用于检测可能违反使用政策的用户的稳定标识符。应为唯一标识每个用户的字符串。建议对用户名或邮箱进行哈希处理以避免发送可识别信息

thinking
object

控制 kimi-k2.6 模型是否启用思考能力,以及是否完整保留多轮对话中的 reasoning_content。可选参数,默认值为 {"type": "enabled"}。

响应

聊天补全响应

id
string

补全结果的唯一标识符

object
string

对象类型

示例:

"chat.completion"

created
integer

补全创建时的 Unix 时间戳

model
string

用于补全的模型

choices
object[]

补全选项列表

usage
object