Moonshot AI 开发的 Kimi K3,是通过公开 API 可用的最强中文大语言模型之一。它提供 100 万 token 的上下文窗口、有竞争力的定价和 OpenAI 兼容接口——意味着你可以用大概率已经在用的工具,以极小摩擦完成集成。本指南覆盖英语开发者上手所需的全部内容:认证、端点细节,以及 chat completions、流式输出和函数调用的完整 Python 示例。
如果你也在为技术栈评估中国前沿模型,glm5.app 是探索 GLM 5.2(GLM-4-Plus)的好起点——那是 Zhipu AI 的旗舰模型,上下文能力相当。
文档问题:为什么英语开发者会卡住
关于 Kimi K3 API 最常见的抱怨很直白:Moonshot AI 的官方文档主要是中文的。API 控制台、定价页和参数参考都是为中文用户写的。英语开发者只能翻译页面、猜参数名,或从零散的 GitHub 仓库里拼凑示例。
本指南直接补上这个缺口。下面所有信息都来自 Moonshot AI 官方资料,并经过真实 API 测试。你应该能在几分钟内复制这些示例、填入 API key、跑通代码。
前置条件
你需要:
- 在 platform.moonshot.cn 有一个 Moonshot AI 账号
- 从 Moonshot 控制台(「API Keys」下)生成一个 API key
- Python 3.8 或更高
openaiPython SDK(1.x 版本)
安装 SDK:
pip install openai
Kimi K3 API 兼容 OpenAI,所以 openai 包就是合适的客户端——不需要 Moonshot 专用 SDK。
认证:API Key 与 Bearer Token
Kimi K3 用 Bearer token 认证请求。每个 HTTP 请求都必须包含请求头:
Authorization: Bearer YOUR_API_KEY
使用 OpenAI Python SDK 时,通过 api_key 参数传 key。绝不要把 key 硬编码进源文件。把它存到环境变量:
export MOONSHOT_API_KEY="sk-your-key-here"
然后初始化客户端:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("MOONSHOT_API_KEY"),
base_url="https://api.moonshot.cn/v1",
)
base_url 覆盖是相对标准 OpenAI 设置唯一的结构性差异。把它指向 https://api.moonshot.cn/v1,API 其余表面——模型、参数、响应结构——的行为与 OpenAI 文档一致。
端点与模型档位
Kimi K3 API 暴露单一 base:https://api.moonshot.cn/v1。chat completions 端点遵循 OpenAI 惯例:
POST https://api.moonshot.cn/v1/chat/completions
Moonshot 提供几个对应不同上下文窗口大小的模型变体:
| 模型名 | 上下文窗口 | 典型用途 |
|---|---|---|
moonshot-v1-8k | 8,000 tokens | 短任务、问答、低成本调用 |
moonshot-v1-32k | 32,000 tokens | 单文档、中等长度对话 |
moonshot-v1-128k | 128,000 tokens | 长文档、多文档问答 |
kimi-latest | 最高 1,000,000 tokens | 完整代码库、书籍级上下文 |
用 kimi-latest 访问 Kimi K3 的全部能力,包括 1M token 上下文窗口。对上下文可预期很短的、成本敏感的批量负载,moonshot-v1-8k 能减少 token 花费。各模型的当前价格档位请查你的 Moonshot 控制台。
基础 Chat Completion
一个最小可运行示例:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("MOONSHOT_API_KEY"),
base_url="https://api.moonshot.cn/v1",
)
response = client.chat.completions.create(
model="kimi-latest",
messages=[
{
"role": "system",
"content": "You are a helpful software engineering assistant.",
},
{
"role": "user",
"content": "Explain the difference between processes and threads in Python.",
},
],
temperature=0.6,
max_tokens=1024,
)
print(response.choices[0].message.content)
响应对象遵循 OpenAI schema:response.choices[0].message.content 存着助手的回复。用量信息(prompt tokens、completion tokens、total tokens)在 response.usage 里。
流式输出
对交互式应用——聊天机器人、编码助手、实时文档编辑器——流式输出必不可少。用户应该看到 token 边生成边出现,而不是等完整响应。Kimi K3 支持 Server-Sent Events (SSE) 流式:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("MOONSHOT_API_KEY"),
base_url="https://api.moonshot.cn/v1",
)
stream = client.chat.completions.create(
model="kimi-latest",
messages=[
{
"role": "user",
"content": "Walk me through how Python's garbage collector works.",
}
],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)
print() # final newline
stream=True 标志把响应从单个 JSON 载荷切换成部分 chunk 的可迭代对象。每个 chunk 的 delta.content 存着增量文本。这个模式和你写过的任何现有 OpenAI 流式代码直接兼容。
函数调用
函数调用把模型接到你应用的逻辑上。你定义一个或多个带参数 schema 的函数,连同用户消息一起发送,模型决定是否调用函数、用什么参数。Kimi K3 支持标准 OpenAI tools 接口:
import os
import json
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("MOONSHOT_API_KEY"),
base_url="https://api.moonshot.cn/v1",
)
tools = [
{
"type": "function",
"function": {
"name": "search_documents",
"description": "Search an internal knowledge base for relevant documents.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query string.",
},
"max_results": {
"type": "integer",
"description": "Maximum number of results to return.",
"default": 5,
},
},
"required": ["query"],
},
},
}
]
messages = [
{
"role": "user",
"content": "Find me documents about our API rate limit policies.",
}
]
response = client.chat.completions.create(
model="kimi-latest",
messages=messages,
tools=tools,
tool_choice="auto",
)
choice = response.choices[0]
if choice.finish_reason == "tool_calls":
tool_call = choice.message.tool_calls[0]
function_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
print(f"Model requested function: {function_name}")
print(f"Arguments: {arguments}")
# Execute the function in your code, then send the result back:
# tool_result = search_documents(**arguments)
# messages.append(choice.message)
# messages.append({
# "role": "tool",
# "tool_call_id": tool_call.id,
# "content": json.dumps(tool_result),
# })
# final_response = client.chat.completions.create(model="kimi-latest", messages=messages)
两步流程是:
- 发送带工具定义的用户消息;检查
finish_reason。 - 如果
finish_reason == "tool_calls",运行你的函数,把结果追加到messages,再次调用 API 拿到模型的最终自然语言回复。
JSON 模式
当下游代码需要结构化输出时——用于解析、分类或喂给另一个服务——启用 JSON 模式:
response = client.chat.completions.create(
model="kimi-latest",
messages=[
{
"role": "user",
"content": (
'Return a JSON object with keys "title", "author", and "year" '
'for the book "The Pragmatic Programmer".'
),
}
],
response_format={"type": "json_object"},
)
data = json.loads(response.choices[0].message.content)
print(data)
始终在提示词里明确告诉模型你要 JSON。response_format 参数约束输出格式,但当提示词把意图说清楚时效果最好。
错误处理与限流
Moonshot 平台的限流因账号档位而异,在你的平台控制台可见。API 返回标准 HTTP 状态码:
| 状态码 | 含义 |
|---|---|
| 200 | 成功 |
| 401 | API key 无效或缺失 |
| 429 | 超过限流——退避后重试 |
| 500 | 服务器错误——指数退避重试 |
一个实用的限流错误重试辅助函数:
import time
from openai import RateLimitError, APIError
def call_with_retry(client, max_attempts=4, **kwargs):
for attempt in range(max_attempts):
try:
return client.chat.completions.create(**kwargs)
except RateLimitError:
wait_seconds = 2 ** attempt
print(f"Rate limited — retrying in {wait_seconds}s (attempt {attempt + 1})")
time.sleep(wait_seconds)
except APIError as exc:
if exc.status_code == 500 and attempt < max_attempts - 1:
time.sleep(2 ** attempt)
else:
raise
raise RuntimeError("Exceeded maximum retry attempts")
对持续的高吞吐使用,通过 Moonshot 平台的联系表单申请更高限流档位。
Kimi K3 vs GPT-4o:成本与上下文优势
对跑高流量推理的团队来说,Kimi K3 的经济性很有吸引力。每百万输入 token $0.30、每百万输出 token $1.10(撰写本文时的 kimi-latest 价格),输入侧大约是 GPT-4o 的五分之一。对批量文档处理、RAG 管线或任何 prompt token 占账单主导的负载,差距累积得很快。
| 指标 | Kimi K3 (kimi-latest) | GPT-4o |
|---|---|---|
| 输入价格 | $0.30 / M tokens | 约 $2.50 / M tokens |
| 输出价格 | $1.10 / M tokens | 约 $10.00 / M tokens |
| 上下文窗口 | 1,000,000 tokens | 128,000 tokens |
| OpenAI 兼容 | 是 | 是(原生) |
| 流式输出 | 是 | 是 |
| 函数调用 | 是 | 是 |
1M token 上下文窗口是另一个主要的实际优势。把整个代码库、一份长法律合同或一整天的客服日志装进单一上下文,省掉了那些增加复杂度、还可能丢失跨文档关系的分块策略。
对于在 Kimi K3 之外还想探索多个中国 AI API 的团队,glm5.app 上的 GLM 5.2 API 指南 覆盖了 Zhipu AI 的 GLM-4-Plus——它把 1M 上下文窗口与视觉(图像理解)能力结合起来,接口同样兼容 OpenAI,输入 token 价格为 $1.40/M。
全部串起来
现在你有了 Kimi K3 API 的完整可用工具箱:
- 认证:环境变量里的 Bearer token,通过 OpenAI SDK 的
api_key和base_url覆盖传入。 - 模型选择:按模型名选上下文档位,从成本优先的
moonshot-v1-8k到能力最大的kimi-latest。 - Chat completions:带 system 和 user 角色的标准
messages数组。 - 流式输出:
stream=True加 chunk 迭代,实时输出。 - 函数调用:OpenAI schema 的
tools参数;工具执行两步流。 - JSON 模式:
response_format输出结构化结果。 - 错误处理:
429和500码的指数退避。
OpenAI 兼容性意味着你只需改两行——api_key 和 base_url——就能在 Kimi K3 和其他供应商之间切换,这在多模型架构里给你真正的灵活性。
来源
(来源链接)
- Moonshot AI 平台与 API 控制台:https://platform.moonshot.cn
- Moonshot AI API 文档:https://platform.moonshot.cn/docs
- Kimi AI 产品页:https://kimi.moonshot.cn
- OpenAI Python SDK(GitHub):https://github.com/openai/openai-python
- OpenAI Chat Completions API 参考(兼容接口):https://platform.openai.com/docs/api-reference/chat




