API Kimi K3: cách lấy khóa và thực hiện lệnh gọi đầu tiên
Cách dùng API Kimi K3: lấy key, gọi kimi-k3 bằng OpenAI SDK, đặt mức độ suy luận, streaming, gửi hình ảnh và xử lý các lỗi người mới hay gặp nhất.
Đọc dạng MarkdownĐể gọi Kimi K3, bạn cần một khóa API từ một nền tảng phục vụ mô hình này và một yêu cầu với model đặt là kimi-k3. Moonshot AI phục vụ nó trên Kimi API Platform của riêng mình, nơi mô hình được mở khóa sau lần nạp tiền đầu tiên. SeedRouter phục vụ nó với một khóa, trả theo mức dùng, theo định dạng yêu cầu chính thức: trỏ OpenAI SDK tới https://api.seedrouter.ai/v1 và giữ nguyên code của bạn.
Hướng dẫn này dùng SeedRouter; nội dung yêu cầu giống hệt API của chính Kimi.
Làm sao để lấy API key Kimi K3?
- Đăng nhập SeedRouter và mở API keys.
- Tạo một khóa và sao chép nó; khóa chỉ hiển thị một lần.
- Nạp credit khi bạn cần. Tài khoản mới bắt đầu với một khoản số dư miễn phí nhỏ, và không có gói đăng ký.
Lưu khóa trong một biến môi trường như SEEDROUTER_API_KEY, và chỉ dùng nó từ code phía máy chủ.
Gọi Kimi K3 từ Python như thế nào?
Kimi K3 dùng định dạng Chat Completions, nên gói chính thức openai dùng được ngay:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["SEEDROUTER_API_KEY"],
base_url="https://api.seedrouter.ai/v1",
)
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Explain context caching in one sentence."}],
)
print(completion.choices[0].message.content)Câu trả lời nằm trong content. Kimi K3 suy luận trước khi trả lời, và phần suy luận đó được trả về trong reasoning_content của cùng tin nhắn.
Gọi từ Node.js hoặc cURL như thế nào?
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.SEEDROUTER_API_KEY,
baseURL: "https://api.seedrouter.ai/v1",
});
const completion = await client.chat.completions.create({
model: "kimi-k3",
messages: [{ role: "user", content: "Explain context caching in one sentence." }],
});
console.log(completion.choices[0].message.content);curl https://api.seedrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "kimi-k3", "messages": [{"role": "user", "content": "Explain context caching in one sentence."}]}'Cùng một khóa cũng dùng được với Responses API (/v1/responses) và định dạng Anthropic Messages (/v1/messages) cho kimi-k3.
Đặt mức độ suy luận như thế nào?
Kimi K3 luôn suy luận; bạn không thể tắt tính năng này. reasoning_effort quyết định mô hình suy nghĩ bao nhiêu trước khi trả lời:
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Find the bug: def avg(xs): return sum(xs) / len(xs)"}],
reasoning_effort="high",
)| Giá trị | Dùng cho |
|---|---|
low | Các bước nhanh, đơn giản |
high | Phần lớn công việc lập trình và phân tích |
max (mặc định) | Những bài toán khó nhất |
Token suy luận được tính phí như đầu ra và được tính vào max_completion_tokens, mặc định là 131.072 và tối đa là 1.048.576. Trong thử nghiệm của chúng tôi với cùng một câu hỏi, low dùng 25 token đầu ra còn max dùng 146.
Nhận câu trả lời dạng streaming như thế nào?
Thêm stream=True. Phần suy luận đến trước trong delta.reasoning_content, sau đó là câu trả lời trong delta.content. Yêu cầu stream_options={"include_usage": True} để nhận số lượng token trong chunk cuối cùng:
stream = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Write a haiku about latency."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Tôi có thể gửi hình ảnh không?
Có, dưới dạng data URI base64. Kimi K3 không chấp nhận URL hình ảnh công khai; quickstart của nó ghi: "Vision input does not support public image URLs" (đầu vào hình ảnh không hỗ trợ URL hình ảnh công khai):
import base64
with open("chart.png", "rb") as f:
image = base64.b64encode(f.read()).decode()
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image}"}},
{"type": "text", "text": "What does this chart show?"},
],
}],
)Có thể gặp những lỗi nào?
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
400 với temperature, top_p, n hoặc một tham số penalty | Kimi K3 cố định chúng (1,0, 0,95, 1, 0) | Bỏ chúng ra |
400 với reasoning_effort | Một giá trị khác low, high hoặc max | Dùng một trong ba giá trị |
| 400 với một hình ảnh | URL công khai thay vì data URI | Gửi hình ảnh dạng base64 |
| 401 | Thiếu khóa hoặc sai khóa | Kiểm tra header Authorization |
Lỗi trả về {"error": {"code": ..., "message": "..."}}, và yêu cầu thất bại không bị tính phí.
Câu hỏi thường gặp
API Kimi K3 có tương thích với OpenAI không?
Có. Kimi K3 nhận định dạng Chat Completions và Responses, nên OpenAI SDK dùng được khi chỉ đổi base URL và mô hình. Nó cũng nhận định dạng Anthropic Messages.
Tôi có cần tài khoản Moonshot để dùng Kimi K3 không?
Không, nếu dùng SeedRouter. Bạn đăng nhập SeedRouter, tạo khóa ở đó và thanh toán từ số dư SeedRouter của mình.
Một yêu cầu Kimi K3 tốn bao nhiêu?
Nó được tính phí theo token đầu vào và đầu ra. Hướng dẫn giá Kimi K3 có giá trực tiếp và các ví dụ tính toán.
Danh sách tham số đầy đủ ở đâu?
Tài liệu tham khảo API Kimi K3 liệt kê mọi trường, còn trang Kimi K3 có playground và giá trực tiếp.



