3.G. 그 밖의 기법들
3.G. 그 밖의 기법들🔗
지금까지 강력하고 효과적인 프롬프트 엔지니어링 기법들에 대해 살펴봤다면, 이 섹션에서는 기본 기법들을 보완하거나 특정 상황에서 효과적인 기법들을 몇 가지 다뤄보겠습니다.
이 섹션에 포함된 기법들은 다음과 같이 분류할 수 있습니다. (바로가기 포함)
| 비교적 간단한 기법 | 특정 상황에서 유용한 고급 기법 |
|---|---|
| - 출력 길이 조절하기 - 이전 질의나 답변에 놓친 것이 있는지 질의하기 - 톤/스타일 조절하기 |
- 프롬프트 연계하기 - 생각의 트리(ToT) 기법 - 생각하고 행동하기(ReAct) - 창의력 극대화(Verbalized Sampling) |
* AI 생성 이미지 with Nano Banana Pro
출력 길이 조절하기🔗
단순히 '더 짧게 답해줘', '좀 더 길게 다시 써봐'와 같은 지시에서부터, 구체적으로 '몇 개의 문단으로 답해줘'나 '몇 개의 글머리 기호로 요약해줘'와 같은 지시를 통해 LLM의 출력(답변) 길이를 조절할 수 있습니다.
반면 종종 사용되는 방법으로 '몇 단어 (내외)로 답해줘'와 같은 지시는 GPT의 가이드에 따르면 문단 수, 글머리 기호 수와 같은 단위에 비해 정확도가 떨어질 수 있다고 하며, 특히 영어에선 거의 1:1 관계인 단어-토큰 수의 관계가 한국어에선 성립하지 않는다는 점을 고려하면 그 정확도는 더욱 더 낮을 것으로 예상됩니다.
💭 만약 '답변의 단어 수를 측정하고 지시한 단어 수에 맞춰 다시 조정할 것'과 같은 추가적인 단계를 지시하여 해소할 수 있겠지만, 테스트가 필요합니다.
또 한국어의 경우 '단어 수'보다는 '글자 수'로 제약을 걸기도 해서.. 이런 경우 LLM에만 의지하기 보다는 글자 수(또는, 단어 수)를 세기 위한 별도의 코드, 엑셀 등 외부 프로그램을 활용하는 편이 더 빠를 것 같기도 합니다.
이전 질의나 답변에 놓친 것이 있는지 질의하기🔗
이 기법은 사용자의 질문이나 LLM의 답변에서 누락되거나 충분히 다루지 않은 정보를 추가로 얻기 위해 사용됩니다. 항상 효과가 보장되는 것은 아니지만, 다음과 같은 경우에 유용할 수 있습니다.
-
사용자가 입력한 질문이나 예시에 누락된 사항, 보완할 점 등을 확인하려는 경우
-
LLM의 답변에 누락된 사항이나 보완할 점이 없는지 확인하려는 경우
-
기존 답변의 오류나 논리적 비약을 확인하려는 경우
사용 방법은 간단히 다음과 같은 질문을 대화 중간중간 (필요할 때마다) 던져보는 것입니다.
-
"이 주제에 대해 더 추가할 내용이 있나요?"
-
"답변해준 것 외에 또 다른 중요한 사항은 없나요?"
-
"이 설명에서 놓친 중요한 측면이 있을까요?"
-
(그 밖의 비슷한 질문 무엇이든)
이를 통해서 LLM이 학습한 지식을 최대한 활용하여 '더 완전하고 포괄적인 정보 획득', '간과된 중요 세부사항 파악', '주제에 대한 다각도 분석', '잠재적 오류나 편향 수정' 등의 효과들을 얻을 수 있습니다.
예를 들면 다음과 같은 식입니다.
사용자: "우리나라의 주요 수출품에 대해 설명해줘."
LLM: "우리나라의 주요 수출품으로는 반도체, 자동차, 석유화학 제품 등이 있습니다. 반도체는 특히 메모리 칩 분야에서 세계적인 경쟁력을 갖고 있으며, 자동차는 품질과 기술력으로 인정받고 있습니다."
사용자: "이 외에 중요한 수출품이 더 있나?"
LLM: "네, 말씀드린 것 외에도 중요한 수출품이 더 있습니다. 선박, 디스플레이, 무선통신기기도 우리나라의 주요 수출품입니다. 특히 선박 건조 분야에서는 세계 최고 수준의 기술력을 보유하고 있으며, 디스플레이와 스마트폰을 포함한 무선통신기기 분야에서도 글로벌 시장에서 높은 점유율을 차지하고 있습니다."
단, 이 기법을 사용할 때는 다음과 같은 사항을 주의해야 합니다.
- 과도한 후속 질문 자제: 너무 많은 후속 질문은 대화의 초점을 흐릴 수 있으며, LLM이 억지로 그럴듯한 거짓 정보(할루시네이션)를 생성할 위험이 있습니다. 대개 1~2회의 후속 질문으로 충분합니다.
- 구체적인 질문 활용: 추상적인 질문보다는 구체적인 질문이 더 정확하고 유용한 답변을 이끌어낼 수 있습니다. 예를 들어, "뭔가 더 보완할 것이 없나요?"보다는 "수출품의 최근 동향이나 변화에 대해 추가로 설명해 줄 수 있나요?"와 같이 질문하는 것이 효과적입니다.
톤/스타일 조절하기🔗
'역할 부여하기'와 일부 공통점이 있는 간단한 기법입니다. '~~ 톤으로 써줘', '~~ 스타일로 답해줘'와 같은 프롬프트를 추가하는 것만으로 답변의 톤/스타일을 조절할 수 있습니다.
몇(?) 가지 예시 톤/스타일 예시들을 정리하면 다음과 같으며, 사용자가 원하는 결과에 가장 가까운 표현이 있다면 무엇이든 사용할 수 있습니다.
| 톤/스타일 | 설명 |
|---|---|
| 격식있는 Formal |
전문적이고 학문적인 톤으로, 비즈니스나 학술적 의사소통에 적합합니다. Professional and academic, suitable for business or scholarly communication. |
| 편안한 Informal |
캐주얼하고 친근한 톤으로, 일상적이거나 개인적인 대화에 적합합니다. Casual and friendly, appropriate for relaxed or personal interactions. |
| 친절한 Friendly |
따뜻하고 다정한 톤으로, 친근감을 주는 대화에 적합합니다. Warm and approachable, creating a sense of camaraderie. |
| 진지한 Serious |
엄숙하고 진중한 톤으로, 중요한 주제나 민감한 주제에 적합합니다. Grave and somber, suitable for sensitive or important topics. |
| 유머러스한 Humorous |
가볍고 웃긴 톤으로, 대화에 재미를 더합니다. Light-hearted and funny, adding a touch of comedy to the conversation. |
| 격려하는 Encouraging |
지지하고 긍정적인 톤으로, 독려하고 힘을 북돋는 대화에 적합합니다. Supportive and positive, motivating and uplifting the reader. |
| 호기심 있는 Inquisitive |
궁금해하고 질문하는 톤으로, 깊이 있는 탐구를 유도합니다. Curious and questioning, engaging in thoughtful inquiry. |
| 권위있는 Authoritative |
자신감 있고 단호한 톤으로, 전문성과 지식을 주장합니다. Confident and commanding, asserting expertise and knowledge. |
| 간결한 Concise |
짧고 간단하게, 불필요한 세부 사항을 피합니다. Brief and to the point, avoiding unnecessary details. |
| 상세한 Detailed |
포괄적이고 철저하게, 깊이 있는 정보를 제공합니다. Comprehensive and thorough, providing in-depth information. |
| 낙관적인 Optimistic |
긍정적이고 희망적인 톤으로, 밝은 면을 강조합니다. Positive and hopeful, focusing on the bright side of things. |
| 비관적인 Pessimistic |
부정적이고 회의적인 톤으로, 잠재적 문제나 단점을 강조합니다. Negative and doubtful, highlighting potential issues or downsides. |
| 공감하는 Empathetic |
이해하고 동정하는 톤으로, 독자의 감정에 민감하게 반응합니다. Understanding and compassionate, sensitive to the reader's feelings. |
| 중립적인 Neutral |
편견 없고 객관적인 톤으로, 개인 의견 없이 정보를 제공합니다. Unbiased and objective, presenting information without personal opinion. |
| 열정적인 Enthusiastic |
에너지 넘치고 열정적인 톤으로, 열의와 열정을 전달합니다. Energetic and excited, conveying passion and eagerness. |
| 설득하는 Persuasive |
설득력 있고 영향력 있는 톤으로, 독자의 의견을 변화시키려 합니다. Convincing and influential, aiming to sway the reader's opinion. |
| 신중한 Cautious |
조심스럽고 신중한 톤으로, 신중함과 안전을 강조합니다. Careful and risk-averse, emphasizing prudence and safety. |
| 기술적인 Technical |
전문 용어를 사용하는 톤으로, 전문가 대상에 적합합니다. Specialized and jargon-heavy, suitable for expert audiences. |
| 서사적인 Narrative |
이야기하는 듯한 톤으로, 생생한 그림이나 상황을 그려냅니다. Storytelling and descriptive, painting a vivid picture or scenario. |
| 분석적인 Analytical |
논리적이고 체계적인 톤으로, 분석과 추론에 집중합니다. Logical and systematic, focusing on analysis and reasoning. |
| 영감을 주는 Inspirational |
고무적이고 격려하는 톤으로, 독자가 행동을 취하도록 유도합니다. Uplifting and motivational, encouraging the reader to take action. |
| 회의적인 Skeptical |
의심 많고 질문하는 톤으로, 가정이나 주장을 도전합니다. Doubtful and questioning, challenging assumptions and claims. |
| 장난스러운 Playful |
재미있고 장난기 있는 톤으로, 대화에 유쾌함을 더합니다. Fun and whimsical, adding an element of playfulness to the interaction. |
| 성찰적인 Reflective |
사색적이고 반성하는 톤으로, 깊이 있는 생각을 유도합니다. Thoughtful and introspective, encouraging contemplation and reflection. |
📌 참고 : 표에서 '톤/스타일' 열뿐만 아니라 '설명'열에 포함된 단어를 사용해도 얼마든지 새로운 '톤/스타일'처럼 활용할 수 있습니다. 결국 또 중요한 건 '내가 원하는 정확한 톤/스타일을 어떻게 표현하지?'라고 할 수 있습니다.
프롬프트 연계하기🔗
'프롬프트 연계하기(chaining prompts)'는 앞서 다룬 '단계적 지시'와 유사하지만, 다음과 같이 한 번의 프롬프트로는 처리하기 어려운 경우에 유용한 방법입니다.
-
단계가 많고 각 단계별 지시도 복잡하여 프롬프트가 아주 길어지는 경우
-
프롬프트에 아주 긴 텍스트를 포함하여 질문하는 경우
이는 각 LLM마다 어느 정도 정해져 있는 '최대 (입출력) 토큰 수'나 '컨텍스트 윈도우' 때문입니다. 매우 긴 프롬프트는 입력 자체가 불가능하거나, 요약해서 입력하더라도 적절한 품질의 답변을 얻기 어렵습니다.
📌 참고 :
최대 토큰 수 : 모델이 한 번에 처리할 수 있는 입력+출력 텍스트의 총 토큰 수입니다. 여기서 '입력'은 사용자의 프롬프트, '출력'은 모델의 답변입니다. 예를 들어 최대 토큰 수가 4096인 모델에 2048 토큰의 질문을 입력하면, 모델의 답변은 2048 토큰으로 제한됩니다.
컨텍스트 윈도우 : 모델이 동시에 '기억'하고 참조할 수 있는 텍스트의 범위입니다. 컨텍스트 윈도우가 클수록 더 많은 과거 대화를 참조할 수 있지만, 더 많은 메모리와 계산이 필요하고 속도도 느려지게 됩니다. 따라서 LLM마다 일정한 값으로 제한되어 있습니다.
그 밖에 다양한 이유/목적으로 '프롬프트 연계하기'가 필요할 수 있으며, 그 방법은 앞에서 설명한 '구분 기호 사용하기'를 응용하는 것입니다. 그 중에서도 XML 태그를 사용한 예시는 다음과 같습니다.
[ 프롬프트 1 ]
다음 <document></document> 태그 안에 있는 텍스트를 분석하려고 해.
<document>
[여기에 장문의 텍스트가 들어갑니다]
</document>
이 텍스트에서 "인공지능의 윤리적 사용"에 관한 주요 논점들을 추출해줘. 각 논점을 간단히 요약해서 <points></points> 태그 안에 넣어주고. 관련 내용이 없다면 "관련된 논점을 찾을 수 없습니다."라고 답변해.
[ 프롬프트 2 ]
앞서 추출한 인공지능의 윤리적 사용에 관한 논점들을 바탕으로, "기업이 AI 기술을 책임감 있게 개발하고 활용하기 위한 가이드라인"을 작성해줘. 각 가이드라인은 실행 가능하고 구체적이어야해.
추출된 논점들은 다음과 같아:
<points>
[질문 1의 답변에서 추출된 논점들]
</points>
답변 시 다음 형식을 사용해줘:
<guidelines>
1. [첫 번째 가이드라인]
2. [두 번째 가이드라인]
...
</guidelines>
[ 프롬프트 3 ]
작성된 가이드라인을 바탕으로, 한 페이지 분량의 "AI 윤리 준수 서약서" 초안을 작성해봐. 이 서약서는 기업의 임직원들이 AI 기술을 개발하고 사용할 때 준수해야 할 윤리적 원칙들을 담고 있어야해.
작성된 가이드라인은 다음과 같아:
<guidelines>
[질문 2의 답변에서 작성된 가이드라인]
</guidelines>
서약서는 <pledge></pledge> 태그 안에 넣고, 가능한 간단명료한 문장으로 작성해줘.
컨텍스트 윈도우 내에서는 3번째 프롬프트에서 '작성된 가이드라인'만 언급해도 LLM이 이전 답변의 결과를 참조할 수가 있습니다. 그러나 처리해야 할 텍스트가 길고 지시사항이 복잡해서 모델의 컨텍스트 윈도우를 초과할 경우, LLM은 이전 정보의 일부만 참조하거나 심지어 전혀 참조하지 못할 수도 있습니다.
더구나 대개의 경우 사용자가 현재 모델의 컨텍스트 윈도우를 초과했는지 여부를 정확히 판단하기도 어렵습니다. 따라서 <points></points>, <guidelines></guidelines>와 같은 태그를 사용하여 다음 단계에 필요한 이전 단계의 답변 핵심 부분을 직접 포함시키는 방법이 더 안정적이고 효과적입니다. 이 방식은 각 단계마다 필요한 정보를 확실히 참조할 수 있도록 보장하며, 장기적인 문맥 유지에도 도움이 됩니다.
📌 참고 : 필요에 따라선 더 단순하거나 일반적인 상황에서도 이 기법을 적용하면 보다 나은 결과를 얻을 수 있습니다.
생각의 트리(Tree of Thought, ToT) 기법🔗
기존의 '단계적 지시(Step-by-step)' 또는 '생각의 사슬(Chain of Thoughts)' 기법이 하나의 경로를 따라 깊이 생각하는 방식이라면, '생각의 트리'는 마치 체스 마스터가 여러 수를 미리 내다보며 최적의 전략을 선택하는 것과 같습니다. LLM이 각 단계에서 여러 갈래의 '생각'을 동시에 생성하고, 그중 가장 유망한 경로를 선택하거나 필요시 다른 경로로 되돌아가 탐색을 계속하는 방식입니다.
💭 설령 ToT 기법을 사용한다고 하더라도 LLM이 정말로 '동시에(=병렬적으로)' 여러 가지 생각을 한다고 이해하지는 말아야 합니다. LLM은 기본적으로 순차적인 문장/단어 생성만 하도록 만들어져 있습니다.
ToT는 프롬프트 설계를 통해 LLM이 마치 여러 갈래로 분기하는 것처럼 답변하도록 유도하는 기법입니다. 다시 말해, "첫 번째 접근법은...", "두 번째 접근법은...", "세 번째 접근법은..."과 같이 여러 독립적인 아이디어를 나열하게 만드는 것이지, LLM 내부에서 진짜 병렬 처리가 일어나는 것은 아닙니다.
하지만 이런 방식으로 구조화된 프롬프트를 통해 각 '생각의 가지'를 독립적으로 탐색하고 비교·평가하는 효과를 얻을 수 있습니다.
언제 ToT가 효과적인가?
- 창의적 문제 해결: 마케팅 전략, 제품 기획, 브랜딩 등
- 복합적 의사결정: 비슷한 우선순위/중요도의 여러 변수를 고려해야 하는 비즈니스 결정
- 전략적 계획 수립: 사업 계획, 프로젝트 로드맵 등
- 정답이 여러 개인 문제: 디자인 컨셉, 문제 해결 방안 등
기본 구조
예시 1: 마케팅 전략 수립
신제품 비건 스낵의 출시 마케팅 캠페인 계획을 세워줘.
1단계: 최소 3가지 다른 마케팅 접근 방식을 제시해줘
- 접근법 A: [타겟, 메시지, 채널]
- 접근법 B: [타겟, 메시지, 채널]
- 접근법 C: [타겟, 메시지, 채널]
2단계: 각 접근법에 대해 다음을 분석해줘
- 예상 예산 (상/중/하)
- 도달 가능한 고객 수
- 예상 전환율
- 실행 난이도
- 장단점
3단계: 종합 평가 후 최종 추천안을 제시하고 그 이유를 설명해줘
예시 2: 복잡한 기술적 문제 해결
우리 앱의 로딩 속도가 느린 문제를 해결하고 싶어.
1단계: 가능한 원인들을 3-4가지 카테고리로 나누어 탐색해줘
- 프론트엔드 최적화 관점
- 백엔드/서버 관점
- 네트워크/CDN 관점
- 데이터베이스 관점
2단계: 각 관점에서 구체적인 해결 방안을 2-3개씩 제시해줘
3단계: 각 해결 방안을 다음 기준으로 평가해줘
- 구현 난이도 (1-5점)
- 예상 성능 개선 효과 (1-5점)
- 필요한 리소스 (시간/인력/비용)
- 리스크 수준
4단계: 우선순위가 높은 상위 3개 방안을 선별하고, 단계적 실행 계획을 제시해줘
생각하고 행동하기(Reasoning and Acting, ReAct)🔗
ReAct는 'Reasoning(추론)'과 'Acting(행동)'을 결합한 프레임워크입니다. 마치 숙련된 연구원이 문제를 해결할 때 "이 정보가 필요하니 자료를 찾아보자", "계산이 복잡하니 계산기를 사용하자"와 같이 스스로 필요한 도구를 선택하고 사용하는 것과 같습니다.
💭 Claude의 Extended Thinking, ChatGPT의 Deep Research 등과 같이 최신 LLM 서비스들은 이미 ReAct 패턴을 내부적으로 구현한 고급 기능을 제공하고 있습니다. 하지만 ReAct의 원리를 이해하고 프롬프트로 직접 구현할 수 있다면 몇 가지 실용적인 장점이 있습니다.
- 사용량 제한 회피 : 이 같은 고급 기능은 워낙 많은 자원을 필요로 하는 탓에, 사용량이나 횟수가 제한되어 있습니다. 일반 모드에서 ReAct 패턴 프롬프트를 사용하면 고급 기능을 사용하는 것과 유사한 효과를 얻을 수 있습니다.
- 커스터마이징 : 특정 도메인이나 작업 흐름에 맞게 '추론-행동-관찰' 사이클을 세밀하게 조정할 수 있습니다. 예를 들어 규제에 민감한 분야에서는 "데이터 수집 → 계산 → 규제 확인 → 결론"과 같이 도메인에 특화된 단계를 설계할 수 있습니다.
- 투명성 확보 : 각 추론 단계와 행동을 명시적으로 요청하므로, LLM의 답변 내용을 통해 사고 과정을 더 명확히 파악하고 논리적 비약이나 환각 등이 없는지 검증하기 용이합니다.
단, 일반적인 대화 모드에서는 ReAct 기법을 사용하더라도 기본적인(=과도한 연산을 방지하기 위한) 안전장치 덕에 고급 기능을 사용할 때와 완전히 동일한 효과를 얻을 수는 없습니다. 어느 정도 범위 내에선 단계를 나눠서 처리하는 소위 'Divide and Conquer' 전략을 사용할 수 있을 텐데, 단계가 많거나 답변이 길수록 전체적인 맥락을 유지하기 위한 추가/보조 전략이 필요할 것입니다.
ReAct 기법의 작동 원리
- 추론(Reason): 현재 상황을 분석하고 필요한 정보나 행동을 파악
- 행동(Act): 외부 도구 사용 (검색, 계산, API 호출 등)
- 관찰(Observe): 행동의 결과를 확인하고 분석
- 재추론: 새로운 정보를 바탕으로 다음 단계 계획
- 반복: 문제가 해결될 때까지 2-4단계 반복
기본 구조
[질문/문제]
다음과 같이 단계별로 해결해줘:
1. 먼저 이 문제를 해결하기 위해 어떤 정보가 필요한지 생각해줘
2. 필요한 정보를 얻기 위해 어떤 도구나 방법을 사용할지 계획해줘
3. 실제로 그 방법을 실행해줘
4. 얻은 결과를 분석해줘
5. 추가로 필요한 정보가 있다면 2-4단계를 반복해줘
6. 최종 답변을 종합해서 제시해줘
각 단계에서 너의 '생각'과 '행동'을 명확히 구분해서 보여줘.
예시 1: 복합적 계획 수립
내일 서울 날씨가 좋으면 한강 피크닉을 가려고 해.
다음과 같이 단계별로 도움을 줘:
1. 내일 서울 날씨를 확인해줘
2. 날씨가 피크닉에 적합한지 판단해줘
3. 한강 피크닉 장소들을 조사해서 특징을 비교해줘
4. 날씨 조건에 맞는 준비물 리스트를 만들어줘
5. 최종적으로 추천 장소와 이유, 준비물을 정리해줘
각 단계에서 생각, 행동, 그리고 결과를 명확히 구분해서 보여줘.
예시 2: 데이터 기반 의사결정
경쟁사 A의 최근 주가 동향을 분석하고,
우리 회사의 투자 전략에 대한 시사점을 도출해줘.
ReAct 방식으로 해결해줘:
1. [추론] 필요한 정보: 경쟁사 A의 최근 3개월 주가 데이터
2. [행동] 웹 검색으로 경쟁사 A 주가 정보 수집
3. [관찰] 수집된 데이터 확인 및 주요 변동 시점 파악
4. [추론] 주가 변동의 원인 분석 필요
5. [행동] 해당 기간의 주요 뉴스 및 공시 검색
6. [관찰] 신제품 출시, 분기 실적 등 주요 이벤트 확인
7. [추론] 우리 회사와의 연관성 분석
8. [최종 답변] 시사점 종합 및 전략 제안
각 단계에서 '추론-행동-관찰' 사이클을 명확히 구분하고,
실제로 어떤 도구(검색, 계산 등)를 사용할지 명시해줘.
📌 참고 : ToT 와 ReAct
ToT(생각의 트리)는 여러 가능한 접근법을 동시에 탐색하고 비교하는 데 초점을 둡니다. "어떤 방향으로 갈까?"를 고민할 때 유용합니다.
ReAct는 단계적으로 정보를 수집하고 행동하면서 문제를 해결하는 데 초점을 둡니다. "어떤 도구를 써서 정보를 얻을까?"를 고민할 때 유용합니다.
이렇게 서로 다른 두 기법을 조합하여 사용할 수도 있습니다. 예를 들어 ToT로 여러 접근법을 탐색한 후, 선택한 접근법을 ReAct 방식으로 실행하도록 프롬프트를 설계할 수 있습니다.
LLM의 창의력 끌어올리기 - Verbalized Sampling🔗
Verbalized Sampling(이하 VS)은 Stanford와 Northeastern 대학 연구팀이 2025년 10월 발표한 혁신적인 프롬프팅 기법입니다. 마치 식당에서 "오늘의 추천 메뉴 하나만 주세요"라고 하는 대신 "추천 메뉴 5가지와 각각이 얼마나 인기 있는지 알려주세요"라고 요청하는 것과 같습니다. LLM에게 단일 답변 대신 여러 답변과 각각의 확률값을 함께 생성하도록 요청하여, 모델이 가진 다양한 가능성을 끌어내는 방식입니다.
📌 참고 : '모드 붕괴(Mode Collapse)'와 '전형성 편향(Typicality Bias)'
혹시 LLM과 대화 중 원하는 답을 얻기 위해 같은 질문을 여러 번 던져본 적이 있나요? 조금씩 차이는 있지만 생각보다 뻔한/비슷한 답변이 나오는 것을 봤을지도 모르겠습니다. 이런 현상을 모드 붕괴라고 합니다.
연구팀은 이 문제의 원인을 규명했습니다. LLM은 사전학습(pretraining) 단계에서는 매우 다양한 답변을 생성할 수 있는 능력을 갖추지만, 이후 정렬(alignment) 과정에서 창의성이 억눌린다는 것입니다. 왜 그럴까요?
사람들은 익숙하고 전형적인 답변을 더 선호하는 경향이 있는데, 인지심리학에서는 이를 '단순 노출 효과(mere-exposure effect)'라고 합니다. 최근 LLM 학습에 널리 활용되는 '인간 피드백 기반 강화 학습(RLHF; Reinforcement Learning from Human Feedback)' 과정에서 사람들이 응답을 평가할 때, 무의식적으로 익숙한 답변에 더 높은 점수를 주는 경향이 있고, 이 때문에 전형성 편향이 생긴다는 것입니다.
결과적으로 LLM은 정도의 차이는 있지만 대개 "안전하고 평범한" 답변을 내놓도록 학습됩니다. 수학적으로는 보상 함수에 '전형성 가중치(α)'가 추가되어 통계적으로 평균에 가까운 답변을 더 적절한 답변이라고 판단하게 되는 것입니다.
하지만 중요한 사실은 창의성이 사라진 게 아니라 억눌려 있을 뿐이라는 점이고, 바로 이 VS를 이용해 LLM의 잠재된 창의성을 깨울 수 있습니다.
언제 VS가 효과적인가?
VS는 다양성과 창의성이 중요한 모든 작업에서 효과적입니다. 특히 다음과 같은 경우에 탁월한 성능을 보입니다:
- 창작 활동: 스토리텔링, 시 작성, 농담/유머 생성, 마케팅 카피 작성
- 브레인스토밍: 아이디어 발산, 제품 기획, 전략 수립
- 시뮬레이션: 대화 시나리오 생성, 사용자 행동 예측, 사회적 상호작용 모델링
- 합성 데이터 생성: AI 모델 학습용 다양한 데이터셋 구축
- 열거형 질문: 여러 가능한 답변이 존재하는 개방형 질문
💡 중요 : 연구 결과에 따르면, GPT-4/5나 Claude Opus와 같이 규모가 큰 모델일수록 VS의 효과가 더 크게 나타납니다. 작은 모델에 비해 작게는 50% 수준에서 크게는 100% 가량 다양성이 향상되는 것을 보였습니다. 이는 (당연해 보이기도 하는데) 대형 모델이 더 풍부한 잠재 능력을 가지고 있으며, VS가 이를 효과적으로 깨운다는 것을 의미합니다.
VS의 작동 원리
대부분의 경우 어떤 프롬프트를 쓰든지 상관 없이, 사용자는 LLM에게 "가장 가능성 높은 하나의 답변"을 요구하는 편입니다. 이는 결과적으로 모델이 내부적으로 계산한 확률 분포에서 최상위 하나만 선택하도록 만듭니다.
반면 VS는 다르게 접근합니다.
- 명시적 샘플링: 모델에게 여러 개의 답변을 생성하도록 요청
- 확률 언어화(Verbalization): 각 답변의 확률값을 함께 표현하도록 요청
- 분포 공간 탐색: 내부 확률 분포를 드러내면서 다양한 가능성 탐색
- 확률 임계값 조정: 낮은 확률 영역(꼬리 부분)에서 샘플링하도록 유도
핵심은 모델이 내부적으로만 확률 분포를 계산하는 것이 아니라, 그것을 명시적으로 언어로 표현(verbalize)하게 만든다는 점입니다. 이 과정에서 모델은 자신의 전체 확률 공간을 드러내게 되고, 훨씬 다양한 옵션(=답변)을 제시할 수 있게 됩니다.
기본 구조
가장 간단한 형태:
더 구조화된 형태:
<instructions>
사용자 질문에 대한 응답을 5개 생성하세요.
각 응답은 별도의 <response> 태그 안에 작성하고,
<text>와 숫자로 된 <probability>를 포함해야 합니다.
각 응답의 확률은 0.10 미만이 되도록
분포의 꼬리 부분에서 무작위로 샘플링하세요.
</instructions>
[여기에 실제 질문 입력]
📌 참고 : 확률 임계값으로 창의성 조절하기
보통은 확률 임계값(threshold)까지 설정하지 않고도 답변에 출력된 확률 값을 참고해 원하는 정도의 창의적인 답변을 선택하면 되지만, 필요한 경우 직접 확률 임계값을 조절해 답변의 창의성 수준을 제어할 수도 있습니다.
- 낮은 임계값 (예: 0.001): 더 파격적이고 예상 밖의 답변 생성
- 중간 임계값 (예: 0.05): 균형잡힌 다양성과 안정성
- 높은 임계값 (예: 0.1): 상대적으로 안정적이고 전형적인 답변
여기서 위의 임계값은 예시일 뿐이라는 점에 유의하기 바랍니다. 실제로 VS를 사용해보면 매번 확률 임계값의 범위가 다양하게 분포되어 있음을 알 수 있습니다. 언제는 0.5를 크게 웃도는 결과들만 나오기도 하고, 언제는 매우 작은 값부터 매우 큰 값까지 편차가 크게 나타나기도 합니다 (또는 그 반대).
따라서 기본적으로는 확률 임계값 설정 없이 VS를 이용해본 다음, 답변이 여전히 전형적이면 출력된 확률들보다 낮은 임계값으로 설정하고, 반대로 너무 특이하거나 동떨어진 답변만 나온다면 임계값을 높여서 다시 VS를 이용하는 방식을 권합니다.
예시 1: 마케팅 카피 작성
우리 회사의 새로운 친환경 텀블러 제품에 대한
인스타그램 광고 카피를 작성해야 해.
다음 형식으로 5가지 다른 접근법의 카피를 생성해줘:
각 카피에 대해:
1. 광고 문구 (2-3문장)
2. 핵심 메시지 (한 줄로)
3. 타겟 고객층
4. 이 접근법이 효과적일 확률 (0.0-1.0)
각 카피는 서로 다른 톤과 전략을 가져야 하며,
확률이 0.10 미만인 독특한 접근법도 포함해줘.
예시 2: 제품 기획 아이디어
커피 찌꺼기를 재활용하는 스타트업 아이디어를 브레인스토밍하고 있어.
다음 형식으로 5개의 서로 다른 사업 아이디어를 제시해줘:
각 아이디어는 다음을 포함:
- 사업 컨셉 (간단한 설명)
- 주요 타겟 시장
- 예상 수익 모델
- 기술적 실현 가능성 (1-5점)
- 시장 성공 가능성 확률 (0.0-1.0)
일반적인 아이디어뿐만 아니라,
확률이 낮더라도(0.05 미만) 파격적이고 혁신적인 아이디어도 포함해줘.
예시 3: 스토리텔링
"작별 인사 없이"라는 제목으로 시작하는 짧은 이야기를 써야 해.
5가지 완전히 다른 서사 구조의 이야기를 생성하고,
각각에 대해 다음을 제시해줘:
1. 이야기 전개 (200-300자)
2. 핵심 감정/분위기
3. 예상 독자 반응
4. 이런 전개를 선택할 확률 (0.0-1.0)
단순한 이별 이야기를 넘어서,
확률이 0.08 이하인 예상 밖의 해석도 포함해줘.
(예: SF적 요소, 비유적 해석, 실험적 서사 등)
* AI 생성 이미지 with Nano Banana Pro
이처럼 잘 사용하면 LLM이 가진 잠재력을 최대한 끌어올릴 수 있는 VS 기법이라도 몇 가지 주의할 사항이 있습니다.
-
확률의 정확성: 일부 모델은 확률 점수를 정확히 반영하기보다 환각(hallucination)을 생성할 가능성도 있습니다. 답변에 나오는 확률값은 참고용으로만 활용하고, 절대적인 수치로 이해해서는 곤란할 수 있습니다.
-
비용과 지연시간: 여러 응답을 생성하므로 단일 응답보다 토큰 사용량이 많고 응답 시간이 길어질 수 있습니다 (간혹 중간에 잘릴 수도). 특히 API로 사용하는 경우라면 비용과도 직결되므로 답변의 수나 확률 임계값을 효과적으로 조절해야 합니다.
-
자체 안전장치 가동: 일부 모델의 경우 VS가 포함된 복잡한 지시사항을 "탈옥(jailbreak) 시도"로 오해하고 거부할 수 있습니다. 이럴 때는 프롬프트를 조금 단순하거나 부드러운 표현으로 수정해보면 해결되기도 합니다. (단, 반복 시도가 지속적인 공격 행위로 간주될 위험도 존재)

