Di chuyển sang DeepSeek V4.1 Flash 1017: Lỗi 400 do reasoning_content, việc đổi mô hình âm thầm và giá cước giờ cao điểm

AIHubMixĐọc 9 phút
Di chuyển sang DeepSeek V4.1 Flash 1017: Lỗi 400 do reasoning_content, việc đổi mô hình âm thầm và giá cước giờ cao điểm

Hầu hết các đợt di chuyển bắt đầu bằng việc đổi tên mô hình. DeepSeek V4.1 Flash 1017 đi theo hướng ngược lại: vào ngày 17 tháng 10 năm 2026, DeepSeek giữ nguyên tên deepseek-flash và thay đổi mô hình đứng sau tên đó. Bất kỳ ai gọi deepseek-flash, deepseek-v4-flash hoặc deepseek-v4-flash-vision-exp trên API của DeepSeek đều đã được chuyển sang mô hình mới mà không cần sửa một dòng code nào.

Trên AIHubMix, checkpoint mới có ID riêng là deepseek-v4.1-flash-1017, nên bạn có thể tự chọn thời điểm chuyển. Dù thế nào, đây là các vấn đề cần kiểm tra:

Vấn đề Mức độ lỗi Dấu hiệu nhận biết
Không gửi lại reasoning_content Rõ ràng Lỗi 400 sau lần gọi công cụ đầu tiên
Mô hình bị đổi dưới cùng một tên Âm thầm Độ dài đầu ra, định dạng, điểm đánh giá
Giá cước giờ cao điểm Âm thầm Hóa đơn tăng gấp đôi vào giờ cao điểm các ngày trong tuần
Effort mặc định được đặt là max Âm thầm Các phiên chạy agent dài hơn 1,6–1,8 lần
Phần suy luận được tính vào max_tokens Cả hai Câu trả lời bị cắt cụt
Giá cước Search và Fetch Âm thầm Từ 16:00 UTC ngày 31/10

AIHubMix đã chạy một bộ yêu cầu thử nghiệm ngắn với deepseek-v4.1-flash-1017 vào ngày 19 tháng 10 năm 2026 (03:02 UTC). Kết quả từ lần chạy đó được đánh dấu bên dưới.

1. Lỗi 400 làm gián đoạn vòng lặp công cụ

Bạn sẽ thấy gì. Yêu cầu thứ hai sau một lần gọi công cụ thất bại với HTTP 400 và thông báo sau, như được ghi nhận trong một issue trên GitHub của opencodex đối với V4.1 Flash vào ngày 15 tháng 10:

[invalid_request_error] The `reasoning_content` in the thinking mode must be passed back to the API.

Cùng nội dung này cũng xuất hiện trong các báo cáo trước đó đối với opencode, LangChain và claude-code-router với V4 Pro và V4 Flash.

Nguyên nhân. Hướng dẫn chế độ thinking của DeepSeek nêu rằng khi yêu cầu có tools, reasoning_content của mọi lượt trợ lý trước đó phải được gửi lại, "ngay cả với những lượt mà mô hình không thực hiện gọi công cụ". Nếu không, "API sẽ trả về lỗi 400". Khi không có tools, việc gửi lại là tùy chọn và bị bỏ qua. Các client thường mắc lỗi này vì bộ serialize tin nhắn của họ giữ lại content và tool_calls nhưng bỏ đi trường bổ sung.

Yêu cầu gây ra lỗi. Lượt thứ hai của một vòng lặp công cụ, với tin nhắn trợ lý đã bị loại bỏ reasoning_content:

curl -s https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash-1017",
    "tools": [{"type": "function", "function": {"name": "get_weather",
      "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}],
    "messages": [
      {"role": "user", "content": "What is the temperature in Hangzhou? Use the tool."},
      {"role": "assistant", "content": null, "tool_calls": [{"id": "call_00_example", "type": "function",
        "function": {"name": "get_weather", "arguments": "{\"city\": \"Hangzhou\"}"}}]},
      {"role": "tool", "tool_call_id": "call_00_example", "content": "{\"celsius\": 18}"}
    ]
  }'

Trên API chính thức của DeepSeek, dạng yêu cầu này trả về lỗi 400 trong các báo cáo công khai. Qua AIHubMix, cùng dạng yêu cầu đó trả về HTTP 200 và câu trả lời bình thường trong lần chạy thử nghiệm ngày 19 tháng 10. Đây chỉ là một lần chạy, vì vậy đừng coi đó là điều được đảm bảo.

Cách khắc phục. Giữ lại trường này, bất kể bạn dùng đường nào:

msg = resp.choices[0].message
messages.append(msg)  # carries content, reasoning_content, and tool_calls over
  • Trong code của riêng bạn, hãy thêm toàn bộ tin nhắn trợ lý, không tự tạo lại một bản sao thủ công.
  • Với các framework, hãy nâng cấp: opencode đã sửa vòng lặp này ở các bản phát hành sau, còn opencodex đã hợp nhất bản sửa của họ vào ngày 16 tháng 10.
  • Phương án cuối cùng, đặt {"thinking": {"type": "disabled"}} cho các vòng lặp công cụ. Cách này tránh được lỗi nhưng đánh đổi phần suy luận giúp mô hình làm tốt các tác vụ agent.

2. Cùng một tên, một mô hình khác

Changelog của DeepSeek ngày 17 tháng 10 nói rõ: "Cách gọi API và giá cước không thay đổi — chỉ cần dùng deepseek-flash để truy cập mô hình mới nhất." Không có tên cố định cho checkpoint tháng 9, và hai tên Flash cũ hơn hiện cũng chạy trên bản 1017.

Không có lỗi nào xuất hiện, nhưng có ba điều có thể thay đổi:

  • Độ dài đầu ra. Bản 1017 được huấn luyện để tạo ra đầu ra ngắn hơn. Bộ phân tích cú pháp, bố cục giao diện và các prompt mong đợi phần giải thích dài của mô hình tháng 9 có thể nhận được ít văn bản hơn trước.
  • Mốc đánh giá. Điểm số và chi phí bạn ghi nhận trên checkpoint tháng 9 không còn phản ánh đúng những gì deepseek-flash trả về.
  • Hành vi. DeepSeek đã huấn luyện lại bản 1017 cho công việc dự án đầu cuối. Các agent có thể đi những con đường khác nhau để đạt cùng một kết quả.

Việc cần làm. Ghi lại mô hình và ngày với mọi lần chạy đánh giá, rồi chạy lại bộ kiểm thử hồi quy ngay bây giờ. Phản hồi cho biết checkpoint nào đã trả lời: trong bài thử nghiệm ngày 19 tháng 10, mọi phản hồi qua AIHubMix đều mang "model": "deepseek-v4-1-flash-261017". Hãy ghi log trường này, và một lần hoán đổi không báo trước sẽ trở nên dễ thấy ngay khi nó xảy ra.

3. Các quy tắc tính phí dễ bỏ sót

Giờ cao điểm và thấp điểm. DeepSeek tính giá đầy đủ vào 01:00–04:00 và 06:00–10:00 UTC các ngày trong tuần, và giảm một nửa giá vào mọi giờ khác, cả cuối tuần và các ngày lễ công cộng của Trung Quốc. AIHubMix áp dụng cùng khung giờ và tính giá mỗi yêu cầu theo thời điểm yêu cầu được gửi, vì vậy một yêu cầu streaming dài bắt đầu trong giờ thấp điểm sẽ vẫn được tính ở mức thấp điểm.

Hạng mục Cao điểm Thấp điểm
Đầu vào, cache miss $0.3098 $0.155
Đầu vào, cache hit $0.0062 $0.0031
Đầu ra $1.2392 $0.62

Giá niêm yết của AIHubMix trên mỗi 1M token cho deepseek-v4.1-flash-1017. Ưu đãi giảm 30% trong thời gian có hạn đang được áp dụng thêm.

Lượt cache hit rẻ hơn lượt cache miss 50 lần. Các agent gửi lại cùng system prompt, định nghĩa công cụ và lịch sử ở mỗi lần gọi. Hãy giữ phần tiền tố đó ổn định, đặt mọi nội dung thay đổi theo từng lần gọi ở cuối, và phần lớn mỗi yêu cầu sẽ được tính theo giá cache hit.

Suy luận được tính như đầu ra. Thinking được bật mặc định, và các token suy luận được tính vào cả hóa đơn lẫn max_tokens.

Search và Fetch. DeepSeek đã mở API Search và Fetch mới vào ngày 17 tháng 10, với giá 0,75 USD cho mỗi 1.000 lần gọi thành công cho mỗi API. Các lần gọi phía máy chủ thực hiện qua DeepSeek Harness, Claude Code hoặc Codex trên API của DeepSeek được miễn phí đến 16:00 UTC ngày 31 tháng 10 năm 2026. Sau thời điểm đó, một agent tìm kiếm ở mọi lượt sẽ phát sinh thêm chi phí theo từng lần gọi ngoài chi phí token.

Tổng chi phí. Với các giả định đã nêu (40 lần gọi, 1,2M token đầu vào với 90% cache hit, 60K token đầu ra), một phiên agent tốn 0,118 USD ở giờ cao điểm và 0,059 USD ở giờ thấp điểm theo giá niêm yết của AIHubMix. Chuyển các đợt chạy hàng loạt sang giờ thấp điểm là cách tiết kiệm lớn nhất.

4. Các cài đặt tốn kém hơn lợi ích mang lại

Effort. API cung cấp low, high (mặc định) và max. Bài báo về V4.1 Flash của DeepSeek ánh xạ chúng sang các giá trị effort nội bộ là 50, 75 và 100, và cho biết bước lên max "làm dài quỹ đạo agent thêm 1,6–1,8× chỉ để đạt cải thiện không đáng kể". Hướng dẫn thiết lập Claude Code của chính DeepSeek vẫn đặt CLAUDE_CODE_EFFORT_LEVEL=max. Với công việc agent hằng ngày, high là mặc định tốt hơn.

DeepSeek cũng ánh xạ các tên effort khác sang ba mức của mình: minimal thành low, còn medium và xhigh đều thành high. Một công cụ cung cấp năm mức thì thực tế chỉ cho bạn hai hoặc ba mức. Trong thử nghiệm ngày 19 tháng 10, AIHubMix chấp nhận low, high và max trên Chat Completions.

max_tokens. Model card khuyến nghị ít nhất 256K cho các lần chạy agent dài, vì phần suy luận dùng chung ngân sách đầu ra. Nếu đặt giới hạn nhỏ, một bước khó có thể dùng hết ngân sách để suy nghĩ. Hãy kiểm tra finish_reason: "length".

Tham số lấy mẫu. Ở chế độ thinking, temperature, presence_penalty và frequency_penalty được chấp nhận mà không báo lỗi nhưng không có tác dụng. top_p bị giới hạn trong khoảng 0,95–1,0. Nếu một pipeline dựa vào temperature thấp để có đầu ra xác định, nó sẽ không còn được hưởng điều đó nữa.

5. Agent có quyền truy cập thực tế

Bản 1017 được huấn luyện bằng học tăng cường trên toàn bộ dự án, nên nó có xu hướng tiếp tục xây dựng cho đến khi công việc trông như đã hoàn thành. Câu trả lời của nó cũng ngắn hơn, nghĩa là ít mô tả hơn về những gì đã thay đổi. Hai thói quen sau sẽ giúp ích:

  • Hãy xem diff và log lệnh, đừng chỉ đọc phần tóm tắt của mô hình.
  • Chạy nó trong sandbox với danh sách cho phép các lệnh, và yêu cầu phê duyệt đối với mọi thao tác phá hủy (xóa, force push, migration, các lệnh gọi mạng ra ngoài).

Chính DeepSeek cũng nêu bật thế mạnh của dòng Flash trong các tác vụ bảo mật; checkpoint tháng 9 đạt 88,1 điểm trên CyberGym trong bảng số liệu của DeepSeek. Điều đó hữu ích cho công việc phòng thủ, và là một lý do khác để giới hạn quyền của nó một cách chặt chẽ.

6. Các công cụ lập trình

AIHubMix phục vụ deepseek-v4.1-flash-1017 trên cả ba giao thức mà các công cụ lập trình cần. Trong thử nghiệm ngày 19 tháng 10, Chat Completions, Anthropic Messages (bao gồm một lần gọi công cụ hai lượt) và Responses API đều trả về 200.

Claude Code (Anthropic Messages). Trỏ nó tới AIHubMix như trong hướng dẫn Claude Code và đặt model:

export ANTHROPIC_BASE_URL="https://aihubmix.com"
export ANTHROPIC_AUTH_TOKEN="$AIHUBMIX_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4.1-flash-1017"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4.1-flash-1017"
export CLAUDE_CODE_EFFORT_LEVEL="high"
  • Thinking: trong thử nghiệm, một yêu cầu Messages không có cài đặt effort trả về mà không có khối thinking, còn yêu cầu có output_config.effort thì trả về thinking. Hãy giữ một mức effort được đặt để 1017 suy luận, và kiểm tra log yêu cầu.
  • Ngữ cảnh: hướng dẫn của DeepSeek thêm hậu tố [1m] vào tên model cho endpoint của chính họ; hậu tố đó chưa được thử nghiệm qua AIHubMix.
  • Vấn đề đã biết: qua một số router, Claude Code đã làm mất nội dung thinking và gặp lỗi 400 nêu trên (issue 1378 của claude-code-router). Bài thử nghiệm hai lượt gọi công cụ qua endpoint Messages của AIHubMix không gặp lỗi này.

Codex (Responses API). Làm theo hướng dẫn Codex CLI: một provider aihubmix với base_url = "https://aihubmix.com/v1" và wire_api = "responses", cùng model = "deepseek-v4.1-flash-1017". Để chọn nó từ /model, hãy thêm nó vào một file model_catalog_json với context_window đặt là 1,000,000.

  • Effort: script tạo catalog trong hướng dẫn cung cấp low, medium và high. Theo ánh xạ của DeepSeek, medium và high đều rơi vào high của DeepSeek, nên bạn thực tế chỉ có hai mức.
  • Vấn đề đã biết: các phiên bản Codex mới hơn sẽ bỏ toàn bộ catalog nếu thiếu một trường bắt buộc. Script trong hướng dẫn đã tránh được lỗi này.

DeepSeek Harness (Chat Completions). DeepSeek cho biết 1017 hoạt động tốt nhất với Harness 0.2.1-rc.1 trở lên. Hãy thêm AIHubMix như một provider tương thích OpenAI theo hướng dẫn DeepSeek Harness và thêm deepseek-v4.1-flash-1017 làm model. Hướng dẫn đó được viết cho một bản Harness cũ hơn, nên hãy kiểm tra lại tên trường nếu giao diện đã thay đổi.

Bài kiểm tra nhanh 15 phút. Tạo một repo nhỏ với một test thất bại:

mkdir flash-smoke && cd flash-smoke && git init -q
printf 'def mean(xs):\n    return sum(xs) / len(xs)\n' > stats.py
printf 'from stats import mean\n\ndef test_mean():\n    assert mean([1, 2, 3]) == 2\n\ndef test_empty():\n    assert mean([]) == 0\n' > test_stats.py

Khởi chạy công cụ của bạn trong thư mục đó và hỏi: "Chạy pytest, sửa test thất bại bằng cách chỉ thay đổi stats.py, rồi chạy lại pytest." Bài kiểm tra được coi là đạt nếu:

  • agent thực hiện ít nhất hai lần gọi công cụ (chạy test, chỉnh sửa file) mà không gặp lỗi 400;
  • cả hai test đều đạt ở cuối quá trình;
  • nhật ký yêu cầu của AIHubMix hiển thị deepseek-v4.1-flash-1017, và chi phí phiên làm việc nhiều nhất chỉ vài xu.

Danh sách kiểm tra khi di chuyển

  • Xác định model ID: deepseek-v4.1-flash-1017 trên AIHubMix.
  • Thêm toàn bộ tin nhắn assistant trong các vòng gọi công cụ để reasoning_content được gửi lại ở mọi lượt.
  • Chạy lại bộ kiểm thử hồi quy và đánh giá của bạn; ghi lại model, ngày tháng và trường response model.
  • Kiểm tra lại các bộ phân tích cú pháp và giao diện người dùng với đầu ra ngắn hơn.
  • Đặt effort mặc định là high; chỉ dùng max cho các tác vụ khó nhất.
  • Tăng max_tokens cho các lượt agent và đặt cảnh báo khi finish_reason là length.
  • Bỏ các giả định về tính xác định dựa trên temperature trong chế độ thinking.
  • Lên lịch các lần chạy agent theo lô và chạy qua đêm vào giờ thấp điểm.
  • Giữ ổn định tiền tố prompt để tận dụng cache.
  • Lên ngân sách cho các lệnh gọi Search và Fetch từ ngày 31 tháng 10 nếu bạn dùng công cụ phía máy chủ của DeepSeek.
  • Chạy agent trong môi trường sandbox với quyền thật và xem xét các diff, không chỉ bản tóm tắt.
  • Chạy bài kiểm tra nhanh 15 phút trong mỗi công cụ lập trình bạn sử dụng.

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

Tôi có cần thay đổi mã để dùng DeepSeek V4.1 Flash 1017 không?
Trên API của DeepSeek thì không: deepseek-flash đã trỏ tới 1017. Trên AIHubMix, hãy đổi tên model thành deepseek-v4.1-flash-1017.

Vì sao tôi nhận lỗi 400 về reasoning_content?
DeepSeek yêu cầu phải gửi lại reasoning_content của mọi lượt assistant trước đó khi yêu cầu có kèm tools. Các client bỏ trường này sẽ lỗi ở lần gọi sau lệnh gọi công cụ đầu tiên.

Lỗi 400 reasoning_content có xảy ra qua AIHubMix không?
Không xảy ra trong đợt kiểm thử của AIHubMix vào ngày 19 tháng 10 năm 2026, khi một lượt không có reasoning_content trả về 200. Vẫn nên gửi trường này, vì đây là quy tắc được DeepSeek ghi trong tài liệu.

Tôi còn có thể dùng V4.1 Flash bản tháng 9 trên API của DeepSeek không?
Không. DeepSeek đã chuyển deepseek-flash và các tên Flash cũ sang 1017, và không cung cấp tên cố định cho bản checkpoint tháng 9.

Khi nào DeepSeek V4.1 Flash rẻ hơn?
Ngoài khoảng 01:00 đến 04:00 và 06:00 đến 10:00 UTC vào các ngày trong tuần. Mọi giờ còn lại, cuối tuần và các ngày lễ công cộng ở Trung Quốc đều chỉ tốn một nửa.

Các coding agent nên dùng mức effort nào?
High, mức mặc định. Theo chính bài báo của DeepSeek, max làm kéo dài các lần chạy agent thêm 1,6 đến 1,8 lần để đổi lấy cải thiện nhỏ.

1017 có hoạt động trong Claude Code và Codex qua AIHubMix không?
Có. AIHubMix phục vụ model này trên giao thức Anthropic Messages và Responses mà các công cụ đó sử dụng, và cả hai đều vượt qua bài kiểm thử cơ bản vào ngày 19 tháng 10 năm 2026.

Đọc tiếp: loạt bài về DeepSeek V4.1 Flash 1017

Nguồn tham khảo