프롬프트에 제약사항 나열하는 대신 AI에게 스스로 용어를 정의하게 했더니 결과가 완전히 달라짐
stopped padding my prompts and told the AI to define its own terms instead. different outputs entirely.
핵심 요약
긴 프롬프트 대신 '제1원칙' 기반의 추론을 요구하여 AI가 스스로 논리적 근거를 정의하게 함으로써 결과물의 품질과 추적 가능성을 높이는 방법.
- 제1원칙 추론 — AI에게 용어의 원자적 의미를 먼저 정의하게 하여 논리적 사고를 유도함.
- 결과물 디버깅 — AI가 도출한 논리 체인을 통해 잘못된 전제를 찾아내고 수정할 수 있음.
- 프롬프트 효율화 — 장황한 제약사항 나열보다 명확한 사고 방식 지시가 더 일관된 결과를 냄.
- 지식의 추적성 — AI의 결정 과정을 투명하게 만들어 주니어 개발자 교육이나 협업에 활용 가능함.
다들 하는 대로 프롬프트를 점점 길게 써왔음. 문맥 추가하고, 제약사항 명확히 하고, 어조 지정하고, 예외 케이스 나열하고. 결과물은 아주 조금 나아질 뿐이고, 환각(hallucination)은 여전함.
몇 주 전에 좀 다른 걸 시도해봄.
모든 걸 내가 정의하는 대신 딱 한 줄을 추가했음: "아리스토텔레스식 제1원칙 추론을 사용해. 진행하기 전에 정의되지 않은 모든 용어를 원자적 의미로 분해해."
그런 다음 "세계 최고 수준의 웹사이트"를 만들어달라고 요청했음.
보통 이런 문구는 인터넷의 통계적 평균치 같은 평범한 결과물만 내놓음. 하지만 이 지시를 넣으니 AI가 실제로 멈춰서 "세계 최고 수준"이 무엇을 의미하는지 정의하기 시작했음 - 속도, 시각적 계층 구조, 접근성, 전환 패턴, 신뢰 신호 등. 각 구성 요소를 도출한 뒤 거기서부터 구축을 시작함. 나는 기본적으로 두 단어만 썼는데 AI가 스스로 모든 정의 작업을 수행한 거임.
이걸 다른 작업들에도 테스트해봤는데 패턴이 유지됨. 예전에는 일반적인 결과물만 내놓던 모호한 형용사들이 이제는 구체적인 결과물을 만들어냄. 모델이 훈련 데이터에서 통계적으로 가장 흔한 것을 패턴 매칭하는 대신 구성 요소의 진실로부터 추론하기 때문임.
예상치 못한 부분은 이제 결과물을 디버깅할 수 있다는 점임.
내부적으로 일어나는 일은 이럼. 제1원칙으로부터 추론하라고 하면, 그냥 답만 하는 게 아니라 체인을 구축함. 예를 들어: "프로덕션급 코드는 조용한 실패(silent failures)가 없어야 한다"라고 확립함. 그다음: "조용한 실패가 없으려면 모든 외부 호출에 명시적인 오류 처리가 필요하다"라고 함. 그다음 두 개를 합쳐서: "모든 API 호출은 타입이 지정된 오류 응답을 포함하는 try/catch가 필요하다"는 식으로 이어짐. 각각의 새로운 결론은 그 위의 공리가 유효하기 때문에 유효함. 요청하면 이 전체 과정을 볼 수 있음.
그래서 뭔가 잘못됐을 때, 프롬프트를 다시 쓰고 운에 맡기는 게 아님. 체인을 살펴보고 어떤 공리가 깨졌는지 찾는 거임. 아마 공리 3은 괜찮은데 공리 6이 틀렸을 수 있음. 이제 무엇을 수정해야 할지 정확히 알게 되고, 그 아래에 있는 모든 것은 자동으로 의심 대상이 됨. 모든 노드가 추적 가능한 부모를 가진 방향성 그래프와 같음.
보통의 긴 프롬프트와 비교해보셈. AI는 수십 가지 결정을 내리지만 그 결정들은 어디에도 남아있지 않음. 찾을 수도 없고 감사할 수도 없음. 결과물을 받아들이거나 처음부터 다시 시작해야 함.
이 추적 가능성은 주니어 개발자가 "왜 오류 처리가 이런 식으로 구조화되어 있죠?"라고 물을 때도 유용함. "그냥 그렇게 나왔어"라고 하는 대신, 그 추론 과정을 직접 설명해줄 수 있음.
이걸로 프롬프트 템플릿을 만들어봤으니 관심 있으면 써보셈: https://github.com/ndpvt-web/prompt-improver
아직 예외 케이스들을 파악 중이라 모든 모델에서 똑같이 작동할지는 모르겠음. 하지만 "진행하기 전에 제1원칙에 따라 용어를 정의하라"는 지시가 제약사항을 세 문단 더 적는 것보다 훨씬 신뢰할 만했음.


