‘생각(Think)’ 도구는 Claude의 복잡한 문제 해결 능력을 향상시키기 위한 새로운 도구다.
우리는 Claude의 복잡한 문제 해결 능력을 지속적으로 향상시키는 과정에서, 구조화된 사고를 위한 전용 공간을 만드는 ‘생각’ 도구가 특히 효과적이라는 것을 발견했다. 이 간단하지만 강력한 기술은 Claude의 도구 사용 능력, 정책 준수, 일관된 판단, 다단계 문제 해결 등에서 탁월한 개선을 이끌어냈으며, 구현 비용도 최소화되었다.
이 글에서는 ‘생각’ 도구를 다양한 애플리케이션에 어떻게 구현할 수 있는지, 그리고 검증된 벤치마크 결과에 기반한 실용적인 개발 가이드를 소개한다.
‘생각’ 도구란 무엇인가?
‘생각’ 도구는 Claude가 최종 응답을 생성하기 전에 하나의 사고 단계를 추가로 수행할 수 있도록 해준다. 이 사고는 별도의 공간에 기록되며, Claude가 응답을 생성하면서 필요한 정보를 충분히 갖추었는지 중간 점검하는 데 활용된다.
이 개념은 ‘확장된 사고(Extended Thinking)’와 비슷해 보이지만, 서로 다른 접근법이다. 확장된 사고는 Claude가 응답 생성을 시작하기 전에 깊이 있는 계획을 세우고 반복적으로 검토하는 것이다. 반면, ‘생각’ 도구는 Claude가 응답을 생성하는 도중, 필요한 외부 정보(예: 도구 호출 결과 등)를 기반으로 추가적인 사고를 수행하도록 유도한다.
따라서 ‘생각’ 도구는 사용자의 질의만으로는 충분한 정보가 확보되지 않은 상황이나, 도구 호출 결과와 같은 외부 정보를 처리해야 할 때 특히 효과적이다. 이 경우, Claude는 새롭게 얻은 정보를 중심으로 제한된 범위의 사고를 수행하게 된다.
간단한 도구 사용 시나리오(예: 비순차적 도구 호출, 단순 지시 수행 등)에는 ‘확장된 사고’가 더 적합할 수 있다. 예를 들어, 코딩, 수학, 물리 문제 해결 등에서 도구 호출 없이 깊이 있는 사고가 필요한 경우, 확장된 사고가 더 유용하다. 반면, 복잡한 도구 호출, 도구 출력의 정밀 분석, 정책 중심의 환경 탐색, 순차적 결정이 필요한 경우에는 ‘생각’ 도구가 더 적합하다.
다음은 τ-Bench의 표준 도구 명세 형식을 기반으로 한 ‘생각’ 도구 예시다:
{
"name": "think",
"description": "복잡한 사고나 캐시 메모리가 필요할 때 사용하는 도구입니다. 새로운 정보를 얻거나 DB를 수정하지 않고 단지 사고를 기록합니다.",
"input_schema": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "생각할 내용"
}
},
"required": ["thought"]
}
}
τ-Bench에서의 성능 평가
‘생각’ 도구는 실제 고객 서비스 시나리오를 반영한 τ-Bench 벤치마크를 통해 평가되었다. 이 벤치마크는 다음과 같은 요소를 측정한다:
- 시뮬레이션된 사용자와의 현실적인 대화 수행 능력
- 복잡한 고객 서비스 정책 지침의 일관된 준수
- 다양한 도구를 활용하여 환경 DB를 조회 및 조작하는 능력
평가 지표로는 pass^k가 사용되며, 이는 모든 k개의 독립적인 시도에서 성공할 확률을 측정한다. 이는 일반적인 LLM 평가 지표인 pass@k(단 한 번이라도 성공하면 인정)와 달리, 일관성과 신뢰성을 중시하는 고객 서비스 환경에 더 적합하다.
성능 분석 결과
Claude 3.7 Sonnet은 ‘항공’ 및 ‘소매’ 고객 서비스 도메인 모두에서 ‘생각’ 도구를 사용했을 때 성능이 크게 향상되었다:
- 항공 도메인: 최적화된 프롬프트와 함께 사용한 경우 pass^1이 0.570으로, 베이스라인 0.370 대비 54% 향상
- 소매 도메인: ‘생각’ 도구만으로도 pass^1 0.812로, 베이스라인 0.783보다 높은 성능
또한 다음은 Claude 3.7 Sonnet의 항공 도메인에서의 k값별 평가 결과다:
구성 | k=1 | k=2 | k=3 | k=4 | k=5 |
---|---|---|---|---|---|
Think + Prompt | 0.584 | 0.444 | 0.384 | 0.356 | 0.340 |
Think | 0.404 | 0.254 | 0.186 | 0.140 | 0.100 |
Extended thinking | 0.412 | 0.290 | 0.232 | 0.192 | 0.160 |
Baseline | 0.332 | 0.206 | 0.148 | 0.116 | 0.100 |
특히 ‘생각’ 도구와 최적화된 프롬프트를 함께 사용할 때, 복잡한 항공 정책을 정확히 이해하고 적용하는 데 큰 도움이 되었다.
소매 도메인에서는 정책 복잡성이 낮기 때문에, 단순히 ‘생각’ 도구만 도입해도 성능이 향상되었다:
구성 | k=1 | k=2 | k=3 | k=4 | k=5 |
---|---|---|---|---|---|
Think | 0.812 | 0.735 | 0.685 | 0.650 | 0.626 |
Extended thinking | 0.770 | 0.681 | 0.623 | 0.581 | 0.548 |
Baseline | 0.783 | 0.695 | 0.643 | 0.607 | 0.583 |
SWE-Bench 성능
SWE-Bench 실험에서도 ‘생각’ 도구를 추가함으로써 Claude 3.7 Sonnet은 최고 수준인 0.623의 점수를 기록하였다. 이때 사용된 도구 명세는 다음과 같다:
{
"name": "think",
"description": "복잡한 사고나 브레인스토밍이 필요할 때 사용하는 도구입니다. 정보 수정 없이 사고만 기록합니다. 예: 버그 원인을 찾았을 때 다양한 해결 방법을 떠올리기.",
"input_schema": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "사고 내용"
}
},
"required": ["thought"]
}
}
총 174개 샘플 중 ‘생각’ 도구를 사용한 그룹(n=30)은 평균 1.6%의 성능 향상을 보였다(t(38.89)=6.71, p<.001, d=1.47).
‘생각’ 도구를 사용해야 하는 경우
- 도구 결과 분석: 도구 호출 결과를 해석하고 조치 전에 재검토가 필요한 경우
- 정책 중심 환경: 세부 정책 준수가 필요한 경우
- 순차적 결정: 누적 판단이 필요한 경우 (실수 비용이 클 때)
구현을 위한 모범 사례
- 도메인 특화 예시와 함께 전략적 프롬프트 제공
- 사고 프로세스에 기대되는 세부 수준
- 복잡한 지침을 실행 가능 단계로 분해하는 방법
- 반복되는 상황에 대한 의사 결정 트리
- 정보 수집 여부 확인 방법
- 복잡한 지침은 시스템 프롬프트에 포함
- 도구 설명보다 시스템 프롬프트에 통합했을 때 효과가 더 큼
사용하지 않아야 할 경우
- 비순차적 도구 호출: 단일 호출 또는 병렬 처리만 필요할 때
- 단순 지시 수행: 명확한 제약이 없고 Claude의 기본 행동이 충분할 때
시작하기
- 정책 순응 또는 도구 체인에서 어려움을 겪는 고난도 사례부터 테스트
- 최소한의 코드로 도구 정의 추가 및 도메인에 맞춘 지침과 예시 포함
- 실제 사용 패턴 모니터링 및 프롬프트 개선
결론
‘생각’ 도구는 Claude 3.7 Sonnet의 복잡한 정책 준수 및 추론 기반 문제 해결 능력을 크게 향상시킬 수 있다. 모든 상황에 적합한 것은 아니지만, 올바른 맥락에서 최소한의 구현으로 큰 효과를 낼 수 있다. Claude 3.5 Sonnet에서도 동일한 설정으로 성능 향상이 입증되었으며, 이는 다양한 Claude 모델에 일반화될 수 있음을 보여준다.
TI Tech Lab 박선홍 연구원
Add comment