Chuyển đến nội dung chính

Kimi K3: Tính năng, điểm chuẩn, API và 5 ví dụ thực hành

Tìm hiểu Kimi K3 là gì, cách truy cập, và cách nó xử lý lập luận, công cụ, ngữ cảnh dài và thị giác qua năm ví dụ thực hành.
Đã cập nhật 21 thg 7, 2026  · 12 phút đọc

Khám phá với AI

Mở trong ChatGPTMở trong ClaudeMở trong Perplexity

Cuộc đua mô hình mở lại dịch chuyển vào ngày 16 tháng 7, 2026, khi Moonshot AI phát hành Kimi K3, một mô hình 2,8 nghìn tỷ tham số với cửa sổ ngữ cảnh 1 triệu token và thị giác gốc. Đây là mô hình mở lớn nhất Moonshot từng ra mắt, vượt xa Kimi K2 về kích thước, và là mô hình đầu tiên họ mô tả là đạt lớp 3 nghìn tỷ tham số.

Nếu bạn muốn câu chuyện ra mắt, đi sâu vào kiến trúc, biểu đồ điểm chuẩn, so sánh với Claude, GPT và các phòng thí nghiệm Trung Quốc khác, cùng danh sách giới hạn do Moonshot công bố, bài blog Kimi K3 của chúng tôi đã bao quát tất cả. Hướng dẫn này là phần thực hành, gồm cách truy cập và cách nó hoạt động khi bạn sử dụng. Tôi sẽ trình bày năm ví dụ nhỏ, bốn qua API, nơi tôi hiển thị cách dùng token và chi phí thực, và hai trong ứng dụng web kimi.com. Cùng nhau, chúng cho thấy K3 xử lý:

  • Gọi công cụ và trả về JSON nghiêm ngặt
  • Nạp định nghĩa công cụ tức thời
  • Cắt giảm chi phí ngữ cảnh dài bằng bộ nhớ đệm tự động
  • Đọc ảnh chụp màn hình và sửa bố cục
  • Xây dựng bảng điều khiển tương tác từ một prompt

Bốn ví dụ API chạy ngày 17 tháng 7, 2026 với mô hình kimi-k3, và tốn khoảng 11 xu ở lần chạy lạnh, hoặc vài xu khi bộ nhớ đệm bắt đầu có hiệu lực.

Cách truy cập Kimi K3

Cách nhanh nhất để thử mô hình là kimi.com, nơi ứng dụng web và ứng dụng di động chạy Kimi K3 cho các tác vụ đại lý tổng quát mà không cần thiết lập.

Với công việc nặng hơn như báo cáo và bảng điều khiển, có Kimi Work, một ứng dụng desktop.

Nếu bạn sống trong terminal, Kimi Code là một đại lý viết mã mà bạn cài qua npm dưới gói @moonshot-ai/kimi-code, và bạn chọn mô hình ở đó bằng lệnh /model. Dùng K3 trong Kimi Code yêu cầu hội viên trả phí, và cửa sổ 1 triệu token đầy đủ cần hạng cao hơn.

Hướng dẫn này tập trung vào API thô và ứng dụng web, nhưng đại lý terminal cũng sẵn sàng nếu bạn muốn.

Tuy vậy, K3 không thay thế các anh em của nó. Bảng dưới đây cho thấy cách đội hình hiện tại được phân chia.

Mô hình

Cửa sổ ngữ cảnh

Phù hợp nhất cho

kimi-k3

1.048.576 token

Công việc flagship: lập trình dài, thị giác, tác vụ tri thức

kimi-k2.7-code

262.144 token

Lập trình chuyên biệt, có tùy chọn tốc độ cao nhanh hơn

kimi-k2.6

262.144 token

Trò chuyện văn bản, hình ảnh và video tổng quát

Tóm lại, K3 là mô hình nên bắt đầu khi một công việc trộn lẫn mã, công cụ, tài liệu và hình ảnh, hoặc khi bạn thực sự cần cửa sổ 1 triệu token. Với tạo mã thuần nơi tốc độ quan trọng hơn ngữ cảnh, kimi-k2.7-code vẫn là lựa chọn hợp lý hơn, nên đừng mặc định mô hình mới nhất luôn là đúng.

Thiết lập API Kimi K3

API tương thích với SDK của OpenAI, nên nếu bạn từng dùng trước đó, hầu như không có gì mới. Bạn cần Python 3.9 trở lên và một khóa API.

Bước 1: Tạo khóa API

Trước tiên, đăng nhập nền tảng Kimi và mở trang API Keys trong bảng điều khiển. Tạo khóa, sao chép một lần và lưu ở nơi an toàn, vì bạn sẽ không thấy lại nó. Bạn cũng cần một số dư nhỏ trong tài khoản để thực hiện cuộc gọi, và cho toàn bộ hướng dẫn này vài đô là đủ.

Trang API keys trong bảng điều khiển nền tảng Kimi hiển thị nút tạo API key.

Tạo khóa API Kimi K3. Ảnh: Tác giả.

Bước 2: Cài đặt SDK

Tiếp theo, cài SDK OpenAI vào môi trường của bạn. Một lệnh là xong.

python -m pip install --upgrade "openai>=1.0"

Lệnh này kéo về thư viện khách mà các ví dụ còn lại sử dụng, và không có thứ gì riêng cho Kimi cần cài đặt.

Bước 3: Lưu khóa và khởi tạo client

Tốt hơn là đọc khóa từ một biến môi trường thay vì dán vào mã. Thiết lập MOONSHOT_API_KEY trong shell của bạn hoặc một tệp .env , rồi trỏ client tới base URL của Moonshot.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["MOONSHOT_API_KEY"],
    base_url="https://api.moonshot.ai/v1",
)

Hai thứ duy nhất khác với thiết lập OpenAI chuẩn là base_url và tên mô hình là kimi-k3. Với phần đó sẵn sàng, bạn có thể gọi thử.

Bước 4: Thực hiện cuộc gọi đầu tiên

Giờ đến yêu cầu đầu tiên. Tôi nhờ mô hình tự giới thiệu, và kết quả là một khoảnh khắc khá thẳng thắn.

completion = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "Introduce Kimi K3 in one sentence."}],
    max_completion_tokens=800,
)
print(completion.choices[0].message.content)

Phản hồi là một lời từ chối lịch sự: mô hình nói nó không có thông tin đáng tin về Kimi K3, vì nó được huấn luyện trước khi chính mình ra mắt, và chỉ tôi đến các thông báo của Moonshot. Đó là lời nhắc hữu ích rằng một mô hình không biết về chính nó. Cuộc gọi API này tốn khoảng bảy phần mười xu. Lưu ý giới hạn max_completion_tokens mà tôi đặt cho mọi cuộc gọi trong hướng dẫn này để ngăn đầu ra dài dòng đội chi phí.

Kết quả đầu ra terminal nơi Kimi K3 nói rằng nó không có thông tin đáng tin về chính nó.

Kết quả cuộc gọi API đầu tiên của Kimi K3. Ảnh: Tác giả.

Ví dụ 1: Stream lập luận và câu trả lời cuối

K3 luôn lập luận, và API trả về phần lập luận trên một kênh tách biệt với câu trả lời. Khi bạn stream, mỗi mảnh có thể mang reasoning_content, content cuối cùng, hoặc cả hai, nên bạn có thể đặt phần suy nghĩ và câu trả lời tách biệt.

stream = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "A bat and a ball cost $1.10 together. The bat costs $1.00 more than the ball. How much is the ball?"}],
    max_completion_tokens=1200,
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    reasoning = getattr(delta, "reasoning_content", None)
    if reasoning:
        print(reasoning, end="", flush=True)
    if delta.content:
        print(delta.content, end="", flush=True)

Mô hình stream phần làm việc trước: nó nhận ra bài toán gậy-và-bóng là câu hỏi kinh điển trong Bài kiểm tra Phản xạ Nhận thức, đánh dấu đáp án trực giác sai là $0,10, rồi giải đại số ra quả bóng có giá $0,05 và kiểm tra rằng $1,05 cộng $0,05 thành $1,10. Điểm hữu ích là sự tách biệt: trong một ứng dụng thực tế, bạn hiển thị content cho người dùng và giữ reasoning_content cho log, vì hiển thị lập luận thô trong sản phẩm hiếm khi là điều bạn muốn. Cuộc gọi này dùng 488 token đầu ra và tốn dưới 1 xu.

Terminal hiển thị Kimi K3 stream từng bước lập luận rồi câu trả lời cuối rằng quả bóng giá năm xu.

Stream lập luận rồi đến câu trả lời cuối. Ảnh: Tác giả.

Ví dụ 2: Gọi công cụ với đầu ra có cấu trúc

Kimi K3 là mô hình trong đội hình hỗ trợ tool_choice="required", buộc ít nhất một lần gọi công cụ trong một lượt. Điều đó hữu ích khi bạn muốn mô hình lấy dữ liệu trước khi trả lời thay vì đoán. Ở đây tôi đưa cho nó hai công cụ giả, tra giá và kiểm tra tồn kho, buộc gọi công cụ, chạy công cụ cục bộ, rồi yêu cầu kết quả dưới dạng JSON nghiêm ngặt bằng response_format.

first = client.chat.completions.create(
    model="kimi-k3",
    messages=messages,
    tools=TOOLS,
    tool_choice="required",
    max_completion_tokens=2500,
)
assistant_message = first.choices[0].message
messages.append(assistant_message)

for tool_call in assistant_message.tool_calls or []:
    args = json.loads(tool_call.function.arguments)
    messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": run_tool(tool_call.function.name, args)})

Mô hình đã gọi cả hai công cụ với đúng mã sản phẩm, rồi trả về tóm tắt đơn hàng sạch dưới dạng JSON: năm bàn phím cơ mỗi chiếc $89, tổng $445, và cờ tồn kho đặt là true. Hai chi tiết khiến điều này hoạt động trong thực tế. Bạn phải nối lại đầy đủ thông điệp assistant vào cuộc trò chuyện trước khi thêm kết quả công cụ, và bạn chỉ nên parse content để lấy JSON, không bao giờ từ trường lập luận. Cặp cuộc gọi gộp lại tốn dưới 1 xu.

Terminal hiển thị hai lần gọi công cụ tiếp theo là tóm tắt đơn hàng JSON có cấu trúc với tổng bốn trăm bốn mươi lăm đô la

Gọi công cụ và đầu ra JSON có cấu trúc. Ảnh: Tác giả.

Ví dụ 3: Nạp công cụ động

Nếu bạn có hàng chục công cụ, gửi tất cả định nghĩa của chúng trong mọi yêu cầu sẽ lãng phí token và làm rối prompt. Kimi K3 cho phép bạn chèn một định nghĩa công cụ giữa cuộc trò chuyện bằng một thông điệp system mang trường tools và không có content. Công cụ sẽ khả dụng từ thời điểm đó trở đi, giúp giữ các danh mục công cụ lớn ngoài phần tiền tố được cache cho đến khi một công cụ thực sự cần.

messages = [
    {"role": "user", "content": "Convert 100 US dollars to euros at a rate of 0.92."},
    {"role": "system", "tools": [{
        "type": "function",
        "function": {
            "name": "convert_currency",
            "description": "Convert an amount from one currency to another",
            "parameters": {
                "type": "object",
                "properties": {"amount": {"type": "number"}, "rate": {"type": "number"}},
                "required": ["amount", "rate"],
            },
        },
    }]},
]
completion = client.chat.completions.create(model="kimi-k3", messages=messages)
print(completion.choices[0].message.tool_calls)

K3 đã nhận công cụ vừa nạp và gọi convert_currency với amount là 100 và rate là 0,92, đúng như mong đợi. Một điều cần nhớ là máy chủ không giữ lại định nghĩa này cho bạn, nên bạn gửi lại thông điệp system ở các yêu cầu sau nếu muốn công cụ tiếp tục khả dụng. Đây là cuộc gọi rẻ nhất trong bộ, khoảng hai phần mười xu.

Terminal hiển thị Kimi K3 gọi một công cụ chuyển đổi tiền tệ được nạp động với amount và rate.

Gọi công cụ chuyển đổi tiền tệ nạp động. Ảnh: Tác giả.

Ví dụ 4: Cắt giảm chi phí ngữ cảnh dài bằng bộ nhớ đệm

Ví dụ này là nơi cửa sổ 1 triệu token trở nên thực tế. Bộ nhớ đệm ngữ cảnh là tự động, không cần ID cache hay thời gian sống để quản lý. Bạn gửi một tiền tố lớn, giữ nguyên từng byte ở các yêu cầu sau, và phần lặp sẽ được tính giá ở mức cache-hit thay vì cache-miss. Để thấy rõ khác biệt, tôi dùng một cơ sở tri thức khoảng 33.000 token và hỏi một câu về nó.

knowledge = Path("knowledge_base.md").read_text(encoding="utf-8")
completion = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "system", "content": knowledge},
        {"role": "user", "content": "What is the rated payload of the Atlas robot?"},
    ],
    max_completion_tokens=600,
)

Lần đầu tôi gửi tiền tố đó, không phần nào được cache, và yêu cầu tốn khoảng 9,9 xu cho chừng 33.000 token đầu vào. Sau khi tiền tố đã được nhìn thấy, cùng yêu cầu đó trúng cache ở toàn bộ 32.512 token tiền tố và tốn khoảng 1,1 xu, gần giảm chín lần. Lý do là khoảng cách giá: đầu vào được cache là $0,30 mỗi triệu token so với $3,00 khi chưa cache. Một điểm lạ tôi gặp là ghi cache diễn ra bất đồng bộ, nên lần trúng không hiện ra ngay ở cuộc gọi sát sau đó. Nó xuất hiện ở yêu cầu sau, nên chạy script hai lần cách nhau một phút sẽ cho thấy lần trượt rồi lần trúng.

Hai lần chạy terminal của script bộ nhớ đệm cho thấy một lần trượt cache tốn gần mười xu và một lần trúng cache tốn gần một xu.

Chi phí trượt cache so với trúng cache. Ảnh: Tác giả.

Ví dụ 5: Phát hiện lỗi bố cục trong ảnh chụp màn hình

Thị giác là năng lực gốc của K3, và API là cách sạch để dùng nó, dù nó không nhận URL ảnh công khai. Bạn gửi ảnh dưới dạng URL dữ liệu base64 và đặt content của thông điệp thành một mảng đối tượng, một phần cho ảnh và một phần cho văn bản. Tôi render một bảng điều khiển nhỏ với vài lỗi bố cục cố ý, lưu ảnh chụp màn hình, và nhờ K3 chỉ ra vấn đề.

Ảnh chụp màn hình một bảng điều khiển với một thẻ lệch hàng, một badge chồng lên con số, và một cột tràn khỏi biểu đồ.

Bảng điều khiển với lỗi bố cục cố ý. Ảnh: Tác giả.

import base64
from pathlib import Path

image_data = base64.b64encode(Path("broken_dashboard.png").read_bytes()).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_data}"}},
            {"type": "text", "text": "List the layout and alignment problems you can see, and give a short CSS fix for each."},
        ],
    }],
    max_completion_tokens=3500,
)
print(completion.choices[0].message.content)

K3 đọc ảnh tốt. Nó bắt được thẻ nằm thấp hơn hàng và chồng lên thẻ bên cạnh, badge đè lên một con số (nó thậm chí đọc nhầm 3.910 bị che thành 5.910, chính là lỗi tự chứng minh), khoảng trống không đều trước thẻ cuối, cột bar tràn lên thẻ phía trên, và tooltip nằm đè lên các cột, đồng thời đưa ra sửa CSS ngắn cho từng lỗi, như đưa các thẻ vào cùng một grid. Tuy nhiên, nó bỏ qua phụ đề độ tương phản thấp gần như không thấy, nên thị giác bắt những gì nổi bật với mắt hơn là chi tiết mờ. Cuộc gọi tốn khoảng 2 xu.

Giới hạn của Kimi K3

Các ví dụ API diễn ra tốt, nhưng vài điểm gồ ghề đáng nêu để bạn không bất ngờ. Tôi trực tiếp gặp hầu hết các điểm này.

  • Hiện chỉ có reasoning_effort="max", nên bạn chưa thể giảm mức suy nghĩ để tiết kiệm chi phí.

  • Các thiết lập sampling bị cố định. Các giá trị như temperature, top_p và các hình phạt đều bị khóa, nên hãy bỏ qua chúng trong yêu cầu thay vì tinh chỉnh.

  • Đầu ra có thể dài và tốn kém. Hãy giới hạn max_completion_tokens như trong ví dụ, và xác thực mọi vòng lặp tác tử.

  • API không hỗ trợ URL ảnh công khai, nên hãy lên kế hoạch dùng base64 hoặc tệp tải lên cho phần thị giác.

Không điểm nào trong số này là rào cản, nhưng chúng định hình cách bạn dùng mô hình. Chi phí đầu ra là thứ tôi sẽ để ý nhất.

Kết luận

Trong các lần chạy của tôi, hai điều nổi bật. Gọi công cụ và đầu ra có cấu trúc không cần thử lại, và bộ nhớ đệm quan trọng hơn tôi mong đợi, vì tái sử dụng cùng tiền tố dài khiến một yêu cầu lớn trở nên rẻ để gửi lại. Vậy nên cho phân tích cấp độ kho mã, các cuộc gọi ngữ cảnh dài lặp lại, hoặc kỹ thuật đa phương thức, K3 là mặc định hợp lý; còn với trò chuyện nhanh chi phí thấp hoặc cần kiểm soát sampling chính xác, một mô hình nhỏ hơn là lựa chọn dễ hơn. Chi tiết về trọng số mở và giấy phép, như tôi đã nêu, sẽ rõ hơn sau ngày 27 tháng 7.

Để tìm hiểu thêm nền tảng về các mẫu mà những ví dụ này sử dụng, khóa học Developing AI Systems with the OpenAI API của chúng tôi bao quát gọi hàm và nối mô hình với công cụ bên ngoài trong Python.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Tôi là một kỹ sư dữ liệu và người xây dựng cộng đồng, làm việc với pipeline dữ liệu, đám mây và công cụ AI, đồng thời viết các hướng dẫn thực hành, tác động cao cho DataCamp và các nhà phát triển mới nổi.

Chủ đề

Học với DataCamp

Tracks

Kỹ sư Trợ lý Trí tuệ Nhân tạo (AI) cho Lập trình viên

26 giờ
Học cách tích hợp trí tuệ nhân tạo (AI) vào các ứng dụng phần mềm thông qua việc sử dụng các giao diện lập trình ứng dụng (API) và các thư viện mã nguồn mở. Hãy bắt đầu hành trình trở thành Kỹ sư Trí tuệ Nhân tạo ngay hôm nay!
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow