k
korAI
중급 전체
중급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 프롬프트 다양성 지시를 먼저 시도