되묻기를 하는 클로드 코드 - AskUserQuestion 툴
Blog

되묻기를 하는 클로드 코드 - AskUserQuestion 툴

https://www.facebook.com/hwidong.bae/
2026.01.18
·Web·by 네루
#LLM#Claude#Prompting#Tool Use#RAG

핵심 포인트

  • 1필자는 자연어의 불명확성 때문에 AI에게 '되묻게 하기'가 가장 효과적인 프롬프팅 기법이라고 강조하며, 이를 위한 개인적인 활용법을 제시합니다.
  • 2클로드 코드 2.0.21 버전부터는 'AskUserQuestion' Tool이 추가되어, AI가 모호하거나 여러 응답이 가능한 경우 사용자에게 직접 질문하고 선택지를 제시하여 명확성을 확보할 수 있게 되었습니다.
  • 3이 Tool은 Claude Code의 'Plan mode'에서도 적용되어, 계획 수립 전 근본적인 불확실성 해소 및 실행 중 세부 사항 결정을 위해 사용자 입력을 요구하며 계획의 정확성을 높이는 데 핵심적인 역할을 합니다.

이 문서는 가장 효과적인 프롬프팅 기법으로 '되묻게 하기(making the AI ask back)'를 제시합니다. 이는 자연어의 본질적인 불명확성과 사용자가 질문을 받았을 때 비로소 떠오르는 생각들을 고려한 접근법입니다. 저자는 이를 위해 딥 리서치 시 응답 하단에 '불확실성 지도(Uncertainty Map)'를 추가하도록 지시하며, 이는 AI가 덜 확신하는 부분, 지나치게 단순화했을 수 있는 부분, 그리고 어떤 질문이나 추가 정보가 AI의 의견을 바꿀 수 있는지를 포함합니다. 또한, 정보가 불충분할 경우 리서치 전에 사용자에게 질문하도록 프롬프트합니다.

이러한 맥락에서, 2023년 10월 18일 클로드 코드(Claude Code) 2.0.21 버전에서 새롭게 추가된 '대화형 질문 도구(Interactive Question Tool)', 공식 명칭 AskUserQuestion이 핵심적인 변화로 소개됩니다. 이 도구는 클로드 코드가 사용자의 쿼리가 불분명하거나 유효한 응답이 여러 개 존재할 때 몇 가지 선택지를 제시하여 사용자의 입력을 받아 진행할 수 있도록 합니다.

AskUserQuestion 도구의 작동 방식은 다음과 같습니다:
이 도구는 실행 중에 1~4개의 질문을 사용자에게 던져, 선호도를 수집하거나 요구사항을 명확히 하거나 구현 선택에 대한 결정을 얻습니다.

  • 주요 기능(Key Features):
    • 각 질문은 2~4개의 사전 정의된 옵션을 제공합니다.
    • 사용자는 '기타(Other)'를 선택하여 사용자 지정 텍스트 입력을 제공할 수 있습니다.
    • 단일 선택(기본값) 또는 다중 선택(multiSelect: true\text{multiSelect: true})을 지원합니다.
    • 각 옵션은 선택에 대한 설명과 함께 label\text{label}description\text{description}을 포함합니다.
  • 구조(Structure):
    • question\text{question}: 사용자에게 제시되는 전체 질문 텍스트.
    • header\text{header}: 태그로 표시되는 짧은 레이블(최대 12자).
    • options\text{options}: label\text{label}description\text{description}을 포함하는 2~4개의 선택지 배열.
    • multiSelect\text{multiSelect}: 다중 선택이 가능한지 여부를 나타내는 불리언 값.

예시 사용 사례(Example Use Cases)로는 인증 방식 선택(OAuth, JWT, Session-based), 날짜 형식 라이브러리 선택(date-fns, dayjs, Luxon), 다중 선택을 통한 기능 활성화 여부 등이 있습니다. 클로드 코드는 가정 대신 사용자의 입력을 받기 위해 유효한 접근 방식이 여러 개 있거나 요구사항이 불분명할 때 이 도구를 사용합니다.

AskUserQuestion 도구는 클로드 코드의 플랜 모드(Plan Mode)와도 긴밀하게 통합됩니다. 유출된 클로드 코드의 내부 도구 구현 문서에 따르면, ambiguity\text{ambiguity}가 존재할 경우 플랜 모드가 종료되기 전에 이 도구를 사용하여 사용자에게 의견을 묻도록 설계되어 있습니다.

  • 계획 전(Before Planning): 요구사항이 계획 자체에 근본적인 영향을 미칠 정도로 모호할 경우, 클로드는 계획을 생성하기 전에 AskUserQuestion\text{AskUserQuestion}을 사용하여 명확히 합니다. 이는 사용자 의도에 부합하는 계획을 보장합니다.
    • 예: "앱에 인증을 추가해줘." \to 클로드는 인증 방식(OAuth, JWT 등)을 묻고, 사용자의 선택에 따라 계획을 수립합니다.
  • 계획 중(During Planning): 요구사항이 명확하여 계획을 생성할 수 있지만 구현 세부 사항에 결정이 필요할 경우, 클로드는 모호한 부분을 명시한 계획을 생성한 후, 플랜 모드를 종료하기 전에 AskUserQuestion\text{AskUserQuestion}을 사용하여 명확히 하고, 필요에 따라 계획을 업데이트합니다.
  • 계획 승인 후(After Plan Approval): 계획이 승인되고 실행 단계에 들어간 후에도 구현 중에 발생하는 결정 사항에 대해 AskUserQuestion\text{AskUserQuestion}을 사용할 수 있습니다.

핵심 규칙은 ExitPlanMode\text{ExitPlanMode} 도구 지침에 명시되어 있듯이, "이 도구를 사용하기 전에 계획이 명확하고 모호하지 않은지 확인하십시오. 유효한 접근 방식이 여러 개 있거나 요구 사항이 불분명한 경우, AskUserQuestion\text{AskUserQuestion} 도구를 사용하여 먼저 사용자와 명확히 해야 합니다." 즉, 근본적인 모호성이 있을 경우 주요 가정을 포함한 계획을 제시하기보다 계획을 확정하기 전에 사용자에게 질문해야 합니다.