홈/AI 자동화/LLM 프롬프트 패턴: CoT·ToT·ReAct 적용 시점
AI 자동화프롬프트엔지니어링Chain-of-Thought

LLM 프롬프트 패턴: CoT·ToT·ReAct 적용 시점

Chain-of-Thought, Tree-of-Thought, ReAct를 언제 쓰는지, 토큰 비용·환각 리스크와 함께 정리한 실무 노트.

LLM 프롬프트 패턴: CoT·ToT·ReAct 적용 시점
목차
  1. 기초를 넘어야 하는 이유
  2. Chain-of-Thought (CoT)
  3. Tree-of-Thought (ToT)
  4. ReAct: 추론 + 도구 호출 반복
  5. Self-Consistency: 다수결 앙상블
  6. 패턴 선택 가이드
  7. 패턴 선택표
  8. 운영 팁
  9. 패턴 효과를 비용과 함께 측정하는 방법
  10. 참고 자료
  11. 자주 묻는 질문 (FAQ)
  12. 검증 환경·편집자 주
  13. 실무 적용 순서 (요약)

기초를 넘어야 하는 이유

1편의 Zero-shot·Few-shot·Role·Chain·Format 기법은 단순한 Q&A에 잘 작동합니다. 복잡한 추론과 다단계 계획이 필요한 프로덕션 태스크에서는 더 정교한 패턴이 필요합니다.

Chain-of-Thought (CoT)

답변 전에 추론 과정을 단계적으로 서술하도록 유도합니다.

Python
# Zero-shot CoT: "단계별로 생각해보자" 한 줄이면 충분
zero_shot_cot = """
고객이 3개월 전 구매한 제품의 환불을 요청합니다.
환불 정책은 30일 이내만 가능하지만 제품 결함 시 예외입니다.
고객 사진에 명확한 제조 결함이 보입니다.

단계별로 생각한 후 처리 방법을 결정해주세요.
"""

# Few-shot CoT: 예시로 추론 스타일 학습
few_shot_cot = """
예시:
Q: 45일 경과, 제품 이상 없음
생각: 30일 초과 + 결함 없음 → 환불 불가
답: 환불 거절, 다른 보상 안내

Q: 10일 경과, 배송 파손
생각: 30일 이내 + 배송 파손(결함 준용) → 환불 가능
답: 즉시 환불 승인

Q: {현재_케이스}
생각:"""

비용 팁: CoT는 토큰을 2~3배 소비합니다. 중요한 의사결정에만 사용하세요.

Tree-of-Thought (ToT)

단일 체인 대신 복수 경로를 트리로 탐색합니다.

Python
async def beam_search_thoughts(problem: str, branches: int = 3, depth: int = 2):
    paths = [problem]
    for _ in range(depth):
        candidates = []
        for path in paths:
            new_thoughts = await expand(path, n=branches)
            scores = await asyncio.gather(*[evaluate(t) for t in new_thoughts])
            candidates.extend(zip(scores, new_thoughts))
        candidates.sort(reverse=True)
        paths = [t for _, t in candidates[:branches]]
    return paths[0]

전략 수립, 복잡한 문제 분해에 효과적이나 비용이 10~20배 증가합니다.

ReAct: 추론 + 도구 호출 반복

CODE
Thought: 고객 주문 내역 확인 필요
Action: get_orders(customer_id="12345")
Observation: [{"order_id": "ORD-789", "date": "2025-12-01", "status": "delivered"}]

Thought: 30일 정책상 2025-12-31까지 환불 가능
Action: process_refund(order_id="ORD-789")
Observation: {"status": "success", "amount": 89000}

Answer: 환불 완료. 3~5 영업일 내 입금됩니다.
Python
REACT_SYSTEM = """다음 형식으로만 응답하세요:
Thought: [현재 분석]
Action: [tool_name(param=value)]
Observation: [결과]
... 반복 ...
Answer: [최종 응답]"""

Self-Consistency: 다수결 앙상블

Python
async def self_consistency(prompt: str, n: int = 5) -> str:
    responses = await asyncio.gather(*[
        llm.generate(prompt, temperature=0.7) for _ in range(n)
    ])
    answers = [extract_answer(r) for r in responses]
    return Counter(answers).most_common(1)[0][0]

n=5 기준 정확도 +8~15%, 비용 5배. 고가치 의사결정에만 적용하세요.

패턴 선택 가이드

패턴적합한 태스크비용 배수
CoT논리 추론, 수학2~3x
ToT전략 수립, 설계10~20x
ReAct도구 사용, 정보 수집3~5x
Self-Consistency고확신 의사결정5x

3편에서는 이 패턴들을 체계적으로 관리하는 프롬프트 버전 관리와 A/B 테스트를 다룹니다.

패턴 선택표

패턴강점비용주의
CoT단계적 추론중간민감 추론 노출 금지
ToT탐색·분기높음지연·비용 폭증
ReAct도구 호출 루프중간~높음도구 권한·타임아웃
Python
# ReAct 루프 스케치 (의사코드)
for step in range(max_steps):
    thought = llm.plan(state)
    if thought.action == "FINISH":
        return thought.answer
    obs = tools.run(thought.action, thought.args)  # 타임아웃·allowlist 필수
    state = state + (thought, obs)

운영 팁

  • 프로덕션에선 숨은 CoT(내부 추론 로그)와 사용자 응답을 분리.
  • ToT는 오프라인 평가·난제 배치에만.
  • ReAct 도구는 최소 권한 + 인자 스키마 검증.

패턴 효과를 비용과 함께 측정하는 방법

CoT·Self-Consistency·ReAct는 정확도를 높일 수 있지만 모두 토큰과 지연을 늘립니다. 적용 여부는 같은 평가 세트에서 정확도와 비용을 함께 비교해 결정해야 합니다.

원인: 패턴이 기대만큼 효과가 없는 경우

  • 단순 분류·추출 작업에 CoT를 붙여 출력만 길어지고 정확도는 그대로
  • Self-Consistency 샘플 수만큼 호출이 늘어 비용이 N배가 됨
  • 추론 기능이 내장된 모델에 "단계별로 생각하라"를 덧붙여도 추가 이득이 거의 없음(공급사 가이드에서도 이런 모델에는 명시적 CoT 지시가 불필요하다고 안내하는 경우가 있음)

측정 스크립트 예시

Python
variants = {"plain": PROMPT, "cot": PROMPT + "\n단계별로 풀이한 뒤 마지막 줄에 답만 쓰세요."}
for name, p in variants.items():
    acc, toks, lat = evaluate(p, eval_set)   # 정확도, 평균 출력 토큰, p95 지연
    print(f"{name:6s} acc={acc:.2f} out_tokens={toks:.0f} p95={lat:.1f}s")

판단 기준

  • 정확도 향상이 작고 출력 토큰이 크게 늘면 기본 프롬프트를 유지합니다.
  • 향상이 특정 유형(계산, 다단계 추론)에만 나타나면 그 유형에만 패턴을 적용하도록 라우팅합니다.
  • Self-Consistency는 오답 비용이 큰 작업에 한정하고, 샘플 수는 작은 값부터 늘려 효과가 멈추는 지점을 찾습니다.

재발 방지

  • 모델을 바꿀 때마다 같은 비교를 다시 실행합니다. 모델이 달라지면 같은 패턴의 효과도 달라집니다.

참고 자료

자주 묻는 질문 (FAQ)

Q. CoT를 켜면 항상 정확도가 올라가나요?
산술·논리 문제에선 유리하지만, 사실 검색은 RAG가 우선입니다.

Q. 시리즈 1편과 어떻게 연결하나요?
1편(기초 프롬프트) → 2편(본 패턴) → 3편(버전·A/B) 순으로 읽으면 됩니다.

검증 환경·편집자 주

  • 검증 시점: 2026-09 (문서·CLI 플래그는 벤더 업데이트에 따라 달라질 수 있음)
  • 명령어는 읽기 전용 조회 위주이며, 프로덕션 적용 전 스테이징에서 plan/dry-run을 권장합니다.
  • 본문은 공식 문서 링크와 운영에서 반복되는 실패 패턴을 기준으로 편집 검토했습니다.

실무 적용 순서 (요약)

  1. 현재 상태 측정(메트릭·비용·오류율) 없이 도구부터 바꾸지 말 것
  2. 가장 작은 범위에서 변경 → 롤백 조건 명시
  3. 체크리스트를 런북/티켓 템플릿에 옮겨 팀 공유
  4. 한 달 뒤 지표로 효과 재평가 후 확대
✦ ✦ ✦
출처·검증 안내

글마다 출처와 확인 범위가 다릅니다. 아래에 확인일·확인 범위·출처가 기록된 글만 그 범위에서 확인된 것입니다. 기록이 없는 글은 적용 전 사용 중인 버전의 공식 문서로 직접 확인하고, 오류는 이메일로 알려주세요. 편집 정책 · 이메일로 제보

이 글에는 사람이 확인한 날짜·범위 기록이 아직 없습니다.

발행 ·

댓글

첫 번째 댓글을 남겨보세요.