Instruction Best Practices: Precision Beats Clarity
AI 모델이 명령어의 구체적 구성 요소(construct)를 카테고리 표현 대신 사용할 때 준수율이 약 10배 증가하는 현상 발견
AI 요약
Context
명령어 파일에 동일한 의도를 가진 여러 규칙이 존재할 때, 모델이 일관성 있게 따르지 않는 문제가 발생했다. 같은 파일, 같은 모델, 같은 컨텍스트 윈도우에서도 일부 규칙만 선택적으로 준수하는 현상이 관찰되었다.
Technical Solution
- 조건부 범위를 정확한 경로나 파일 패턴으로 변경: "When working with external services"를 "When writing tests for
src/payments/"로 변경하여 grep 패턴처럼 작동하도록 구현 - 카테고리 표현을 구체적 구성 요소로 치환: "mock objects" 대신 "unittest.mock"으로 변경하여 import 문이나 스택 트레이스에서 직접 매칭 가능하게 수정
- 광범위 범위를 무조건적 명령어로 전환: 광범위 조건부 명령어가 잘못된 범위보다도 낮은 준수율을 보이므로, 조건을 정확히 할 수 없으면 조건을 제거
- 명령어의 정확성과 형식을 동시에 개선: 헤더, 코드 블록, 계층 구조로 스캔 가능성을 높이면서 동시에 정확한 구성 요소와 tight 범위로 actionable하게 작성
- 테스트 검증: 동일한 모델, 동일한 컨텍스트 윈도우에서 1000회 이상 실행하여 통계적으로 유의미한 차이 확인
Impact
정확한 구성 요소명명(예: "unittest.mock")을 사용한 명령어는 카테고리 표현(예: "mock objects")보다 약 10배 높은 준수율 달성. 정확한 범위(exact scope)와 보편적 범위(universal scope)는 거의 동일한 수준의 준수율을 보이나, 광범위 범위(broad category scope)는 잘못된 범위(wrong domain scope)보다도 낮은 준수율 기록.
Key Takeaway
AI 모델의 명령어 준수율은 인간이 선호하는 표현의 명확성이 아니라 모델이 코드 생성 시 실제로 산출할 토큰과의 정확한 매칭 정도에 따라 결정된다. 따라서 명령어 작성 시 import 경로, 클래스명, 파일 glob, CLI 플래그처럼 런타임에 직접 마주치는 구성 요소를 명시하고, 조건부 범위는 grep 패턴으로 작동할 수 있을 정도로 정확히 작성하거나 제거해야 한다.
실천 포인트
AI 모델을 활용하는 개발 팀이 명령어나 가이드라인 파일을 작성할 때, "서비스", "라이브러리", "오류" 같은 카테고리 단어를 "unittest.mock", "stripe.Customer.create()", "cursor.execute()" 같은 실제 코드 구성 요소로 치환하고, "When working with..." 같은 광범위 조건을 정확한 파일 경로나 무조건적 명령어로 변경하면 규칙 준수율을 10배 이상 향상시킬 수 있다.