Hướng Dẫn Thực Hành Kimi K3: Các Tham Số Mới & Ma Trận Hỗ Trợ API

29 thg 7, 2026 · AIHubMix · 9 min read

Hướng Dẫn Thực Hành Kimi K3: Các Tham Số Mới & Ma Trận Hỗ Trợ API
Mục Lục Tài Liệu
Lấy mục lục tài liệu đầy đủ tại: https://docs.aihubmix.com/llms.txt
Sử dụng tệp này để khám phá tất cả các trang có sẵn trước khi tìm hiểu thêm.

Hướng dẫn Kimi K3 tháng 7 năm 2026: max reasoning_effort, lịch sử suy nghĩ, tải công cụ động, đầu ra có cấu trúc, tự động lưu trữ, tiền tố một phần và đầu vào hình ảnh.

Hướng dẫn thực hành Kimi K3: chế độ suy nghĩ, tải công cụ động và lưu trữ ngữ cảnh
Bài viết này đề cập đến các tham số mới và ghi chú sử dụng cho Kimi K3. Trên AIHubMix, K3 có sẵn thông qua các API Chat Completions, Responses và Messages tương thích với Claude. Xem thêm: Tài liệu chính thức của nền tảng Moonshot.

Các kết luận và phản hồi mẫu "Đã xác minh" trong mỗi phần đến từ các cuộc gọi thực tế được thực hiện vào ngày 2026-07-17 thông qua các API AIHubMix (Chat Completions / Responses / Messages).

1. Thông Số Mô Hình Tóm Tắt

Mục Giá trị
Cửa sổ ngữ cảnh 1M tokens
Đầu ra tối đa max_completion_tokens mặc định là 131,072, tối đa 1,048,576
Các phương thức đầu vào Văn bản, hình ảnh (đối với đầu vào video, xem tài liệu chính thức của Moonshot)
Chế độ suy nghĩ Bật theo mặc định; reasoning_effort chỉ hỗ trợ "max"
Chuỗi dừng stop cho phép tối đa 5 mục, mỗi mục không dài hơn 32 byte
Đã xác minh: cả hai giới hạn stop đều được xác thực, và vượt quá bất kỳ giới hạn nào sẽ trả về 400; API Messages áp dụng cùng một xác thực cho stop_sequences.

Khi một chuỗi dừng được kích hoạt, API Messages không tuân theo ngữ nghĩa của Anthropic: trong thử nghiệm, stop_reason"end_turn" (thay vì "stop_sequence"), stop_sequencenull, và văn bản hiển thị trước từ dừng có thể trống. Các khách hàng dựa vào hai trường này để phát hiện cắt ngắn nên lưu ý.
# dừng với 6 mục / một mục 33 byte -> HTTP 400
"Yêu cầu không hợp lệ: mảng dừng quá dài. Mong đợi một mảng có độ dài tối đa 5, nhưng nhận được một mảng có độ dài 6"
"Yêu cầu không hợp lệ: chuỗi dừng không được dài hơn 32, nhưng nhận được 33"

2. Chế Độ Suy Nghĩ: reasoning_effort Chỉ Hỗ Trợ max

Suy nghĩ của K3 được bật theo mặc định, và reasoning_effort chỉ hỗ trợ một cấp độ duy nhất: "max".

Các cuộc hội thoại nhiều lượt phải truyền lại lịch sử suy nghĩ nguyên vẹn: theo tài liệu chính thức của Moonshot, K3 được đào tạo với suy nghĩ được bảo tồn, vì vậy trong các cuộc hội thoại nhiều lượt, tin nhắn của trợ lý trước đó phải được truyền lại đầy đủ và không thay đổi (bao gồm cả nội dung suy nghĩ). Thiếu lịch sử suy nghĩ dẫn đến chất lượng đầu ra không ổn định. Nếu bạn sử dụng một khung quản lý phiên hoặc một lớp proxy, hãy xác nhận rằng nội dung suy nghĩ được truyền lại không bị cắt ngắn.

Nội dung suy nghĩ được trả về trong trường reasoning_content của phản hồi; trong các cuộc hội thoại nhiều lượt, hãy truyền lại tin nhắn của trợ lý trước đó (bao gồm reasoning_content) nguyên vẹn.

```text theme={null}
from openai import OpenAI

client = OpenAI(
    base_url="https://aihubmix.com/v1",
    api_key="<AIHUBMIX_API_KEY>",
)

completion = client.chat.completions.create(
    model="kimi-k3",
    reasoning_effort="max",
    messages=[
        {"role": "user", "content": "Một con ốc sên ở đáy một cái giếng 10 mét. Mỗi ngày nó leo lên 3 mét, nhưng mỗi đêm nó trượt xuống 2 mét. Mất bao nhiêu ngày để lên đến đỉnh?"}
    ],
)

print(completion.choices[0].message.reasoning_content)
print(completion.choices[0].message.content)
```

```text theme={null}
# Nhiều lượt: truyền lại tin nhắn của trợ lý trước đó nguyên vẹn
messages = [
    {"role": "user", "content": "Thủ đô của Pháp là gì?"},
    {"role": "assistant", "content": "Paris.", "reasoning_content": "<nội dung_suy_nghĩ từ phản hồi trước>"},
    {"role": "user", "content": "Và dân số của nó?"}
]
```

> **Đã xác minh**: phản hồi trả về `reasoning_content`; sau khi truyền lại tin nhắn của trợ lý trước đó (bao gồm `reasoning_content`) nguyên vẹn, các lượt tiếp theo trả lời bình thường.

Nội dung suy nghĩ được trả về như một mục đầu ra `reasoning`; trong các cuộc hội thoại nhiều lượt, hãy thêm các mục đầu ra của lượt trước (`reasoning` + `message`) vào `input` nguyên vẹn.

```text theme={null}
from openai import OpenAI

client = OpenAI(
    base_url="https://aihubmix.com/v1",
    api_key="<AIHUBMIX_API_KEY>",
)

response = client.responses.create(
    model="kimi-k3",
    input="Trả lời bằng một từ: thủ đô của Pháp",
)

# Các loại mục phản hồi.output quan sát được: ["reasoning", "message"]; văn bản: "Paris"
# Nhiều lượt: input = [tin nhắn người dùng đầu tiên] + phản hồi.output + [tin nhắn người dùng tiếp theo]
# Phản hồi quan sát được ở lượt thứ hai với các mục đầu ra được truyền lại: "Berlin"
```

Nội dung suy nghĩ được trả về dưới dạng các khối nội dung `thinking` gốc; trong các cuộc hội thoại nhiều lượt, hãy truyền lại các khối nội dung trợ lý trước đó (bao gồm cả các khối suy nghĩ) nguyên vẹn.

```text theme={null}
from anthropic import Anthropic

client = Anthropic(
    api_key="<AIHUBMIX_API_KEY>",
    base_url="https://aihubmix.com"
)

response = client.messages.create(
    model="kimi-k3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Trả lời bằng một từ: thủ đô của Pháp"}
    ],
)

# Các loại khối phản hồi.content quan sát được: ["thinking", "text"]; văn bản: "Paris"
# Nhiều lượt: truyền lại response.content nguyên vẹn như tin nhắn của trợ lý
```

3. Các Tham Số Lấy Mẫu Là Cố Định

Các tham số lấy mẫu của K3 được nhà cung cấp cố định: temperature 1.0, top_p 0.95, n 1, và presence_penalty / frequency_penalty 0. Khuyến nghị chính thức là không bao gồm các tham số này trong các yêu cầu.

Lưu ý: các giá trị lấy mẫu cố định là một phần của thông số chính thức và không thể được xác thực từ các tín hiệu phản hồi; hãy tuân theo khuyến nghị chính thức và không bao gồm các tham số này.

4. Gọi Công Cụ và Tải Công Cụ Động

tools hỗ trợ tối đa 128 công cụ; tool_choice hỗ trợ buộc và vô hiệu hóa các cuộc gọi công cụ. K3 cũng hỗ trợ tải công cụ động: tiêm các công cụ mới giữa cuộc hội thoại thông qua trường tools của một tin nhắn hệ thống (một hình dạng tin nhắn cụ thể cho API Chat).

`tool_choice` hỗ trợ `auto` / `none` / `required`; `required` buộc mô hình gọi một công cụ. Tải công cụ động: tin nhắn hệ thống tiêm công cụ không mang theo `content`, các công cụ được tiêm có hiệu lực cho các lượt tiếp theo, và tin nhắn phải được bao gồm lại trong mỗi yêu cầu.

```text theme={null}
messages = [
    {"role": "system", "content": "Bạn là một trợ lý hữu ích."},
    {"role": "user", "content": "Xin chào."},
    {"role": "assistant", "content": "Chào, tôi có thể giúp gì cho bạn?"},
    # Tiêm một công cụ mới giữa cuộc hội thoại: chỉ trường tools, không có nội dung
    {
        "role": "system",
        "tools": [
            {
                "type": "function",
                "function": {
                    "name": "get_time",
                    "description": "Lấy thời gian hiện tại",
                    "parameters": {"type": "object", "properties": {}},
                },
            }
        ],
    },
    {"role": "user", "content": "Bây giờ là mấy giờ?"}
]
```

```text theme={null}
# tool_choice="required" với lời nhắc "Xin chào" -> mô hình bị buộc phải gọi công cụ
"finish_reason": "tool_calls",
"tool_calls": [{"function": {"name": "get_weather", "arguments": "{\"city\":\"New York\"}"}}]
```

> **Đã xác minh**: `tool_choice: "required"` buộc một cuộc gọi công cụ ngay cả với các lời nhắc không liên quan; `"none"` ngăn chặn các cuộc gọi công cụ; các công cụ được tiêm giữa cuộc hội thoại thông qua một tin nhắn hệ thống mà không có `content` có thể được gọi bình thường.

Các định nghĩa công cụ sử dụng cấu trúc phẳng (`name` ở cấp độ trên cùng); buộc một cuộc gọi cũng sử dụng `tool_choice: "required"`, và các cuộc gọi được trả về dưới dạng các mục đầu ra `function_call`. Hỗ trợ tải công cụ động đang được tiến hành; hiện tại, hãy khai báo tất cả các công cụ trong tham số `tools` ở cấp độ trên cùng.

```text theme={null}
response = client.responses.create(
    model="kimi-k3",
    input="Xin chào",
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "Lấy thời tiết cho một thành phố",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    tool_choice="required",
)

# Đầu ra quan sát được chứa: {"type": "function_call", "name": "get_weather", "arguments": "{\"city\":\"London\"}"}
```

Các công cụ sử dụng định dạng Anthropic (`input_schema`); buộc một cuộc gọi với `tool_choice: {"type": "any"}` và vô hiệu hóa các cuộc gọi với `{"type": "none"}`. ❗ **Điểm cuối Messages chính thức của Kimi K3 (tương thích với Anthropic) không hỗ trợ tải công cụ động**: trong thử nghiệm, tin nhắn tiêm trả về 200, nhưng công cụ được tiêm không có hiệu lực (mô hình không thể gọi nó). Hãy khai báo tất cả các công cụ trong tham số `tools` ở cấp độ trên cùng.

```text theme={null}
response = client.messages.create(
    model="kimi-k3",
    max_tokens=4096,
    tools=[{
        "name": "get_weather",
        "description": "Lấy thời tiết cho một thành phố",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    tool_choice={"type": "any"},
    messages=[{"role": "user", "content": "Xin chào"}],
)

# Quan sát: stop_reason "tool_use"; nội dung chứa một khối tool_use gọi get_weather
```

5. Đầu Ra Có Cấu Trúc

Đầu ra có cấu trúc khiến mô hình trả về nội dung tuân thủ nghiêm ngặt một JSON Schema nhất định.

`response_format` hỗ trợ `json_schema` với chế độ `strict`.

```text theme={null}
completion = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "user", "content": "Paris là thủ đô của Pháp. Trích xuất tên thành phố."}
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "extract",
            "strict": True,
            "schema": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        },
    },
)

# Nội dung phản hồi quan sát được: {"city":"Paris"}
```

> **Đã xác minh**: đầu ra là JSON hợp lệ tuân thủ theo schema.

Đầu ra có cấu trúc được khai báo thông qua `text.format`.

```text theme={null}
response = client.responses.create(
    model="kimi-k3",
    input="Paris là thủ đô của Pháp. Trích xuất tên thành phố.",
    text={
        "format": {
            "type": "json_schema",
            "name": "extract",
            "strict": True,
            "schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        }
    },
)

# Nội dung văn bản quan sát được: {"city":"Paris"}
```

❗ **Điểm cuối Messages chính thức của Kimi K3 (tương thích với Anthropic) không hỗ trợ đầu ra có cấu trúc**: các trường đầu ra có cấu trúc bị bỏ qua một cách im lặng — yêu cầu trả về HTTP 200 với văn bản tự do, không có lỗi hoặc thông báo dự phòng, và việc phân tích JSON phía hạ nguồn sẽ thất bại. Khi bạn cần đầu ra có cấu trúc, hãy sử dụng API Chat Completions hoặc Responses.

6. Lưu Trữ Ngữ Cảnh Là Tự Động

Lưu trữ ngữ cảnh của K3 được bật tự động, không cần tham số. Khi một tiền tố dài lặp lại trúng vào bộ nhớ cache, số lượng trúng được báo cáo trong việc sử dụng (tên trường thay đổi theo API). Giá cả cho bộ nhớ cache có trên trang mô hình.

```text theme={null} # việc sử dụng của cuộc gọi thứ hai với một tiền tố dài giống hệt "prompt_tokens_details": {"cached_tokens": 1536} ```

> **Đã xác minh**: yêu cầu thứ hai với một tiền tố dài giống hệt báo cáo số lần trúng trong `usage.prompt_tokens_details.cached_tokens`.

```text theme={null} # việc sử dụng của cuộc gọi Responses thứ hai với các hướng dẫn giống hệt "input_tokens_details": {"cached_tokens": 1536} ``` ```text theme={null} # việc sử dụng của cuộc gọi Messages thứ hai với một lời nhắc hệ thống dài giống hệt "cache_read_input_tokens": 1536 ```

7. Hoàn Thành Tiền Tố partial

Hoàn thành tiền tố khiến mô hình tiếp tục tạo ra từ một tiền tố nhất định, rất phù hợp cho việc hoàn thành mã và đầu ra có kiểm soát định dạng.

Truyền `"partial": true` trong tin nhắn của trợ lý cuối cùng.

```text theme={null}
messages = [
    {"role": "user", "content": "Viết một bài haiku về biển."},
    {"role": "assistant", "content": "Sóng gập vào bọt,", "partial": True},
]

# Tiền tố: "Sóng gập vào bọt,"  ->  phần tiếp theo được trả về bởi mô hình
# muối treo trong không khí—
# mặt trăng kéo thủy triều về nhà.
```

> **Đã xác minh**: việc tạo ra tiếp tục từ tiền tố đã cho mà không lặp lại nó.

Truyền tiền tố như một tin nhắn của trợ lý ở cuối mảng `input`; không cần tham số `partial`.

```text theme={null}
response = client.responses.create(
    model="kimi-k3",
    input=[
        {"role": "user", "content": "Viết một bài haiku về biển."},
        {"role": "assistant", "content": "Sóng gập vào bọt,"},
    ],
)

# Phần tiếp theo quan sát được: "muối treo trong không khí— / mặt trăng kéo thủy triều về nhà."
```

Cùng một khả năng được đạt được với việc điền trước trợ lý gốc của giao thức, không cần tham số `partial` — truyền tiền tố như tin nhắn của trợ lý cuối cùng.

```text theme={null}
response = client.messages.create(
    model="kimi-k3",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Viết một bài haiku về biển."},
        {"role": "assistant", "content": "Sóng gập vào bọt,"},
    ],
)

# Phần tiếp theo quan sát được: "gió muối mang theo tiếng kêu của chim hải âu— / thủy triều kéo ..."
```

8. Đầu Vào Hình Ảnh

Các hình ảnh được truyền dưới dạng base64; định dạng khối nội dung thay đổi theo API.

```text theme={null} messages = [ { "role": "user", "content": [ {"type": "text", "text": "Màu sắc chủ đạo của hình ảnh này là gì? Một từ."}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,"}}, ], } ]

# Nội dung phản hồi quan sát được: "Đỏ"  (đầu vào: một PNG đỏ đặc 64x64)
```

> **Đã xác minh**: đầu vào hình ảnh base64 hoạt động, và mô hình mô tả chính xác hình ảnh thử nghiệm.

```text theme={null} input = [ { "role": "user", "content": [ {"type": "input_text", "text": "Màu sắc chủ đạo của hình ảnh này là gì? Một từ."}, {"type": "input_image", "image_url": "data:image/png;base64,"}, ], } ]

# Nội dung văn bản quan sát được: "Đỏ"
```

```text theme={null} messages = [ { "role": "user", "content": [ {"type": "text", "text": "Màu sắc chủ đạo của hình ảnh này là gì? Một từ."}, {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": ""}}, ], } ]

# Nội dung phản hồi văn bản quan sát được: "Đỏ"
```

9. Tham Chiếu Đã Xác Minh: Độ Trễ và Việc Sử Dụng của Một Nhiệm Vụ Gọi Đơn Dài

Suy nghĩ của K3 được cố định ở mức tối đa, vì vậy các yêu cầu đơn lẻ cho các nhiệm vụ phức tạp mất nhiều thời gian hơn đáng kể so với các mô hình thông thường. Dữ liệu đo được từ một nhiệm vụ tạo trò chơi HTML một tệp (một lời nhắc với một hình ảnh tham chiếu, được tạo ra trong một lần mà không có vòng lặp): yêu cầu đơn lẻ mất 2,541 giây (khoảng 42 phút), với 74,994 token hoàn thành, trong đó 54,486 (73%) là token suy nghĩ; đầu ra cuối cùng là 1,275 dòng mã có thể chạy trực tiếp, với finish_reason stop.

Khuyến nghị phía khách hàng:

  • Đặt thời gian chờ của khách hàng thành phút hoặc lâu hơn, và ưu tiên phát trực tiếp cho các nhiệm vụ dài;
  • Để lại khoảng trống rộng rãi trong max_completion_tokens — trong trường hợp này, suy nghĩ một mình đã tiêu tốn 54,486 token.

10. Ma Trận Hỗ Trợ API × Khả Năng

Mỗi ô trong bảng dưới đây đã được xác minh vào ngày 2026-07-17 thông qua các cuộc gọi thực tế đến các API sản xuất AIHubMix; mỗi ô hiển thị cú pháp tham số / trường cho API tương ứng.

Khả năng Chat Completions Responses Messages
Nội dung suy nghĩ trong phản hồi reasoning_content field reasoning output item thinking content block
Truyền lại lịch sử suy nghĩ ✅ tin nhắn trợ lý được truyền lại nguyên vẹn ✅ các mục đầu ra được truyền lại nguyên vẹn ✅ các khối nội dung được truyền lại nguyên vẹn
Buộc / vô hiệu hóa các cuộc gọi công cụ tool_choice: "required" / "none" tool_choice: "required" {"type": "any"} / {"type": "none"}
Tải công cụ động ✅ tin nhắn hệ thống với tools (không có content) ➖ Hỗ trợ đang được tiến hành ❗ Không được hỗ trợ trên điểm cuối Messages chính thức (tương thích với Anthropic)
Đầu ra có cấu trúc response_format (json_schema + strict) text.format (json_schema) ❗ Không được hỗ trợ trên điểm cuối chính thức; các trường bị bỏ qua một cách im lặng (200 + văn bản tự do) — sử dụng Chat / Responses thay vào đó
Đo lường tự động số lần trúng cache usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens usage.cache_read_input_tokens
Hoàn thành tiền tố "partial": true ✅ điền trước trợ lý ✅ điền trước trợ lý (gốc của giao thức)
Đầu vào hình ảnh image_url (base64) input_image (base64) image content block (base64)
Chuỗi dừng stop (các giới hạn được xác thực) ➖ Hỗ trợ đang được tiến hành stop_sequences các giới hạn được xác thực giống nhau, nhưng khi trúng, cả stop_reason: "stop_sequence" và giá trị stop_sequence đều không được trả về

Câu Hỏi Thường Gặp

K3 hỗ trợ những API nào trên AIHubMix?
Chat Completions (/v1/chat/completions), Responses (/v1/responses), và API Messages tương thích với Claude (/v1/messages).

Có thể tắt hoặc giảm suy nghĩ không?
Không. Suy nghĩ của K3 được bật theo mặc định, và reasoning_effort chỉ hỗ trợ cấp độ "max" duy nhất.

Tại sao reasoning_content phải được truyền lại trong các cuộc hội thoại nhiều lượt?
K3 được đào tạo với suy nghĩ được bảo tồn; Moonshot yêu cầu tin nhắn trợ lý trước đó phải được truyền lại đầy đủ và không thay đổi. Thiếu lịch sử suy nghĩ dẫn đến chất lượng đầu ra không ổn định.

Các giới hạn trên tham số stop là gì?
Tối đa 5 chuỗi dừng, mỗi chuỗi không dài hơn 32 byte; vượt quá bất kỳ giới hạn nào sẽ trả về lỗi 400.

API Messages có hỗ trợ đầu ra có cấu trúc không?
❗ Không. Điểm cuối Messages chính thức của Kimi K3 (tương thích với Anthropic) im lặng bỏ qua các trường đầu ra có cấu trúc (trả về 200 với văn bản tự do và không có lỗi). Đối với đầu ra có cấu trúc, hãy sử dụng response_format trên Chat Completions hoặc text.format trên Responses.

Tại sao các yêu cầu đơn lẻ của K3 lại mất nhiều thời gian như vậy?
Suy nghĩ của K3 được cố định ở mức tối đa, và các token suy nghĩ chiếm một phần lớn trong các nhiệm vụ phức tạp (73% token hoàn thành trong trường hợp đo được). Đặt thời gian chờ của khách hàng thành phút hoặc lâu hơn và sử dụng phát trực tiếp.


Để biết giá cả và trạng thái thời gian thực, hãy xem trang mô hình Kimi K3; để biết thêm các mô hình khác, hãy truy cập thư viện mô hình.

Cập nhật lần cuối: 2026-07-17

More from the blog