Quay lại hướng dẫn
Khắc phục sự cố·23 tháng 9, 2026·Đọc 6 phút

“`temperature` và `top_p` không thể đồng thời được chỉ định cho mô hình này” — chỉ gửi một tham số, còn với các mô hình Claude mới hơn thì không gửi tham số nào

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.

Được xem xét lần cuối vào .

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

Phản hồi Anthropic API (HTTP 400)
{
  "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ânCách khắc phục
Mã của bạn hoặc framework bên dưới nó gửi cả haiChỉ 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ơnNâ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 5Quy 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).

one_knob.py
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).

litellm-config.yaml
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_p

Trê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

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.