Chỉ gửi một trong hai. Anthropic ghi rõ quy tắc này cho Claude Haiku 4.5, các nhà phát triển gặp cùng lỗi 400 trên Claude Opus 4.6 và Sonnet 4.6, còn từ Claude Opus 4.7 trở đi quy tắc chặt hơn: không gửi tham số nào. Thủ phạm thường là client hoặc framework tự điền tham số mà bạn chưa từng đặt.
Lỗi
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "`temperature` and `top_p` cannot both be specified for this model. Please use only one."
},
"request_id": "req_..."
}Tổng quan nguyên nhân và cách khắc phục
| Nguyên nhân | Cách khắc phục |
|---|---|
| Mã của bạn hoặc framework bên dưới nó gửi cả hai | Chỉ gửi tham số bạn muốn dùng và xóa khóa còn lại. |
| Tham số thứ hai là giá trị mặc định “trung tính”, chẳng hạn top_p: 1 | Được báo cáo là vẫn thất bại như vậy. Hãy xóa khóa thay vì chuẩn hóa nó. |
| Một bản LangChain JS hoặc n8n cũ hơn | Nâng cấp: @langchain/anthropic 1.3.24 trở lên, n8n 1.114.1 trở lên. |
| LiteLLM truyền cả hai tham số | Thêm additional_drop_params: ["top_p"] cho mô hình đó. |
| Bạn đã chuyển sang Claude Opus 4.7 trở lên, Sonnet 5 hoặc Fable 5 | Quy tắc chặt hơn: xóa cả hai — mọi giá trị khác mặc định của một trong hai đều bị từ chối. |
Những mô hình Claude nào áp dụng quy tắc này (tính đến tháng 9 năm 2026)
Hướng dẫn di chuyển Haiku 4.5 của Anthropic: chỉ dùng temperature hoặc top_p, không dùng cả hai — đặt cả hai sẽ trả về lỗi 400 trên Claude Haiku 4.5, một thay đổi phá vỡ đối với mã chuyển từ Claude 3.x (https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide). Ghi chú phát hành API của Anthropic đã nêu cùng quy tắc này khi Claude Opus 4.1 ra mắt ngày 5 tháng 8 năm 2025, một mô hình hiện đã ngừng hoạt động (https://platform.claude.com/docs/en/release-notes/api). AWS nêu quy tắc này cho Claude Sonnet 4.5 và Claude Haiku 4.5 trên Bedrock (https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages-request-response.html). Chúng tôi không tìm thấy trang Anthropic nào nêu quy tắc cho các mô hình 4.6, nhưng các nhà phát triển báo cáo đúng lỗi 400 này từ Claude Opus 4.6 (issue #12846 của OpenHands) và Claude Sonnet 4.6 (issue #566 của opencommit). Claude Opus 4.7 trở lên được đề cập bên dưới: ở đó, chỉ một tham số cũng đã là quá nhiều.
Chỉ gửi một — và xóa khóa còn lại
Giữ temperature trừ khi bạn có lý do cụ thể để không làm vậy: tài liệu tham khảo API của Anthropic mô tả top_p là chỉ khuyến nghị cho các trường hợp sử dụng nâng cao (https://platform.claude.com/docs/en/api/messages). Hãy xóa khóa thứ hai thay vì đặt nó thành giá trị mà bạn cho là trung tính — một nhà phát triển báo cáo rằng top_p 1.0 cùng với temperature 0.3 vẫn thất bại trên Claude Sonnet 4.5 (issue #18304 của n8n).
from openai import OpenAI
client = OpenAI(base_url="https://api.kunavo.com/v1", api_key="sk-kn-...")
def one_sampling_knob(params: dict) -> dict:
"""Where the rule applies, send temperature or top_p, not both. Keep temperature."""
if params.get("temperature") is not None:
params.pop("top_p", None)
return params
sampling = one_sampling_knob({"temperature": 0.3, "top_p": 0.9}) # {"temperature": 0.3}
resp = client.chat.completions.create(
model="claude-haiku-4-5",
max_tokens=512,
messages=[{"role": "user", "content": "Classify this support ticket: ..."}],
**sampling,
)
print(resp.choices[0].message.content)Sửa trong client đang thêm tham số thứ hai
LangChain JS: ChatAnthropic 0.3.x gửi temperature mặc định cùng với top_p bạn đặt (issue #9258, được sửa trong nhánh 0.3 bằng PR #9362 vào tháng 11 năm 2025), còn PR #10420, phát hành trong @langchain/anthropic 1.3.24 ngày 17 tháng 3 năm 2026, ngừng tự thêm bất kỳ khóa tham số lấy mẫu nào mà bạn không thiết lập (https://github.com/langchain-ai/langchainjs/pull/10420). n8n: node Anthropic Chat Model truyền các giá trị mặc định của LangChain (topP -1, temperature 0.7); được sửa trong n8n 1.114.1, phát hành ngày 2 tháng 10 năm 2025 (https://github.com/n8n-io/n8n/pull/20286). LiteLLM: chỉ rõ tham số cần xóa bằng additional_drop_params, theo từng lượt gọi hoặc theo mô hình (https://docs.litellm.ai/docs/completion/drop_params) — ngoại trừ tuyến chuyển tiếp Anthropic, nơi báo cáo được đóng với lý do các yêu cầu chuyển tiếp không bị sửa đổi (https://github.com/BerriAI/litellm/issues/15097). Amazon Bedrock: đặt temperature hoặc topP trong Converse inferenceConfig, hoặc temperature hoặc top_p trong phần thân InvokeModel — không bao giờ đặt cả hai (https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InferenceConfiguration.html).
model_list:
- model_name: claude-haiku-4-5
litellm_params:
model: openai/claude-haiku-4-5 # Kunavo speaks the OpenAI chat shape
api_base: https://api.kunavo.com/v1
api_key: sk-kn-...
additional_drop_params: ["top_p"] # keep temperature, never send top_pTrên Claude Opus 4.7 trở lên, không gửi tham số nào
Các mô hình mới hơn còn đi xa hơn. Việc đặt temperature, top_p hoặc top_k thành bất kỳ giá trị khác mặc định nào trên Claude Opus 4.7 trở lên đều trả về lỗi 400 (https://platform.claude.com/docs/en/models/opus-5-5/migration-guide); điều tương tự áp dụng cho Claude Sonnet 5 (https://platform.claude.com/docs/en/models/sonnet-5/migration-guide) và tiếp tục áp dụng cho Claude Fable 5 (https://platform.claude.com/docs/en/models/fable-5/migration-guide) và Fable 5.1 (https://platform.claude.com/docs/en/models/fable-5-1/migration-guide). Thông báo lỗi thay đổi — các nhà phát triển thấy “`temperature` không còn được khuyến nghị sử dụng cho mô hình này.” — và tài liệu tham khảo API của Anthropic hiện đánh dấu cả ba tham số là không còn được khuyến nghị sử dụng: trên các mô hình phát hành sau Claude Opus 4.6, vì tương thích ngược, chỉ chấp nhận temperature bằng 1.0 hoặc top_p từ 0.99 trở lên, đồng thời từ chối top_k ở mọi giá trị (https://platform.claude.com/docs/en/api/messages). Anthropic Python SDK đã xóa chúng khỏi các phương thức Messages trong v1.0, phát hành ngày 20 tháng 8 năm 2026 (https://platform.claude.com/docs/en/release-notes/api).
Nếu bạn gọi qua Kunavo
Trên bảy mô hình claude-* mà Anthropic đã xóa sampling — claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7 và claude-sonnet-5 — Kunavo xóa temperature, top_p và top_k khỏi yêu cầu trước khi yêu cầu rời khỏi gateway, áp dụng như nhau cho /v1/chat/completions và /v1/messages. Bạn sẽ không thấy lỗi này từ bảy mô hình đó, nhưng các giá trị bạn gửi không có tác dụng: yêu cầu được chuyển lên upstream như thể bạn đã bỏ qua chúng. Trên claude-opus-4-6, claude-sonnet-4-6 và claude-haiku-4-5, Kunavo không xóa gì: trình chuyển đổi chat sao chép mọi temperature, top_p hoặc top_k dạng số vào yêu cầu Claude không thay đổi, còn /v1/messages chuyển tiếp phần thân đúng như bạn gửi, vì vậy hãy gửi một trong hai tham số đó. Nếu upstream từ chối cặp tham số, lỗi 400 của nó được chuyển đến bạn cùng nguyên văn thông báo từ upstream, không được thử lại qua kênh khác và được ghi nhận với chi phí bằng không. Một tham số yêu cầu khác mà các mô hình mới hơn từ chối được đề cập trong hướng dẫn max_tokens và max_completion_tokens.
Câu hỏi thường gặp
Nên dùng temperature hay top_p với Claude?
Temperature, trừ khi bạn có lý do cụ thể. Tài liệu tham khảo API của Anthropic chỉ khuyến nghị top_p cho các trường hợp sử dụng nâng cao, và trên Claude Opus 4.7 trở lên không tham số nào được đặt thành giá trị khác mặc định.
top_p = 1 có được tính là không đặt không?
Đừng trông chờ vào điều đó. Một nhà phát triển báo cáo cùng lỗi 400 khi top_p ở mức 1.0 cùng với temperature trên Claude Sonnet 4.5 (issue #18304 của n8n). Hãy xóa khóa thay vì đặt nó thành giá trị có vẻ trung tính.
Tại sao n8n hoặc LangChain gửi top_p khi tôi chưa từng đặt nó?
Cả hai đều truyền các giá trị mặc định. Node Anthropic Chat Model của n8n gửi giá trị mặc định của LangChain (topP -1, temperature 0.7) cho đến phiên bản 1.114.1, còn ChatAnthropic trong LangChain JS 0.3.x gửi temperature mặc định cùng với top_p bạn đặt. Hãy nâng cấp: n8n 1.114.1 trở lên, @langchain/anthropic 1.3.24 trở lên.
“`temperature` không được dùng cho mô hình này” nghĩa là gì?
Đó là quy tắc chặt hơn trên Claude Opus 4.7 trở lên, Sonnet 5 và Fable 5 và 5.1: các mô hình này từ chối thẳng các giá trị sampling khác mặc định. Hãy xóa các tham số. Qua Kunavo, các mô hình chúng tôi cung cấp đã được xóa chúng, nên lượt gọi vẫn thành công.
Yêu cầu bị từ chối có tốn phí trên Kunavo không?
Không. Yêu cầu bị upstream từ chối được ghi nhận với chi phí bằng không.
Hướng dẫn liên quan
- “Mô hình này không hỗ trợ điền trước tin nhắn assistant” — những mô hình Claude nào đã bỏ điền trước và tính năng nào thay thế nó
- “Unsupported parameter: 'max_tokens' is not supported with this model” — hãy dùng max_completion_tokens
- Chi phí API AI của n8n: một lần thực thi, nhiều lượt gọi mô hình, hai hóa đơn
- Cách gọi Claude API trên Kunavo: khóa API, SDK, mô hình và bộ nhớ đệm
Thông tin chi tiết hơn về ý nghĩa lỗi có trong tài liệu tham chiếu lỗi; bạn chỉ mất một phút để lấy khóa qua đăng ký và hướng dẫn xác thực.