답을 내기 전에 사고 토큰을 길게 만들며 문제를 나누고 검산하도록 학습된 LLM이다. 일반 모델보다 느리고 비싸서 버그 추적, 수학 풀이, 여러 단계짜리 계획처럼 한 번에 답하기 어려운 일에만 쓴다.
| 구분 | 일반 모델 (낮은 effort) | 추론 모델 (높은 effort) |
|---|---|---|
| 답하는 방식 | 바로 답을 쓴다 | 먼저 생각하고 답한다 |
| 속도·비용 | 빠르고 싸다 | 몇 배 느리고 비쌀 수 있다 |
| 잘 맞는 일 | 분류, 정보 추출, 짧은 요약, 채팅 | 버그 추적, 알고리즘 설계, 수학, 다단계 계획 |
생각하는 동안 막히면 다른 풀이로 돌아가기도 한다. 연습장에 풀이를 끝까지 써 본 뒤 답안지에 옮겨 적는 것과 같다.
"단계별로 생각해 봐"라고 시키는 프롬프팅과 겉보기는 비슷하다. 차이는 추론 모델은 이 습관을 학습으로 이미 익혔다는 점이다. 채점이 쉬운 수학·코딩 문제를 풀게 하고 맞히면 보상을 주는 방식으로 학습시키면, 모델이 스스로 생각을 길게 늘리고 틀린 풀이를 고치게 된다. 큰 모델의 풀이로 작은 모델을 학습시킨 덕분에 노트북에서 돌아가는 소형 추론 모델도 있다.
개발자가 실제로 정하는 건 "얼마나 생각하게 할지"다. Claude API의 최신 모델은 thinking: {type: "adaptive"}로 두면 생각할지, 얼마나 생각할지를 모델이 알아서 정한다. 깊이는 effort를 low부터 max까지 골라 조절한다. OpenAI API에서는 reasoning.effort가 같은 역할을 한다.
| 상황 | 추천 설정 | 이유 |
|---|---|---|
| 여러 파일에 걸친 버그, 설계 | 높은 effort | 깊게 생각해야 실수가 줄어든다 |
| 멀티에이전트의 계획 담당 | 높은 effort | 전체 방향을 잡는 역할이다 |
| 정해진 일을 하는 서브에이전트 | 낮은 effort | 비용을 아낀다 |
| 분류·추출·빠른 채팅 | 낮은 effort나 일반 모드 | 속도가 더 중요하다 |
에이전트로 쓸 때는 도구를 호출하는 사이사이에도 생각하게 하면(인터리브드 사고) 좋다. 테스트 실패 로그 같은 결과를 받을 때마다 다음 행동을 다시 따져 보기 때문에 엉뚱한 방향으로 계속 가는 일이 줄어든다.
사고 내용은 원문이 보이지 않는 경우가 많다. 그래도 출력 토큰으로 요금이 붙고 출력 한도도 차지한다. 그래서 max_tokens를 넉넉히 잡지 않으면 생각만 하다가 답을 다 쓰지 못하고 잘릴 수 있다. 대화 중간에 effort를 바꾸면 프롬프트 캐시가 깨질 수 있으니, 긴 세션에서는 수준을 하나로 정해 두고 쓰는 게 좋다.
쉬운 질문에 너무 오래 생각하게 하면 답이 장황해지거나 오히려 틀린 결론을 낼 수 있다. 이를 과잉 사고라고 한다. 프롬프트도 풀이 단계를 하나하나 지시하기보다 목표, 제약, 완료 조건, 결과 형식만 분명히 주고 푸는 방법은 모델에게 맡기는 게 낫다. effort는 내 작업으로 직접 시험해 보고, 품질이 유지되는 가장 낮은 단계로 정하면 된다.
가장 흔한 방식은 코딩 에이전트와 채팅의 생각 모드다. 평소에는 낮은 effort로 빠르게 쓰다가 어려운 단계에서만 생각을 늘려 비용과 품질을 맞춘다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 여러 파일에 걸친 버그 추적과 설계는 높은 effort로, 테스트 결과 정리 같은 단순한 단계는 낮게 |
| 채팅 앱의 생각 모드 | 수학 풀이, 복잡한 비교·분석 질문을 할 때만 생각 모드를 켜고 일상 대화는 일반 모드로 |
| 멀티에이전트 시스템 | 전체 계획을 짜는 담당만 추론 모델로 두고, 정해진 일을 하는 서브에이전트는 가볍게 |
| 업무 자동화 파이프라인 | 분류·추출은 일반 모델에 맡기고, 판단이 필요한 단계만 추론 모델로 넘김 |