⚡ 중급2026-09-095분
Temperature 조절 실패가 망치는 API 응답, 이렇게 잡는다
Temperature 값 하나로 AI의 창의성과 일관성이 극단적으로 달라집니다. 실전 Tool Use와 함께 최적값을 찾는 방법을 정리했습니다.
temperaturetool-useapi
Temperature가 실제로 하는 일
Temperature는 '얼마나 예측 가능한 단어를 고를 것인가'를 결정하는 파라미터입니다. 흔히 '창의성 조절 버튼'이라고 부르지만, 실전에서는 잘못된 범위 선택이 치명적인 버그로 이어집니다.
| 범위 | 특성 | 권장 용도 | |---|---|---| | 0.0 – 0.3 | 결정론적, 반복 일관성 높음 | JSON 생성, 분류, 코드 | | 0.4 – 0.7 | 균형, 약간의 다양성 | 요약, Q&A, Tool Use | | 0.8 – 1.0 | 창의적, 예측 불가 | 카피라이팅, 브레인스토밍 |
실수 패턴: Tool Use에 temperature 0.9를 쓰면 함수 인자가 매번 달라지거나 도구 호출 자체를 건너뛰는 현상이 발생합니다.
Tool Use와 Temperature를 함께 조율하는 실전 코드
아래 예제는 날씨 조회 도구를 claude-sonnet-4-6로 호출할 때 temperature를 낮게 고정해 안정적인 함수 인자를 얻는 패턴입니다.
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const tools: Anthropic.Tool[] = [
{
name: "get_weather",
description: "특정 도시의 현재 날씨를 반환합니다.",
input_schema: {
type: "object",
properties: {
city: { type: "string", description: "도시 이름 (영문)" },
unit: { type: "string", enum: ["celsius", "fahrenheit"] },
},
required: ["city", "unit"],
},
},
];
async function fetchWeatherWithTool(userQuery: string) {
const response = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
temperature: 0.2, // ← Tool Use엔 낮은 값으로 고정
tools,
messages: [{ role: "user", content: userQuery }],
});
for (const block of response.content) {
if (block.type === "tool_use") {
console.log("호출된 도구:", block.name);
console.log("전달 인자:", JSON.stringify(block.input, null, 2));
// 여기서 실제 API 호출 후 tool_result 메시지로 이어가면 됩니다
}
}
return response;
}
fetchWeatherWithTool("서울 날씨 섭씨로 알려줘");
용도별 Temperature 세팅 체크리스트
- [ ] JSON·구조화 데이터 출력 →
temperature: 0.0 ~ 0.2 - [ ] Tool Use / 함수 호출 →
temperature: 0.1 ~ 0.3 - [ ] 요약·번역·Q&A →
temperature: 0.3 ~ 0.6 - [ ] 창작·마케팅 카피 →
temperature: 0.7 ~ 1.0 - [ ] 동일 프롬프트로 A/B 테스트 시 → 두 값 차이를 0.3 이상으로
- [ ] claude-haiku-4-5로 비용 절감 후, 품질 이슈 생기면 temperature 먼저 조정
- [ ] 응답이 너무 단조롭다면 temperature 올리기 전에 system 프롬프트 다양성 지시를 먼저 시도