Cửa sổ ngữ cảnh và token đầu ra tối đa: giới hạn của GPT-6, Claude, DeepSeek và Kimi
Cửa sổ ngữ cảnh và token đầu ra tối đa là gì, giới hạn của GPT-6, Claude, DeepSeek V4.1 Flash và Kimi K3, và cách sửa câu trả lời bị dừng sớm.
Đọc dạng MarkdownCửa sổ ngữ cảnh là tổng số token mà một mô hình có thể chứa trong một yêu cầu: prompt của bạn, lịch sử hội thoại, hình ảnh và câu trả lời mà mô hình viết ra. Giới hạn token đầu ra tối đa là lượng lớn nhất mô hình được phép viết trong câu trả lời đó, và với các mô hình suy luận, nó bao gồm cả các token dùng để suy nghĩ. Câu trả lời phải nằm gọn trong cửa sổ ngữ cảnh, nên prompt dài sẽ để lại ít chỗ hơn cho đầu ra.
Cửa sổ ngữ cảnh và token đầu ra tối đa khác nhau thế nào?
Cửa sổ ngữ cảnh là không gian dùng chung. Mọi thứ bạn gửi đi và mọi thứ mô hình viết ra trong một yêu cầu đều phải nằm gọn trong đó.
Token đầu ra tối đa là một mức trần riêng, nhỏ hơn, chỉ áp dụng cho câu trả lời. Mỗi mô hình có một mức trần, và mỗi API có một tham số cho phép bạn đặt giới hạn thấp hơn cho từng yêu cầu.
Từ đó có hai hệ quả:
- Đầu vào và đầu ra tranh nhau cùng một cửa sổ. Tài liệu tham khảo API của DeepSeek nói rõ: "Tổng độ dài của token đầu vào và token được sinh ra bị giới hạn bởi độ dài ngữ cảnh của mô hình."
- Suy luận được tính là đầu ra. Trên GPT-6, Claude, DeepSeek V4.1 Flash và Kimi K3, các token mô hình dùng để suy nghĩ được tính vào giới hạn đầu ra và được tính phí như đầu ra. Câu trả lời có thể dừng sớm dù phần trả lời hiển thị rất ngắn.
Giới hạn của từng mô hình là bao nhiêu?
| Mô hình | ID mô hình | Cửa sổ ngữ cảnh | Đầu ra tối đa | Tham số đầu ra | Mặc định nếu bạn bỏ trống |
|---|---|---|---|---|---|
| GPT-6 Astra, Sol, Luna | gpt-6-astra, gpt-6-sol, gpt-6-luna | 1,05 triệu token (922K đầu vào) | 128K | max_output_tokens (Responses), max_completion_tokens (Chat Completions) | Mức tối đa của mô hình |
| Claude Opus 5.5, Fable 5.1, Fable 5 | claude-opus-5-5, claude-fable-5-1, claude-fable-5 | 1 triệu token | 128K | max_tokens | Không có: trường này là bắt buộc |
| DeepSeek V4.1 Flash | deepseek-v4.1-flash | 1 triệu token | 393.216 | max_tokens | 8K khi tắt suy nghĩ, 64K khi bật suy nghĩ, 128K ở mức max |
| Kimi K3 | kimi-k3 | 1.048.576 token | 1.048.576 | max_completion_tokens | 131.072 |
Cột cuối cùng là nguồn gốc của phần lớn các câu trả lời bị cắt ngang. DeepSeek V4.1 Flash có thể viết 393.216 token, nhưng nếu bạn không đặt max_tokens, nó dừng ở 8K, hoặc 64K khi bật suy nghĩ. Kimi K3 có thể viết tới 1.048.576 token nhưng mặc định chỉ là 131.072.
Tài liệu tham khảo API của từng mô hình có danh sách tham số đầy đủ: GPT-6 Astra, Claude Opus 5.5, DeepSeek V4.1 Flash và Kimi K3.
Nên dùng max_tokens, max_completion_tokens hay max_output_tokens?
Cả ba đều giới hạn câu trả lời. Gửi tham số nào tùy thuộc vào định dạng API và mô hình:
| Định dạng API | Tham số | Ghi chú |
|---|---|---|
OpenAI Responses (/v1/responses) | max_output_tokens | OpenAI: "Giới hạn trên cho số token có thể được sinh ra cho một phản hồi, bao gồm token đầu ra hiển thị và token suy luận." |
OpenAI Chat Completions (/v1/chat/completions) | max_completion_tokens | OpenAI đánh dấu max_tokens là "đã lỗi thời, thay bằng max_completion_tokens" và "không tương thích với các mô hình o-series". Hãy dùng max_completion_tokens cho GPT-6. |
Anthropic Messages (/v1/messages) | max_tokens | Bắt buộc trong mọi yêu cầu. |
| DeepSeek Chat Completions | max_tokens | Từ 1 đến 393216. |
| Kimi Chat Completions | max_completion_tokens | max_tokens là tên đã lỗi thời của cùng giới hạn này. |
Nếu API trả về "max_tokens is not supported with this model" (max_tokens không được hỗ trợ với mô hình này), hãy chuyển sang tham số trong bảng này.
Vì sao mô hình dừng trước khi viết xong?
Mô hình đã chạm giới hạn đầu ra. Mọi API đều báo điều này trong phản hồi, không phải dưới dạng lỗi:
| API | Trường | Giá trị khi chạm giới hạn đầu ra |
|---|---|---|
| OpenAI Responses | incomplete_details.reason | "max_output_tokens" |
| OpenAI Chat Completions | choices[].finish_reason | "length" |
| Anthropic Messages | stop_reason | "max_tokens" |
| DeepSeek | choices[].finish_reason | "length" |
Anthropic có lý do dừng thứ hai, model_context_window_exceeded, cho câu trả lời đã lấp đầy toàn bộ cửa sổ ngữ cảnh. Giá trị length của DeepSeek bao gồm cả hai trường hợp: câu trả lời vượt max_tokens hoặc cuộc hội thoại vượt độ dài ngữ cảnh.
Cách khắc phục:
- Tăng giới hạn đầu ra lên tới mức tối đa của mô hình trong bảng trên.
- Giảm mức độ suy luận. Suy nghĩ ít hơn sẽ để lại nhiều ngân sách hơn cho câu trả lời, và tốn ít chi phí hơn.
- Tiếp tục thay vì thử lại. Gửi lại phần trả lời dang dở và yêu cầu mô hình viết tiếp. Hướng dẫn về lý do dừng của Anthropic mô tả cách này cho
max_tokens.
Lỗi "context window exceeded" nghĩa là gì?
Yêu cầu của bạn không vừa với cửa sổ của mô hình. Nó thất bại chính xác ở đâu tùy thuộc vào API:
- Claude. Nếu riêng đầu vào đã lớn hơn cửa sổ, API trả về lỗi 400
invalid_request_error("prompt is too long"). Nếu chỉ tổng đầu vào cộngmax_tokenslớn hơn, tài liệu của Anthropic cho biết Claude 4.5 và các mô hình mới hơn, bao gồm các mô hình trong hướng dẫn này, vẫn chấp nhận yêu cầu và dừng vớistop_reason: "model_context_window_exceeded"nếu hết chỗ. - DeepSeek. Câu trả lời kết thúc với
finish_reason: "length"khi cuộc hội thoại vượt độ dài ngữ cảnh.
Ba cách khắc phục, theo thứ tự:
- Bỏ hoặc tóm tắt các lượt cũ của cuộc hội thoại. Đây là cách duy nhất khi riêng đầu vào đã quá dài.
- Giảm giới hạn đầu ra để đầu vào cộng đầu ra vừa với cửa sổ.
- Chuyển sang mô hình có cửa sổ lớn hơn. Cả bốn dòng mô hình trong bảng trên đều đọc được khoảng 1 triệu token.
Các agent lập trình xử lý những giới hạn này như thế nào?
Các agent lập trình tự đặt giới hạn đầu ra cho bạn, và mức mặc định của chúng có thể thấp hơn mức mô hình cho phép.
Claude Code dùng CLAUDE_CODE_MAX_OUTPUT_TOKENS. Tài liệu của nó cho biết biến này "mặc định là 32000 với các ID mô hình mà nó không nhận ra, chẳng hạn tên riêng của gateway, và hạ các giá trị vượt mức trần của mô hình xuống bằng mức trần". Khi bạn chạy DeepSeek V4.1 Flash hoặc Kimi K3 trong Claude Code, hãy đặt biến này nếu cần câu trả lời dài hơn. Cùng tài liệu đó cảnh báo rằng giá trị cao hơn "làm giảm cửa sổ ngữ cảnh thực tế còn lại trước khi tự động nén (auto-compaction) kích hoạt".
Codex đọc model_context_window từ config.toml, được mô tả là "số token cửa sổ ngữ cảnh khả dụng cho mô hình đang dùng". Hãy đặt nó cho những mô hình mà Codex không biết, như trong thiết lập Kimi K3 và thiết lập DeepSeek V4.1 Flash của chúng tôi. Với tên mô hình không nhận ra, Codex còn in ra: "Model metadata for <model> not found. Defaulting to fallback metadata; this can degrade performance and cause issues." Phiên làm việc vẫn chạy.
Câu hỏi thường gặp
Cửa sổ ngữ cảnh có bao gồm token đầu ra không?
Có. Đầu vào, lịch sử, hình ảnh và câu trả lời đều dùng chung một cửa sổ ngữ cảnh. Giới hạn đầu ra tối đa là một mức trần riêng cho câu trả lời bên trong cửa sổ đó.
Token suy luận có tính vào token đầu ra tối đa không?
Có, trên cả bốn dòng mô hình ở đây. Token suy luận được tính vào giới hạn đầu ra và được tính phí như token đầu ra.
Mô hình nào viết được câu trả lời dài nhất?
Kimi K3 chấp nhận max_completion_tokens tới 1.048.576, và DeepSeek V4.1 Flash chấp nhận max_tokens tới 393.216. GPT-6 và Claude dừng ở 128K mỗi yêu cầu.
Giới hạn đầu ra tối đa lớn hơn có tốn tiền hơn không?
Không. Bạn trả tiền cho số token mô hình thực sự viết ra, không phải cho giới hạn bạn đặt. Giới hạn cao hơn chỉ có ý nghĩa khi mô hình cần thêm chỗ.
Xem giá hiện tại của các mô hình này ở đâu?
Trên trang của từng mô hình: GPT-6 Astra, Claude Opus 5.5, DeepSeek V4.1 Flash và Kimi K3.



