⚡ 중급2026-09-267분
응답이 너무 뻔하거나 너무 산만할 때 — temperature와 streaming을 조율하라
temperature 값 하나로 창의성과 일관성을 제어하고, streaming을 활성화해 사용자 체감 속도를 극적으로 개선하는 실전 방법을 다룹니다.
api-optionsstreamingtemperature
temperature란 무엇이고 언제 바꿔야 하나?
temperature는 모델이 다음 토큰을 선택할 때 얼마나 다양한 후보를 고려할지 결정하는 값입니다(범위 0.0 ~ 1.0).
| temperature | 특성 | 추천 사용 사례 | |---|---|---| | 0.0 ~ 0.3 | 결정론적·일관성 높음 | 코드 생성, 데이터 추출, 분류 | | 0.4 ~ 0.7 | 균형 (기본값 권장) | 요약, Q&A, 번역 | | 0.8 ~ 1.0 | 창의적·다양성 높음 | 브레인스토밍, 카피라이팅, 스토리 |
흔한 실수: 코드 리뷰에
temperature: 1.0을 쓰면 동일 코드에 대해 매번 다른 판단이 나옵니다. 반드시 낮게 고정하세요.
Streaming으로 UX 개선하기 (Python)
응답 전체가 완성될 때까지 기다리는 대신, 스트리밍으로 토큰이 생성되는 즉시 사용자에게 보여주면 체감 대기 시간이 70~80% 줄어듭니다.
import anthropic
client = anthropic.Anthropic()
def stream_creative_copy(topic: str, temperature: float = 0.8) -> str:
"""마케팅 카피를 스트리밍으로 생성합니다."""
collected_text = ""
# streaming=True 대신 stream() 컨텍스트 매니저 사용
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=512,
temperature=temperature,
system="당신은 감각적인 한국어 마케팅 카피라이터입니다.",
messages=[
{
"role": "user",
"content": f"'{topic}'을 주제로 SNS 광고 문구 3가지를 작성하세요.",
}
],
) as stream:
for text_chunk in stream.text_stream:
print(text_chunk, end="", flush=True) # 실시간 출력
collected_text += text_chunk
print() # 줄바꿈
# 최종 사용량 확인
final_message = stream.get_final_message()
usage = final_message.usage
print(f"\n[토큰 사용] 입력: {usage.input_tokens} / 출력: {usage.output_tokens}")
return collected_text
def stream_structured_data(query: str) -> str:
"""낮은 temperature로 일관된 JSON 추출 (스트리밍)."""
result = ""
with client.messages.stream(
model="claude-haiku-4-5",
max_tokens=256,
temperature=0.1, # 구조화 데이터 → 낮게 고정
system="JSON만 출력하세요. 설명 텍스트 없이.",
messages=[
{
"role": "user",
"content": f"다음 문장에서 이름, 날짜, 금액을 추출하세요: {query}",
}
],
) as stream:
for chunk in stream.text_stream:
result += chunk
return result
# 실행
stream_creative_copy("친환경 텀블러", temperature=0.9)
print(stream_structured_data("홍길동이 2026년 9월 26일에 35만원을 결제했습니다."))
실전 조합 전략
상황별 권장 설정표
창의적 콘텐츠 생성:
model: claude-sonnet-4-6
temperature: 0.8 ~ 1.0
streaming: True ← 사용자가 기다리는 동안 내용 확인 가능
코드/데이터 처리:
model: claude-haiku-4-5 ← 빠르고 저렴
temperature: 0.0 ~ 0.2
streaming: False ← 후처리 파싱 안정성 우선
대화형 챗봇:
model: claude-haiku-4-5
temperature: 0.5
streaming: True ← 응답 체감 속도가 핵심
Streaming 사용 시 주의사항: 스트리밍 도중 네트워크가 끊기면 불완전한 텍스트가 저장될 수 있으므로, get_final_message()로 완료 여부를 반드시 확인하세요.
체크리스트
- [ ] 작업 유형(창의/구조화)에 맞는 temperature 범위를 선택했는가?
- [ ] 동일 프롬프트에서 temperature 0.0, 0.5, 1.0을 각각 3회씩 실행해 출력 분산을 직접 확인했는가?
- [ ] 사용자 대면 인터페이스에 streaming을 적용해 첫 토큰 도달 시간(TTFT)을 측정했는가?
- [ ] 스트리밍 종료 후
get_final_message()로stop_reason이"end_turn"인지 검증하는가? - [ ] 비용 절감이 필요한 반복 작업에
claude-haiku-4-5를 우선 적용했는가?