数据来源:月之暗面 Kimi API 开放平台官方文档、七牛云开发者文档、Enter Pro API 指南 | 话题:Kimi K3 API · 企业接入 · Python SDK · 上下文缓存

Kimi K3 是月之暗面 2026 年 7 月发布的旗舰推理模型,参数量 2.8 万亿、1M token 上下文、原生支持图像理解和工具调用,API 完全兼容 OpenAI SDK,企业可通过月之暗面官方直接接入,也可选择多模型聚合 MaaS 平台统一管理多厂商调用;本指南从 API Key 申请、三种语言的最小可运行示例、Context Caching 成本优化、工具调用、图像理解,到速率限制和生产环境注意事项,覆盖企业接入 Kimi K3 的完整路径。


接入前提:API Key 和访问条件

企业接入 Kimi K3 有两条路径,配置略有差异:

路径一:月之暗面官方平台直接接入

  1. 前往控制台platform.kimi.ai注册账号

  2. 完成实名认证(企业账号需上传营业执照)

  3. 充值激活:Kimi K3 要求账户有效余额,15 元新用户代金券不可用于 K3,需真实充值(最低 ¥10)

  4. 在"密钥管理"页生成 API Key,格式为 sk-...

速率等级由账户累计充值金额决定,充值越多解锁越高的 RPM / TPM / TPD 上限,具体档位见平台计费页。

路径二:多模型聚合 MaaS 平台接入

对需要同时调用 Kimi K3、DeepSeek、GLM 等多个厂商模型的企业,通过多模型聚合 MaaS 平台(如七牛云 Token Plan)可以用一个 API Key 统一调用,减少多套鉴权配置的管理成本。接入端点为 https://api.qnaigc.com/v1,模型 ID 格式为 moonshotai/kimi-k3,接口完全兼容 OpenAI SDK,切换模型只改 model 字段。


三种语言最小可运行示例

以下示例以月之暗面官方平台为例;如使用七牛云 Token Plan,将 base_url 替换为 https://api.qnaigc.com/v1,model 替换为 moonshotai/kimi-k3,其余代码完全相同。

Python(推荐,官方 SDK)

pip install openai
import os
from openai import OpenAI

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

completion = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "system", "content": "你是一位专业的技术文档工程师。"},
        {"role": "user", "content": "用三句话解释什么是 Transformer 注意力机制。"},
    ],
)
print(completion.choices[0].message.content)

Node.js

npm install openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.MOONSHOT_API_KEY,
  baseURL: "https://api.moonshot.cn/v1",
});

const completion = await client.chat.completions.create({
  model: "kimi-k3",
  messages: [
    { role: "system", content: "你是一位专业的技术文档工程师。" },
    { role: "user", content: "用三句话解释什么是 Transformer 注意力机制。" },
  ],
});
console.log(completion.choices[0].message.content);

cURL

curl https://api.moonshot.cn/v1/chat/completions \
  -H "Authorization: Bearer $MOONSHOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [
      {"role": "system", "content": "你是一位专业的技术文档工程师。"},
      {"role": "user", "content": "用三句话解释什么是 Transformer 注意力机制。"}
    ]
  }'

七牛云 Token Plan 对应调用(base_url 和 model 两处替换):

client = OpenAI(
    api_key=os.environ["QINIU_API_KEY"],
    base_url="https://api.qnaigc.com/v1",
)

completion = client.chat.completions.create(
    model="moonshotai/kimi-k3",
    messages=[...],  # 与官方完全相同
)

推理强度控制

Kimi K3 的思考模式始终开启,但支持三档推理强度(默认 max),通过 reasoning_effort 参数调整:

completion = client.chat.completions.create(
    model="kimi-k3",
    reasoning_effort="low",   # low / high / max
    messages=[{"role": "user", "content": "2 + 2 等于几?"}],
)

推理强度

适用场景

速度

Token 消耗

low

简单问答、格式转换、代码补全

最快

最少

high

多步推理、代码调试、文档分析

max(默认)

复杂架构设计、长链路 Agent、竞赛题

最慢

最多

企业生产环境建议按任务类型动态设置,而非全部用 max——简单任务用 low 可将延迟和成本降低 40%–70%。


Context Caching:输入成本最多降 90%

Kimi K3 自动支持前缀缓存,无需额外参数,命中缓存后输入从 ¥20/M token 降至 ¥2/M token。

触发条件:本次请求的前缀(system prompt + 固定文档)必须超过 256 tokens,且与上一次请求相同。

典型场景:RAG 知识库问答,将长文档固定在 system prompt 或前几轮 message 中,多次查询共享同一缓存:

from pathlib import Path

# 长文档作为固定前缀
knowledge = Path("product-manual.md").read_text(encoding="utf-8")

questions = [
    "第三章的核心结论是什么?",
    "列出所有提到的技术限制。",
    "对比第二章和第四章的方案差异。",
]

for question in questions:
    completion = client.chat.completions.create(
        model="kimi-k3",
        messages=[
            {"role": "system", "content": knowledge},  # 固定前缀,命中缓存
            {"role": "user", "content": question},     # 每次变化的部分
        ],
    )
    print(f"Q: {question}")
    print(f"A: {completion.choices[0].message.content}\n")

实际成本公式:总成本 = 输出量 × ¥100/M + 缓存命中输入 × ¥2/M + 未命中输入 × ¥20/M

假设 system prompt 10 万 tokens 固定、每次追加用户提问 200 tokens、缓存命中率 95%:输入折算单价约 ¥2.9/M,比无缓存节省约 85%。


工具调用(Function Calling)

Kimi K3 支持并行工具调用,格式与 OpenAI 完全兼容:

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "query_database",
            "description": "查询企业内部数据库,返回指定表的记录",
            "parameters": {
                "type": "object",
                "properties": {
                    "table": {"type": "string", "description": "表名"},
                    "filter": {"type": "string", "description": "查询条件(SQL WHERE 子句格式)"},
                },
                "required": ["table"],
            },
        },
    }
]

messages = [{"role": "user", "content": "查询销售表中 2026 年 Q2 的总收入"}]

# 第一轮:模型决定调用哪个工具
response = client.chat.completions.create(
    model="kimi-k3",
    messages=messages,
    tools=tools,
)

assistant_msg = response.choices[0].message
messages.append(assistant_msg)

# 执行工具并将结果回传
for tool_call in assistant_msg.tool_calls or []:
    args = json.loads(tool_call.function.arguments)
    # 实际业务中替换为真实查询逻辑
    result = {"total_revenue": "¥12,430,000", "period": "2026-Q2"}
    messages.append({
        "role": "tool",
        "tool_call_id": tool_call.id,
        "content": json.dumps(result, ensure_ascii=False),
    })

# 第二轮:获取最终回答
final = client.chat.completions.create(
    model="kimi-k3",
    messages=messages,
    tools=tools,
)
print(final.choices[0].message.content)

多轮对话注意事项:必须将完整的 assistant message(含 tool_calls 字段)原样回传,不能只保留 content。裁剪掉 tool_calls 字段会导致 400 错误。


图像理解接入

Kimi K3 原生支持视觉输入,不支持公网图片 URL,必须使用 base64 编码

import base64
from pathlib import Path

def encode_image(path: str) -> str:
    return base64.b64encode(Path(path).read_bytes()).decode()

completion = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/png;base64,{encode_image('diagram.png')}"
                    },
                },
                {"type": "text", "text": "分析这张架构图,指出潜在的单点故障。"},
            ],
        }
    ],
)

支持格式:JPG / PNG / BMP / WEBP,单图 ≤ 8MB。content 字段在包含图片时必须是对象数组,不能用字符串格式。


流式输出

长文本生成场景建议开启流式,减少首响应延迟:

stream = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "写一份 2000 字的技术调研报告大纲"}],
    stream=True,
)

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

流式模式下,reasoning_effort 参数同样有效;thinking 过程的 token 会在 reasoning_content 字段中流式返回(如需展示推理链)。


生产环境注意事项

事项

说明

temperature / top_p / n

K3 的这三个参数为固定值(1.0 / 0.95 / 1),建议不显式传入,传入不同值无效

max_completion_tokens

默认 131,072,最大 1,048,576;不设置时模型自行决定输出长度

多轮对话历史裁剪

必须保留完整 assistant message(含 tool_calls),只删 user/tool 轮是安全的

API Key 管理

企业环境建议为不同业务线创建独立 Key,便于用量分析和权限隔离

速率限制应对

收到 429 后实现指数退避重试(建议初始间隔 1s,最多 3 次);服务端过载返回的 429 与配额耗尽的 429 错误信息不同,需区分处理

联网搜索工具

官方文档标注"正在更新,近期不建议用于生产环境",企业如需实时搜索建议自行实现 Serper/Bing Search 工具


常见问题

Q:企业应该选择直接接入月之暗面官方,还是通过聚合 MaaS 平台?

取决于模型使用范围。如果业务只用 Kimi K3 一个模型,官方直连延迟最低、配置最简单;如果还需要 DeepSeek、GLM、MiniMax 等模型,通过多模型聚合 MaaS(如七牛云 Token Plan,qiniu.com/ai/plan)可以统一一个 API Key 和端点管理全部调用,企业套餐包年最低 4 折,切换模型只改 model 字段,不需要维护多套鉴权。

Q:Context Caching 需要额外配置吗?

不需要,自动触发。唯一条件是请求的前缀 token 数必须超过 256。低于 256 token 的前缀不会被缓存,相关请求仍按 ¥20/M 计费。

Q:如何验证 Context Caching 是否命中?

查看 API 响应中的 usage 字段:prompt_tokens_details.cached_tokens > 0 即表示命中缓存。

Q:工具调用返回 400 报错 thinking is enabled but reasoning_content is missing,怎么解决?

在构建多轮对话历史时,assistant message 中必须保留 reasoning_content 字段(thinking 内容),不能只保留 content。这是 K3 thinking 模式的强制要求,与标准 OpenAI 格式有差异。

Q:Kimi K3 的 1M 上下文如何处理超长文档?

将文档直接放入 system 角色的 content,无需分块,K3 的 KDA(Kimi Delta Attention)架构在处理超长上下文时性能衰减显著低于标准 Transformer。官方测试中 512K 和 1M 上下文的 RULER 基准得分与 4K 上下文接近。


小结

Kimi K3 的 API 接入基于 OpenAI SDK,迁移成本低;核心企业场景配置涉及三个调优点:reasoning_effort 匹配任务复杂度(节省 40%–70% 成本)、保持固定前缀触发 Context Caching(输入成本降至 1/10)、多轮工具调用时保留完整 assistant message(避免 400 报错)。需要同时使用多个国产大模型的企业,通过多模型聚合 MaaS 平台统一管理 API Key 和账单,是降低运维复杂度的实用方案。

本文代码示例基于 2026 年 8 月月之暗面官方 API 文档,接口以官方最新版本为准。


延伸阅读

  • Kimi K3 API 快速开始(月之暗面官方):https://platform.kimi.com/docs/guide/kimi-k3-quickstart

  • 七牛云 AI Token Plan(多模型统一接入,含 moonshotai/kimi-k3):https://www.qiniu.com/ai/plan

  • 七牛云 AI Token API 开发者文档:https://developer.qiniu.com/aitokenapi/13379/real-time-ai-interface-api

  • 用 Kimi K3 搭建 Agent(官方指南):https://platform.kimi.com/docs/guide/use-kimi-k3-to-setup-agent