DeepSeek V4 Pro (0813): Tư duy Passback & Ma trận 3-API

AIHubMixĐọc 15 phút
DeepSeek V4 Pro (0813): Tư duy Passback & Ma trận 3-API

Bài viết này đề cập đến các ghi chú sử dụng và những điều cần lưu ý cho deepseek-v4-pro-0813. Trên AIHubMix, mô hình này 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 API chính thức của DeepSeek.

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-08-13 thông qua các API AIHubMix (Chat Completions / Responses / Messages); các mục thông số không được đánh dấu "Đã xác minh" đến từ tài liệu chính thức của DeepSeek.

1. Định vị mô hình và thông số tổng quan

V4 Pro là cấp độ cao cấp của thế hệ V4 của DeepSeek (mô hình nhẹ deepseek-v4-flash là anh em của nó). Dòng phát hành bắt nguồn từ DeepSeek-V4 Preview vào ngày 2026-04-24, và 0813 là nhãn PHIÊN BẢN MÔ HÌNH mà DeepSeek gán cho bản xây dựng hiện tại. Ngoài các thông số thô, bốn điều làm cho nó nổi bật:

  • Mô hình biên thưa: 1.6T tổng số tham số / 49B được kích hoạt (kiến trúc MoE, hoặc hỗn hợp chuyên gia — mỗi lần suy diễn chỉ kích hoạt một tập hợp con của các mạng chuyên gia: tổng số tham số xác định khả năng kiến thức, các tham số được kích hoạt xác định chi phí tính toán mỗi lần gọi). Thẻ mô hình liệt kê CSA+HCA hybrid attention, mHC và bộ tối ưu hóa Muon.
  • Các trọng số mở dưới MIT: deepseek-ai/DeepSeek-V4-Pro được công bố trên HuggingFace dưới giấy phép MIT (một trong những giấy phép mã nguồn mở cho phép nhất — việc sử dụng thương mại và phân phối mã nguồn đóng đều được phép) và có thể được tự lưu trữ. MIT là không phổ biến cho một mô hình có kích thước này. Ghi chú tự lưu trữ trong thẻ mô hình cũng gợi ý một cửa sổ ngữ cảnh ≥384K token khi chạy ở Think Max (mức tư duy cao nhất) — đó là hướng dẫn triển khai cho việc tự lưu trữ, không phải là thông số của API được lưu trữ.
  • Hỗ trợ đa giao thức là chính hãng, không phải dịch thuật bên thứ ba: DeepSeek tự cung cấp một API Chat OpenAI, một điểm cuối tương thích với Anthropic (/anthropic, ánh xạ claude-opus* vào mô hình này), và API Responses (DeepSeek mô tả hỗ trợ bản địa cho định dạng, với các điều chỉnh cho Codex). Nó cũng cung cấp hoàn thành FIM (fill-in-the-middle) như một tính năng Beta trên một điểm cuối riêng, không phải là một phần của ba API AIHubMix.
  • Khoảng cách ~120× giữa giá cả cache-hit và cache-miss: Cơ chế định giá được công bố của DeepSeek là cache-hit $0.003625/M so với cache-miss $0.435/M (đầu ra $0.87/M), và việc lưu trữ là tự động mà không cần tham số nào để thiết lập. Đối với các khối lượng công việc tái sử dụng các tiền tố dài (lời nhắc hệ thống, tài liệu dài), khoảng cách đó chiếm ưu thế trong hóa đơn. Giá bán lẻ thực tế là bất cứ điều gì mà trang mô hình hiển thị.
Mục Giá trị
Tên mô hình trên AIHubMix deepseek-v4-pro-0813
Cửa sổ ngữ cảnh 1M token (1,000,000)
Đầu ra tối đa Ngôn từ chính thức là MAX OUTPUT MAXIMUM: 384K (số lượng token chính xác và mặc định không được công bố)
Các phương thức đầu vào Chỉ văn bản. Trang tương thích Responses rõ ràng tuyên bố rằng đầu vào hình ảnh và tệp không được hỗ trợ; trang Messages rõ ràng đánh dấu các khối type="image" là Không Hỗ Trợ; trên Chat Completions, tin nhắn của người dùng content chỉ chấp nhận một chuỗi, không có các phần nội dung đa phương thức
Chế độ tư duy Kết hợp (tư duy / không tư duy), tư duy bật theo mặc định
Mức độ tư duy reasoning_effort chấp nhận low / high / max, mặc định high; mediumxhigh được ánh xạ tới high để tương thích
Các API có sẵn Chat Completions, Responses, Messages (tương thích với Claude)
Đã xác minh: vượt quá max_tokens sẽ bị từ chối bởi xác thực thay vì bị cắt ngắn một cách im lặng — gửi max_tokens=9999999 trả về HTTP 400, và phần lỗi nêu tên trường và đưa ra giới hạn 393216.
# max_tokens=9999999 -> HTTP 400
"...max_tokens... 393216"
Hình ảnh không gây ra lỗi, nhưng chúng sẽ bị loại bỏ: ngôn từ chính thức cho API Responses là "Đầu vào hình ảnh và tệp không được hỗ trợ (các phần input_image không gây ra lỗi, nhưng được thay thế bằng văn bản giữ chỗ)" — một phần input_image không làm thất bại yêu cầu, nó được thay thế bằng văn bản giữ chỗ. Trên Chat Completions, tin nhắn của người dùng content chỉ nhận một chuỗi, và trên Messages, các khối type="image" được đánh dấu là Không Hỗ Trợ. Khi xây dựng định tuyến đa phương thức, đừng bao giờ coi "không có lỗi" là bằng chứng rằng mô hình thực sự đã thấy hình ảnh.

2. Làm thế nào để tắt tư duy? Ba API, Ba hình dạng trường

V4 Pro tư duy theo mặc định: không gửi tham số nào cả và phản hồi sẽ trở lại với nội dung tư duy. Tắt nó đi sử dụng một hình dạng trường khác nhau trên mỗi ba API.

Chat Completions

Sử dụng đối tượng thinking cấp cao nhất.

from openai import OpenAI

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

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "What is 2 + 2?"}],
    extra_body={"thinking": {"type": "disabled"}},
)

# Tư duy bật  (mặc định): message.reasoning_content có mặt, reasoning_tokens = 43
# Tư duy tắt (đã tắt): reasoning_content vắng mặt, reasoning_tokens vắng mặt
Đã xác minh: với thinking.type="disabled", cả message.reasoning_contentusage.completion_tokens_details.reasoning_tokens biến mất cùng nhau, điều này xác nhận rằng công tắc đã có hiệu lực.

Responses

Không có công tắc riêng trên Responses; tắt tư duy có nghĩa là thiết lập mức độ thành none.

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="What is 2 + 2?",
    reasoning={"effort": "none"},
)

# effort="none": usage.output_tokens_details.reasoning_tokens = 0
#                output[0] là mục tin nhắn trực tiếp (không có mục lý luận)
# effort không được thiết lập : đầu ra luôn bắt đầu với một mục lý luận
Đã xác minh: reasoning.effort="none" khác biệt rõ rệt so với mức độ mặc định (các token tư duy giảm xuống 0, mục reasoning trong đầu ra biến mất), điều này xác nhận rằng nó đã có hiệu lực.

Messages

Cùng tên và cùng hình dạng như Chat Completions: đối tượng thinking cấp cao nhất.

from anthropic import Anthropic

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

response = client.messages.create(
    model="deepseek-v4-pro-0813",
    max_tokens=1024,
    messages=[{"role": "user", "content": "What is 2 + 2?"}],
    extra_body={"thinking": {"type": "disabled"}},
)

# Tư duy bật  (mặc định): nội dung = [khối tư duy, khối văn bản]
# Tư duy tắt (đã tắt): nội dung = [khối văn bản]
Đã xác minh: khi đã tắt, khối thinking hoàn toàn biến mất và chỉ còn lại khối text.
Về các mức độ tư duy: lowmax đều trả về 200 trên Chat Completions trong thử nghiệm (high là mặc định và áp dụng khi trường bị bỏ qua), nhưng số lượng token tư duy cho cùng một câu hỏi không cho thấy sự khác biệt đơn điệu giữa các mức độ (câu hỏi dễ: low=43 / max=27; câu hỏi khó: low=114 / max=92), và không có gì được phản hồi lại trong phản hồi — các mức độ được chấp nhận, nhưng không có tín hiệu phân biệt nào có thể quan sát được từ phản hồi. Trên Responses, chỉ có mức none (tư duy tắt) có thể được xác nhận từ phía phản hồi.

3. Tại sao một cuộc hội thoại nhiều lượt lại đột nhiên trả về 400? Lịch sử tư duy phải được trả lại nguyên văn

Đây là cạm bẫy phổ biến nhất với mô hình này: trong chế độ tư duy, một cuộc hội thoại nhiều lượt phải trả lại nội dung tư duy của lượt trước một cách nguyên văn, nếu không yêu cầu sẽ bị từ chối. Không bị giảm chất lượng, không thấp hơn — một HTTP 400 cứng.

Các API mang nội dung tư duy giống nhau dưới các tên trường khác nhau:

API Hình dạng passback Nội dung lỗi khi thiếu
Chat Completions Trường reasoning_content trên tin nhắn trợ lý Nội dung `reasoning_content` trong chế độ tư duy phải được trả lại cho API.
Responses Mục đầu ra với type="reasoning" trong mảng input Nội dung `reasoning_text` trong chế độ tư duy phải được trả lại cho API.
Messages Khối thinking bên trong các khối nội dung trợ lý Nội dung `content[].thinking` trong chế độ tư duy phải được trả lại cho API.
Đã xác minh (các điều kiện kích hoạt): xác thực này xảy ra nhất quán trên các yêu cầu nhiều lượt mang theo tools (mô hình thực hiện một cuộc gọi công cụ, sau đó kết quả công cụ được gửi lại). Trên các yêu cầu nhiều lượt đơn giản mà không có công cụ, nơi mô hình trả lời trực tiếp, xác thực không xảy ra trong vòng thử nghiệm này và yêu cầu trả về 200. Nói cách khác, việc điều phối công cụ (tác nhân / công việc gọi hàm) là nơi bạn có khả năng gặp phải điều này nhất, vì vậy hãy coi nội dung tư duy như một phần của trạng thái hội thoại mà bạn duy trì và phát lại.

Chat Completions

# Nhiều lượt: trả lại tin nhắn trợ lý trước đó nguyên văn, bao gồm reasoning_content
messages = [
    {"role": "user", "content": "What is 1 + 1? Remember the result."},
    {
        "role": "assistant",
        "content": "2",
        "reasoning_content": "<nội dung_reasoning từ phản hồi trước>",
    },
    {"role": "user", "content": "Add 1 to the result."},
]

# Bỏ qua reasoning_content -> HTTP 400 invalid_request_error
Đã xác minh: một tin nhắn trợ lý lịch sử thiếu reasoning_content trả về 400; thêm lại nó làm cho yêu cầu giống hệt trả về 200 và tiếp tục đúng cách.

Responses

# Nhiều lượt: input = đầu vào trước + response.output (bao gồm mục lý luận) + tin nhắn mới
input = previous_input + response.output + [
    {"role": "user", "content": "Add 1 to the result."}
]

# Lọc ra mục type="reasoning" -> HTTP 400
Đã xác minh: việc ghép response.output trở lại như vậy là tất cả những gì cần thiết. Lọc các mục đầu ra theo type == "message" trong khi lắp ráp lịch sử sẽ loại bỏ mục reasoning và kích hoạt 400 — đây là cách phổ biến nhất để bị mắc kẹt.

Messages

# Nhiều lượt: trả lại response.content nguyên văn như tin nhắn trợ lý
messages = [
    {"role": "user", "content": "What's the weather in Paris?"},
    {"role": "assistant", "content": response.content},   # các khối thinking + tool_use
    {"role": "user", "content": [tool_result_block]},
]

# Bỏ khối thinking -> HTTP 400
Đã xác minh: việc loại bỏ khối thinking khỏi mảng nội dung trả về 400 (với error.type được đặt thành invalid_request_error).

4. Gọi công cụ

Mỗi API khai báo các công cụ theo hình dạng giao thức riêng của nó; các hình dạng không thể hoán đổi cho nhau.

Chat Completions

Hình dạng lồng nhau (một đối tượng function bao bọc name / parameters). Một tool_choice có tên buộc cuộc gọi.

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "What's the weather in Paris?"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get weather for a city",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        },
    }],
    tool_choice={"type": "function", "function": {"name": "get_weather"}},
)

# Quan sát: finish_reason "tool_calls", tool_calls[0].function.arguments = {"city": "Paris"}
Đã xác minh: tool_choice: "required" không thể được sử dụng trong khi tư duy đang bật — nó trả về 400 Chế độ tư duy không hỗ trợ tool_choice này; tắt tư duy (thinking.type="disabled") làm cho yêu cầu giống hệt trả về 200. Khi bạn cần ngữ nghĩa "phải gọi một công cụ", hãy sử dụng một tool_choice có tên thay thế (như trên, hoạt động với tư duy bật), hoặc tắt tư duy trước và sau đó sử dụng required.

Responses

Hình dạng phẳng (type / name / parameters ở cùng một cấp độ).

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="What's the weather in Paris?",
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "Get weather for a city",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
)

# Các mục đầu ra quan sát được: ["reasoning", "function_call"]; arguments = {"city": "Paris"}
Đã xác minh: sao chép hình dạng lồng nhau của Chat Completions (function: {...}) vào Responses trả về 400 — hãy sử dụng hình dạng phẳng. tool_choice: "required" cũng chịu sự hạn chế chế độ tư duy giống như trên Chat.

Messages

Hình dạng gốc của Anthropic (input_schema), với tool_choice: {"type": "any"} để buộc một cuộc gọi.

response = client.messages.create(
    model="deepseek-v4-pro-0813",
    max_tokens=1024,
    tools=[{
        "name": "get_weather",
        "description": "Get weather for a city",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    tool_choice={"type": "any"},
    messages=[{"role": "user", "content": "What's the weather in Paris?"}],
)

# Quan sát: nội dung chứa một khối tool_use, name = get_weather, input = {"city": "Paris"}
Việc gọi công cụ song song không thể bị tắt, theo thiết kế của DeepSeek — trang tương thích chính thức của Anthropic tuyên bố, trên hàng tool_choice, rằng disable_parallel_tool_use is ignored, và trang Responses cũng tuyên bố parallel_tool_calls | Bị bỏ qua (gọi công cụ song song luôn được bật). Thử nghiệm khớp: hỏi về hai thành phố cùng một lúc với disable_parallel_tool_use: true vẫn trả về hai khối tool_use. Nếu bạn cần thực thi tuần tự, hãy lấy cuộc gọi đầu tiên hoặc xếp hàng chúng trên phía máy khách.
Số lượng công cụ và chi phí ngữ cảnh: gửi 200 định nghĩa hàm trong một yêu cầu duy nhất vẫn trả về 200 với một câu trả lời bình thường và không kích hoạt bất kỳ xác thực số lượng nào (được quan sát trên con đường này; số lượng cao hơn không được thử nghiệm). Nhưng prompt_tokens cho yêu cầu đó đạt 6,105 — các định nghĩa công cụ được đưa vào ngữ cảnh đầy đủ và bị tính phí. Khi bạn có nhiều công cụ, hãy cắt giảm bộ công cụ theo kịch bản thay vì khai báo mọi thứ một cách vô điều kiện.

5. Đầu ra có cấu trúc

Chat Completions

response_format hỗ trợ chế độ JSON.

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "Return {\"a\": 1} as JSON."}],
    response_format={"type": "json_object"},
)

# Nội dung phản hồi quan sát được: {"a":1}
Đã xác minh: đầu ra là JSON hợp lệ.

Responses

Khai báo một JSON Schema thông qua text.format, với chế độ strict được hỗ trợ.

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Return the number 1 under key a.",
    text={
        "format": {
            "type": "json_schema",
            "name": "extract",
            "strict": True,
            "schema": {"type": "object", "properties": {"a": {"type": "integer"}}, "required": ["a"]},
        }
    },
)

# Nội dung văn bản quan sát được: {"a":1}
Đã xác minh: đầu ra tuân thủ nghiêm ngặt theo sơ đồ đã cho.

Messages

Giao thức Messages (Anthropic) không có tương đương với response_format / text.format. Giải pháp thông thường là mang theo sơ đồ trong một công cụ — khai báo một công cụ mà input_schema là sơ đồ mục tiêu của bạn, đặt tool_choice: {"type": "any"}, và đọc kết quả có cấu trúc từ input của khối tool_use. Vòng thử nghiệm này không xác minh cụ thể mẫu đó; khi bạn cần đảm bảo sơ đồ cứng, hãy ưu tiên Chat Completions hoặc Responses.

6. Làm thế nào để bạn kích hoạt bộ nhớ đệm ngữ cảnh? Bạn không cần, nó tự động

Bộ nhớ đệm ngữ cảnh (các tiền tố giống hệt được tái sử dụng, và phần được lưu trữ được tính phí ở mức thấp hơn) là đã bật theo mặc định và không cần tham số nào. Một yêu cầu thứ hai với cùng một tiền tố dài báo cáo hit trong usage, dưới một tên trường thay đổi theo API. Để biết chi tiết về bộ nhớ đệm và giá cả hiện tại, hãy xem trang mô hình; để biết chiến lược bộ nhớ đệm chéo mô hình và các kỹ thuật tỷ lệ hit, hãy xem thực hành bộ nhớ đệm lời nhắc.

Chat Completions

# sử dụng cuộc gọi thứ hai với một tiền tố dài giống hệt
"prompt_tokens_details": {"cached_tokens": 640}   # cuộc gọi đầu tiên: 0
Đã xác minh: hai cuộc gọi liên tiếp với cùng một tiền tố dài trên cùng một kênh đã chuyển cached_tokens từ 0 thành 640.

Responses

# sử dụng cuộc gọi thứ hai với các hướng dẫn dài giống hệt
"input_tokens_details": {"cached_tokens": 896}    # cuộc gọi đầu tiên: 0

Messages

# sử dụng một cuộc gọi mà tiền tố hệ thống dài đã được làm ấm
"cache_read_input_tokens": 896
Đã xác minh: tiền tố trên đã được làm ấm bởi một yêu cầu Responses với nội dung giống hệt, và cuộc gọi Messages đầu tiên đã đạt 896 ngay lập tức — nhất quán với việc bộ nhớ đệm được khóa theo tiền tố nội dung và chia sẻ giữa các bề mặt giao thức.

7. logprobs: Chat trả về hai kênh

logprobs (xác suất log — chi tiết độ tin cậy của mô hình cho mỗi token ứng cử viên) trở lại dưới các hình dạng khác nhau trên hai API, và mã phân tích phải xử lý chúng riêng biệt.

Chat Completions

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "Say hi."}],
    logprobs=True,
    top_logprobs=2,
)

# Quan sát: choices[0].logprobs chứa HAI mảng
#   logprobs.content[]            -> các token của câu trả lời cuối cùng
#   logprobs.reasoning_content[]  -> các token của văn bản tư duy
Đã xác minh: Chat trả về xác suất log cho cả contentreasoning_content. Mã chỉ đọc logprobs.content, theo hình dạng phản hồi tiêu chuẩn của OpenAI, sẽ không gây lỗi nhưng sẽ im lặng bỏ lỡ kênh tư duy; nếu mã của bạn giả định một mảng duy nhất dưới logprobs, hãy thêm một kiểm tra hình dạng trước.

Responses

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Say hi.",
    top_logprobs=3,
)

# Quan sát: logprobs chỉ trên mục tin nhắn cuối cùng
#   output[-1].content[0].logprobs[] với logprob + chi tiết top_logprobs
Đã xác minh: Responses chỉ đính kèm logprobs vào mục văn bản cuối cùng — không có hình dạng kênh đôi nào thấy trên Chat.

Messages

Giao thức Messages (Anthropic) không có trường tương đương. Để biết chi tiết xác suất ở cấp độ token, hãy sử dụng Chat Completions hoặc Responses.

8. Các API nào có thể tìm kiếm trên web?

Tìm kiếm web ở đây là một công cụ phía máy chủ (việc truy xuất diễn ra trên máy chủ; máy khách không bao giờ thực hiện yêu cầu đó), và nó thực sự thực hiện trên cả API Responses và Messages trong thử nghiệm.

Responses

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="What is the latest stable version of Python?",
    tools=[{"type": "web_search"}],
)

# Chuỗi mục đầu ra quan sát được:
# ["reasoning", "web_search_call", "reasoning", "message"]
Đã xác minh: một mục web_search_call xuất hiện trong chuỗi đầu ra, điều này có nghĩa là máy chủ thực sự đã thực hiện một yêu cầu truy xuất.

Messages

response = client.messages.create(
    model="deepseek-v4-pro-0813",
    max_tokens=1024,
    tools=[{"type": "web_search_20250305", "name": "web_search"}],
    messages=[{"role": "user", "content": "What is the latest stable version of Python?"}],
)

# Chuỗi khối nội dung quan sát được:
# ["thinking", "server_tool_use", "web_search_tool_result", "thinking", "text"]
# usage.server_tool_use.web_search_requests = 1
Đã xác minh: usage.server_tool_use.web_search_requests đếm 1 — yêu cầu truy xuất thực sự đã xảy ra và được đo lường.

Chat Completions

Tìm kiếm web không thể được kích hoạt trên Chat. Tài liệu tham khảo API Chat chính thức của DeepSeek không chứa trường công cụ tìm kiếm nào trong sơ đồ yêu cầu (đó là một sự vắng mặt được thiết lập bằng cách kiểm tra danh sách trường từng cái một; DeepSeek không đưa ra tuyên bố rõ ràng nào về việc từ chối hỗ trợ). API có tuyên bố hỗ trợ chính thức cho tìm kiếm phía máy chủ là Responses (web_search), và trang tương thích Messages chính thức cũng liệt kê các khối nội dung liên quan đến tìm kiếm.

# Ba nhóm kiểm soát, cùng một câu hỏi yêu cầu thông tin trực tiếp, tất cả đều HTTP 200:
# A không có trường tìm kiếm       -> "cannot retrieve", annotations = null
# B web_search_options    -> "cannot retrieve", annotations = null, usage giống hệt A
# C enable_search         -> "cannot retrieve", annotations = null, usage giống hệt A
Đã xác minh: gửi web_search_options hoặc enable_search không gây ra lỗi, nhưng cũng không truy xuất được gì — phản hồi không mang theo annotations (danh sách trích dẫn đính kèm phản hồi khi tìm kiếm web diễn ra), và việc sử dụng khớp với nhóm kiểm soát trường cho trường. Để truy cập web, hãy sử dụng API Responses hoặc Messages thay vào đó.

9. Ghi chú sử dụng: Thiết kế của DeepSeek so với các sai lệch trên con đường của chúng tôi

Tất cả những điều dưới đây đều trả về HTTP 200 trong khi hành xử ngược lại với trực giác. Các nguyên nhân khác nhau, và những gì bạn nên làm về chúng cũng khác nhau, vì vậy chúng được liệt kê riêng biệt: nhóm đầu tiên là cách DeepSeek thiết kế mô hình, và việc thay đổi nhà cung cấp sẽ không thay đổi điều đó; nhóm thứ hai là hành vi hiện tại trên con đường AIHubMix, mà chúng tôi đang làm việc để cải thiện.

9.1 Theo thiết kế của DeepSeek

Hành vi Ngôn từ chính thức Bạn nên làm gì
Responses không giữ trạng thái phiên hoặc siêu dữ liệu Trang tương thích Responses chính thức tuyên bố, hàng này hàng khác, store | Không được hỗ trợ. Phản hồi luôn mang theo store: false, metadata | Không được hỗ trợ, và safety_identifier | Không được hỗ trợ (trong bốn trường đó, chỉ có user là Được Hỗ Trợ). Thử nghiệm khớp: yêu cầu trả về 200, nhưng metadata là null, safety_identifier vắng mặt, và store luôn là false Giữ dữ liệu tương quan yêu cầu trên máy khách; không dựa vào việc lưu trữ phía máy chủ
Các tham số lấy mẫu không có tác dụng trong chế độ tư duy DeepSeek tuyên bố rõ ràng rằng temperaturetop_p không có tác dụng trong chế độ tư duy. Trong thử nghiệm, cả hai đều trả về 200 mà không có gì được phản hồi lại và không có thay đổi nào trong hình dạng phản hồi Không dựa vào các tham số lấy mẫu để ổn định đầu ra trong chế độ tư duy; sử dụng đầu ra có cấu trúc khi bạn cần tính ổn định
Tiếp tục tiền tố / FIM chỉ có trên điểm cuối beta chính thức Mô tả chính thức về prefix là "(Beta) … Bạn phải đặt base_url="https://api.deepseek.com/beta" để sử dụng tính năng này", và hoàn thành FIM cũng là một tính năng Beta. Đã xác minh trên sản xuất AIHubMix: gửi prefix: true chống lại điểm cuối tiêu chuẩn trả về 200 nhưng tiền tố bị loại bỏ một cách im lặng, nhất quán với ngôn từ chính thức Để định dạng đầu ra có kiểm soát, hãy sử dụng đầu ra có cấu trúc (mục 5) hoặc cắt ngắn stop
Gọi công cụ song song không thể bị tắt Xem mục 4: DeepSeek tuyên bố trên cả trang Responses và Anthropic rằng công tắc bị bỏ qua và gọi song song luôn được bật Xếp hàng các cuộc gọi trên máy khách khi bạn cần thực thi tuần tự

9.2 Hành vi hiện tại trên con đường AIHubMix

Hành vi Thử nghiệm cho thấy Bạn nên làm gì
type không chuẩn trên các đối tượng lỗi Responses Giá trị error.type trên các phản hồi 4xx là Aihubmix_api_error, trong khi cùng một loại lỗi trên Messages trả về invalid_request_error chuẩn Phân nhánh theo mã trạng thái HTTP, không theo chuỗi error.type
Các token tư duy được tính là 0 trên Messages Phản hồi có mang theo một khối thinking, nhưng usage.output_tokens_details.thinking_tokens luôn là 0, điều này mâu thuẫn với nội dung tư duy thực tế được sản xuất; theo hợp đồng Anthropic mà chúng tôi tích hợp, trường đó là bắt buộc và nên ≤ output_tokens Để tính toán chi phí tư duy, hãy sử dụng completion_tokens_details.reasoning_tokens trên Chat hoặc output_tokens_details.reasoning_tokens trên Responses
Messages phản hồi modeldeepseek-v4-pro Yêu cầu gửi deepseek-v4-pro-0813 và phản hồi phản ánh deepseek-v4-pro. Nguyên nhân là do tên gọi: tên mô hình API chính thức duy nhất của DeepSeek là deepseek-v4-pro, và 0813 là nhãn phiên bản của nó Không làm cho trường model trong phản hồi trở thành cơ sở duy nhất cho các kiểm tra định tuyến mô hình hoặc ghi nhận sử dụng

9.3 Không xác định bởi DeepSeek, vì vậy không có phán quyết nào cả

Gửi một giá trị ngoài enum cho reasoning_effort (ví dụ: bogus_xyz) trả về 200 với một câu trả lời bình thường, không có lỗi và không có tác động quan sát được. Thực tế là rõ ràng — con đường này hiện không xác thực enum reasoning_effort. Điều không rõ là liệu nó nên: DeepSeek công bố enum hợp pháp nhưng không bao giờ tuyên bố liệu một mức độ bất hợp pháp có nên bị từ chối hay không, vì vậy không có cơ sở nào để đánh giá, điều này có nghĩa là điều này không được coi là hành vi chính thức cũng như không phải là một lỗi trên con đường của chúng tôi. Cách tiếp cận an toàn ở phía máy khách: tự xác thực mức độ và không dựa vào API để phát hiện nó.

10. Ma trận Hỗ trợ × API

Các ô dưới đây cung cấp cách viết tham số / trường cho mỗi API. Ngoại trừ nơi được đánh dấu là ngôn từ rõ ràng của DeepSeek, mọi kết luận đều đến từ các cuộc gọi thực tế được thực hiện vào ngày 2026-08-13 chống lại các API sản xuất AIHubMix.

Khả năng Chat Completions Responses Messages
Hướng dẫn trò chuyện cơ bản / hệ thống messages input + instructions messages + system cấp cao nhất
Phát trực tiếp stream + stream_options stream (response.createdresponse.completed) stream (message_startmessage_stop)
Trần đầu ra max_tokens (400 khi vượt quá, trần 393216) max_output_tokens max_tokens
Tắt tư duy thinking: {"type": "disabled"} reasoning: {"effort": "none"} thinking: {"type": "disabled"}
Mức độ tư duy 🟡 reasoning_effort được chấp nhận, không có tín hiệu phân biệt reasoning.effort (chỉ none có thể xác nhận) 🟡 output_config.effort được chấp nhận, không có gì được phản hồi lại
Nội dung tư duy được trả lại reasoning_content trường reasoning mục đầu ra thinking khối nội dung
Yêu cầu bắt buộc về lịch sử tư duy passback ✅ thiếu reasoning_content → 400 ✅ thiếu reasoning item → 400 ✅ thiếu thinking block → 400
Gọi công cụ ✅ lồng nhau tools + tool_choice có tên ✅ phẳng tools input_schema + tool_choice: {"type":"any"}
Buộc một cuộc gọi với required ❗ 400 trong khi tư duy đang bật; tắt tư duy trước ❗ giống như bên trái {"type": "any"}
Gọi công cụ song song (không thể tắt) ➖ không có trường như vậy trên API Chat chính thức ❗ DeepSeek tuyên bố parallel_tool_calls bị bỏ qua và gọi song song luôn được bật ❗ DeepSeek tuyên bố disable_parallel_tool_use bị bỏ qua; thử nghiệm vẫn trả về hai khối tool_use
Đầu ra có cấu trúc response_format (json_object) text.format (json_schema + strict) ➖ không có trường giao thức; mang theo sơ đồ trong một công cụ
Đo lường hit tự động usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens usage.cache_read_input_tokens
logprobs ❗ kênh đôi: content + reasoning_content top_logprobs chỉ trên mục văn bản cuối cùng
Tìm kiếm web ➖ không có trường tìm kiếm trên API Chat chính thức; gửi một cái cũng không truy xuất được gì tools: [{"type": "web_search"}] web_search_20250305
Chuỗi dừng stop ➖ không có trường chuỗi dừng trong giao thức (chỉ max_output_tokens giới hạn chiều dài) stop_sequences (stop_reason: "stop_sequence")

Chú thích: ✅ đã xác minh hoạt động · 🟡 được chấp nhận nhưng không thể xác nhận hiệu quả · ❗ cần chú ý (xem các ghi chú ở trên) · ➖ không có khái niệm như vậy trên API này

Câu hỏi thường gặp

Các API nào mà deepseek-v4-pro-0813 hỗ trợ trên AIHubMix?
Chat Completions (/v1/chat/completions), Responses (/v1/responses), và API Messages tương thích với Claude (/v1/messages).

Tại sao một cuộc hội thoại nhiều lượt lại đột nhiên trả về 400?
Nguyên nhân phổ biến nhất là lịch sử tư duy không được trả lại. Trong chế độ tư duy, nội dung tư duy của lượt trước phải được phát lại nguyên văn: reasoning_content trên tin nhắn trợ lý cho Chat, mục đầu ra type="reasoning" cho Responses, và khối nội dung thinking cho Messages. Nhiều lượt với công cụ là nơi điều này gây khó khăn nhất — nhiều khung lọc các mục đầu ra theo type == "message" trong khi lắp ráp lịch sử, điều này làm rơi mục lý luận.

Có thể tắt tư duy không?
Có. Gửi thinking: {"type": "disabled"} trên Chat hoặc Messages, và reasoning: {"effort": "none"} trên Responses. Khi đã tắt, cả nội dung tư duy và các token tư duy đều biến mất.

Các mức độ reasoning_effort có khác nhau không?
low / high / max đều được chấp nhận (mặc định high; mediumxhigh được ánh xạ tới high để tương thích). Trong thử nghiệm, số lượng token tư duy cho cùng một câu hỏi không cho thấy sự khác biệt đơn điệu giữa các mức độ và không có gì được phản hồi lại, vì vậy sự khác biệt không thể được xác nhận từ phía người gọi. Chỉ có mức none trên Responses (tư duy tắt) tạo ra sự khác biệt rõ ràng có thể quan sát được.

Tại sao tool_choice: "required" lại trả về 400?
Giá trị đó không được chấp nhận trong khi tư duy đang bật (phần lỗi đọc Chế độ tư duy không hỗ trợ tool_choice này). Sử dụng một tool_choice có tên ({"type": "function", "function": {"name": "..."}}) để buộc một cuộc gọi cụ thể với tư duy bật, hoặc tắt tư duy trước và sau đó sử dụng required.

Làm thế nào để bạn kích hoạt bộ nhớ đệm ngữ cảnh?
Bạn không cần — nó là tự động. Đặt nội dung ổn định, không thay đổi (lời nhắc hệ thống, đoạn kiến thức, định nghĩa công cụ) ở phía trước của yêu cầu, và số lượng hit được báo cáo trong usage: prompt_tokens_details.cached_tokens trên Chat, input_tokens_details.cached_tokens trên Responses, và cache_read_input_tokens trên Messages.


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

Các hướng dẫn thực hành liên quan: Hướng dẫn thực hành Kimi K3 (các tham số mới và ma trận hỗ trợ ba API) và Thay đổi bộ nhớ đệm và tính phí GPT-5.6.