Appearance
本页提供 Kimi API 最基础的三类用法:单轮对话(一次请求返回结果)、多轮对话(维护 messages 历史)、流式输出(stream: true 逐步返回)。代码示例覆盖 Python、Node.js 和 cURL。
Kimi API 快速开始
前置准备
- 在控制台申请 API Key
- 安装 OpenAI SDK:
bash
# Python
pip install --upgrade 'openai>=1.0'
# Node.js
npm install openai将 API Key 设置为环境变量:
bash
export MOONSHOT_API_KEY="your-api-key-here"单轮对话
最简单的用法,发送一条消息获取回复:
python
# Python
from openai import OpenAI
client = OpenAI(
api_key="$MOONSHOT_API_KEY",
base_url="https://api.moonshot.cn/v1",
)
completion = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的 AI 助手。"},
{"role": "user", "content": "你好,1+1 等于多少?"}
]
)
print(completion.choices[0].message.content)typescript
// TypeScript / Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.MOONSHOT_API_KEY,
baseURL: "https://api.moonshot.cn/v1",
});
async function main() {
const completion = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [
{ role: "system", content: "你是 Kimi,由 Moonshot AI 提供的 AI 助手。" },
{ role: "user", content: "你好,1+1 等于多少?" }
],
});
console.log(completion.choices[0].message.content);
}
main();bash
# cURL
curl https://api.moonshot.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MOONSHOT_API_KEY" \
-d '{
"model": "kimi-k2.6",
"messages": [
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的 AI 助手。"},
{"role": "user", "content": "你好,1+1 等于多少?"}
]
}'多轮对话
将历史消息一并传入 messages,实现上下文连续:
python
# Python
from openai import OpenAI
client = OpenAI(
api_key="$MOONSHOT_API_KEY",
base_url="https://api.moonshot.cn/v1",
)
history = [
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的 AI 助手。"}
]
def chat(query: str) -> str:
history.append({"role": "user", "content": query})
completion = client.chat.completions.create(
model="kimi-k2.6",
messages=history
)
result = completion.choices[0].message.content
history.append({"role": "assistant", "content": result})
return result
print(chat("地球的自转周期是多少?"))
print(chat("月球呢?")) # 使用上下文记住"自转周期"这个话题踩坑提醒:随着对话进行,每次请求的 token 会线性增加。长对话需要定期裁剪历史(如只保留最近 N 轮),避免超出模型上下文窗口限制或产生过多费用。
流式输出
设置 stream=True,通过 SSE 逐步接收响应,提升用户体验:
python
# Python
from openai import OpenAI
client = OpenAI(
api_key="$MOONSHOT_API_KEY",
base_url="https://api.moonshot.cn/v1",
)
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的 AI 助手。"},
{"role": "user", "content": "讲一个关于程序员的笑话"},
],
stream=True,
)
for chunk in response:
delta = chunk.choices[0].delta
if delta.content:
print(delta.content, end="", flush=True)
print() # 换行typescript
// TypeScript / Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.MOONSHOT_API_KEY,
baseURL: "https://api.moonshot.cn/v1",
});
async function main() {
const stream = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [
{ role: "system", content: "你是 Kimi,由 Moonshot AI 提供的 AI 助手。" },
{ role: "user", content: "讲一个关于程序员的笑话" },
],
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
console.log();
}
main();常见问题
Q: kimi-k2.6 和 moonshot-v1-128k 哪个更适合生产环境?
A: 对于需要多模态(图片/视频)、复杂推理(Thinking 模式)或超长上下文(256K)的场景,用 kimi-k2.6;对参数控制有精细需求(自定义 temperature、top_p 等)的场景,moonshot-v1 系列更灵活。
Q: 流式输出和非流式输出费用一样吗?
A: 一样,计费基准都是 prompt_tokens + completion_tokens 实际消耗量。
Q: messages 中 system 消息必须有吗?
A: 不必须,但推荐始终设置,有助于稳定模型行为。如果不设置,模型会使用默认人格。