둘 중 하나만 보내세요. Anthropic은 Claude Haiku 4.5에 대해 이 규칙을 문서화했으며, 개발자들은 Claude Opus 4.6과 Sonnet 4.6에서도 동일한 400을 겪었습니다. Claude Opus 4.7 이상에서는 규칙이 더 엄격해져 두 매개변수 중 어느 것도 보내면 안 됩니다. 사용자가 설정하지 않은 매개변수를 클라이언트나 프레임워크가 채워 넣는 것이 원인인 경우가 많습니다.
오류
{
"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_..."
}원인과 해결 방법 한눈에 보기
| 원인 | 해결 방법 |
|---|---|
| 사용자의 코드 또는 그 아래에서 동작하는 프레임워크가 두 매개변수를 모두 보냅니다 | 사용하려는 매개변수 하나만 보내고 다른 키는 삭제하세요. |
| 두 번째 매개변수는 top_p: 1과 같은 “중립적인” 기본값입니다 | 똑같이 실패한다고 보고되었습니다. 키를 정규화하지 말고 제거하세요. |
| 이전 버전의 LangChain JS 또는 n8n 빌드 | 업그레이드: @langchain/anthropic 1.3.24 이상, n8n 1.114.1 이상. |
| LiteLLM은 둘 다 그대로 전달합니다 | 해당 모델에 additional_drop_params: ["top_p"]를 추가하세요. |
| Claude Opus 4.7 이상, Sonnet 5 또는 Fable 5로 이동했습니다 | 여기서는 규칙이 더 엄격합니다. 둘 다 제거하세요. 둘 중 하나라도 기본값이 아닌 값이면 거부됩니다. |
이 규칙을 적용하는 Claude 모델(2026년 9월 기준)
Anthropic의 Haiku 4.5 마이그레이션 가이드: temperature 또는 top_p 중 하나만 사용하고 둘 다 사용하지 마세요. 둘 다 설정하면 Claude Haiku 4.5에서 400이 반환되며, Claude 3.x에서 넘어온 코드에는 호환성이 깨지는 변경입니다 (https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide). Anthropic의 API 릴리스 노트는 2025년 8월 5일 Claude Opus 4.1 출시 때 동일한 규칙을 명시했으며, 해당 모델은 현재 서비스가 종료되었습니다 (https://platform.claude.com/docs/en/release-notes/api). AWS는 Bedrock의 Claude Sonnet 4.5 및 Claude Haiku 4.5에 대해 이 규칙을 명시합니다 (https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages-request-response.html). 4.6 모델에 대해 이 규칙을 명시한 Anthropic 페이지는 찾지 못했지만, 개발자들은 Claude Opus 4.6(OpenHands 이슈 #12846)과 Claude Sonnet 4.6(opencommit 이슈 #566)에서 정확히 이 400을 보고했습니다. Claude Opus 4.7 이상은 아래에서 다룹니다. 이 경우에는 하나만 설정해도 이미 너무 많습니다.
하나만 보내고 다른 키는 삭제하세요
그렇게 하지 않을 특별한 이유가 없다면 temperature를 유지하세요. Anthropic의 API 레퍼런스는 고급 사용 사례에만 top_p를 권장합니다 (https://platform.claude.com/docs/en/api/messages). 두 번째 키를 중립적이라고 생각하는 값으로 설정하지 말고 제거하세요. 개발자는 Claude Sonnet 4.5에서 temperature 0.3과 함께 top_p를 1.0으로 설정해도 실패했다고 보고했습니다(n8n 이슈 #18304).
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)두 번째 키를 추가하는 클라이언트에서 수정하세요
LangChain JS: ChatAnthropic 0.3.x는 설정한 top_p와 함께 기본 temperature를 전송했습니다(이슈 #9258, 2025년 11월 PR #9362로 0.3 라인에서 수정됨). 2026년 3월 17일 @langchain/anthropic 1.3.24에 릴리스된 PR #10420은 설정하지 않은 샘플링 키를 추가하지 않도록 수정했습니다 (https://github.com/langchain-ai/langchainjs/pull/10420). n8n: Anthropic Chat Model 노드는 LangChain의 기본값(topP -1, temperature 0.7)을 전달했습니다. 2025년 10월 2일 릴리스된 n8n 1.114.1에서 수정되었습니다 (https://github.com/n8n-io/n8n/pull/20286). LiteLLM: 호출별 또는 모델별로 additional_drop_params를 사용해 제거할 매개변수 이름을 지정하세요 (https://docs.litellm.ai/docs/completion/drop_params). 단, Anthropic 패스스루 경로에서는 패스스루 요청이 수정되지 않는다는 이유로 보고가 종료되었습니다 (https://github.com/BerriAI/litellm/issues/15097). Amazon Bedrock: Converse의 inferenceConfig에서는 temperature 또는 topP를, InvokeModel 본문에서는 temperature 또는 top_p를 설정하세요. 절대로 둘 다 설정하지 마세요 (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_pClaude Opus 4.7 이상에서는 둘 다 보내지 마세요
최신 모델은 한 단계 더 엄격합니다. Claude Opus 4.7 이상 모델에서 temperature, top_p 또는 top_k를 기본값이 아닌 값으로 설정하면 400이 반환됩니다 (https://platform.claude.com/docs/en/models/opus-5-5/migration-guide). Claude Sonnet 5에도 같은 규칙이 적용되며 (https://platform.claude.com/docs/en/models/sonnet-5/migration-guide), Claude Fable 5 (https://platform.claude.com/docs/en/models/fable-5/migration-guide)와 Fable 5.1 (https://platform.claude.com/docs/en/models/fable-5-1/migration-guide)에도 이어집니다. 메시지도 변경됩니다. 개발자는 “`temperature` is deprecated for this model.”을 확인하게 됩니다. Anthropic의 API 레퍼런스는 이제 세 매개변수를 모두 deprecated로 표시합니다. Claude Opus 4.6 이후에 출시된 모델에서는 하위 호환성을 위해 temperature 1.0 또는 top_p 0.99 이상만 허용하고, top_k는 어떤 값이든 거부합니다 (https://platform.claude.com/docs/en/api/messages). Anthropic Python SDK는 2026년 8월 20일 릴리스된 v1.0에서 Messages 메서드에서 이 매개변수들을 제거했습니다 (https://platform.claude.com/docs/en/release-notes/api).
Kunavo를 통해 호출하는 경우
Anthropic이 샘플링을 제거한 일곱 개의 claude-* 모델(claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7 및 claude-sonnet-5)에서 Kunavo는 게이트웨이를 벗어나기 전에 /v1/chat/completions와 /v1/messages 모두에서 요청에서 temperature, top_p 및 top_k를 삭제합니다. 이 일곱 모델에서는 이 오류가 발생하지 않지만, 전송한 값은 아무런 효과가 없습니다. 요청은 해당 값을 보내지 않은 것처럼 업스트림으로 전달됩니다. claude-opus-4-6, claude-sonnet-4-6 및 claude-haiku-4-5에서는 Kunavo가 아무것도 제거하지 않습니다. 채팅 변환기는 숫자형 temperature, top_p 또는 top_k를 Claude 요청에 변경 없이 복사하고, /v1/messages는 본문을 전송한 그대로 전달하므로 여기서는 둘 중 하나만 보내세요. 업스트림이 두 키의 조합을 거부하면 업스트림의 메시지 텍스트가 변경 없이 포함된 400이 반환되고, 다른 채널로 재시도되지 않으며, 비용은 0으로 기록됩니다. 최신 모델에서 거부되는 또 다른 요청 매개변수는 max_tokens와 max_completion_tokens 가이드.
자주 묻는 질문
Claude에서 temperature와 top_p 중 무엇을 사용해야 하나요?
특별한 이유가 없다면 temperature입니다. Anthropic의 API 레퍼런스는 고급 사용 사례에만 top_p를 권장하며, Claude Opus 4.7 이상에서는 둘 다 기본값이 아닌 값으로 설정할 수 없습니다.
top_p = 1은 설정하지 않은 것으로 간주되나요?
그렇게 생각하지 마세요. 개발자는 Claude Sonnet 4.5에서 temperature와 함께 top_p를 1.0으로 설정해도 동일한 400이 발생했다고 보고했습니다(n8n 이슈 #18304). 중립적으로 보이는 값으로 설정하지 말고 키를 삭제하세요.
n8n 또는 LangChain은 제가 설정하지 않았는데 왜 top_p를 보내나요?
둘 다 기본값을 그대로 전달했습니다. n8n의 Anthropic Chat Model 노드는 1.114.1 이전까지 LangChain의 기본값(topP -1, temperature 0.7)을 보냈고, LangChain JS 0.3.x의 ChatAnthropic은 설정한 top_p와 함께 기본 temperature를 보냈습니다. 업그레이드: n8n 1.114.1 이상, @langchain/anthropic 1.3.24 이상.
“`temperature` is deprecated for this model”은 무슨 뜻인가요?
Claude Opus 4.7 이상, Sonnet 5, Fable 5 및 5.1에 적용되는 더 엄격한 규칙이라는 뜻입니다. 이 모델들은 기본값이 아닌 샘플링 값을 즉시 거부합니다. 매개변수를 제거하세요. Kunavo를 통해 제공되는 모델에서는 해당 매개변수가 제거되므로 호출이 정상적으로 처리됩니다.
Kunavo에서 거부된 요청에도 비용이 발생하나요?
아니요. 업스트림에서 거부한 요청은 비용 0으로 기록됩니다.
관련 가이드
- ‘이 모델은 assistant 메시지 프리필을 지원하지 않습니다’ — 어떤 Claude 모델이 프리필을 중단했으며 무엇으로 대체하는가
- “Unsupported parameter: 'max_tokens' is not supported with this model” — max_completion_tokens를 사용하세요
- n8n AI API 비용: 한 번의 실행, 여러 모델 호출, 두 개의 청구서
- Claude API — Kunavo에서 Claude를 호출하는 완벽한 가이드
오류 의미에 대한 자세한 내용은 오류 참조에서 확인할 수 있습니다. 가입 및 인증 가이드를 통해 1분이면 키를 받을 수 있습니다.