Claude Opus 5.5 đã có trên SeedRouter

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?

  1. Đăng nhập SeedRouter và mở API keys.
  2. Tạo một khóa và sao chép nó; khóa chỉ hiển thị một lần.
  3. 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
lowCác bước nhanh, đơn giản
highPhầ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ỗiNguyên nhânCách khắc phục
400 với temperature, top_p, n hoặc một tham số penaltyKimi K3 cố định chúng (1,0, 0,95, 1, 0)Bỏ chúng ra
400 với reasoning_effortMột giá trị khác low, high hoặc maxDùng một trong ba giá trị
400 với một hình ảnhURL công khai thay vì data URIGửi hình ảnh dạng base64
401Thiếu khóa hoặc sai khóaKiể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.

Hướng dẫn liên quan