마음을 읽을 수는 없습니다
대규모 언어 모델은 강력하지만 안타깝게도 사람의 마음을 읽지는 못합니다.
무언가를 원한다면 모델이 우리가 무슨 생각을 하는지 추측하게 두지 말고, 가능한 한 분명하게 알려 줘야 합니다.
추측할 일이 적을수록 결과가 요구사항에 가까워질 가능성이 큽니다.
다음은 간단하지만 자주 쓰이는 여섯 가지 방법입니다.
1. 명확한 지시 작성하기
원하는 답을 얻으려면 정말 중요한 세부 정보와 맥락을 제공해야 합니다. 그렇지 않으면 모델은 추측할 수밖에 없습니다.
| 모호한 표현 | 더 명확한 표현 |
|---|---|
| Excel에서 숫자를 어떻게 더하나요? | Excel에서 한 행의 달러 금액을 모두 더한 뒤 결과를 오른쪽의 “합계” 열에 자동으로 넣으려면 어떻게 하나요? |
| 대통령은 누구인가요? | 2021년 미국 대통령은 누구였나요? 미국 대통령 선거는 보통 몇 년마다 열리나요? |
| 피보나치 수열을 만드는 메서드를 작성해 주세요. | Python으로 피보나치 수열을 계산하는 메서드를 작성하고, 각 부분의 역할을 주석으로 설명해 주세요. |
| 회의록을 작성하고 요약해 주세요. | 가상의 회의록을 작성하고, 발언자, 핵심 내용과 명시적으로 나온 할 일을 Markdown으로 나열해 주세요. |
Prompt는 길수록 좋은 것이 아닙니다. 결과에 영향을 주는 정보를 분명히 말했는지가 핵심입니다.
2. 스타일, 독자와 역할 지정하기
특정한 어조의 출력을 원한다면 직접 말할 수 있습니다.
스타일 지정하기
제가 글쓰기를 부탁할 때마다 답변의 각 문단에 농담이나 재치 있는 말을 적어도 하나씩 넣어 주세요.
동급생 장산에게 감사 편지를 써 주세요. 그의 소개 덕분에 일자리를 구한 것에 감사하는 내용입니다.
같은 감사 편지라도 엄숙한 공문처럼 쓸 때와 편안한 대화처럼 쓸 때 느낌이 완전히 다릅니다. 모델이 추측하게 두기보다 원하는 스타일을 직접 적는 편이 낫습니다.
물론 “문단마다 농담 하나”는 차이를 분명히 보여 주기 위한 예시입니다. 실제로는 “진솔하고 자연스럽게 쓰되 과장된 칭찬은 피하세요”라고 쓸 수도 있습니다.
역할 지정하기
작업에 명확한 관점이 필요하다면 역할을 지정할 수도 있습니다.
당신은 대학 중국문학 교수입니다. 문학 수업에서 작품을 설명하는 관점으로 답하세요.
이백이 “하늘이 나를 낳았으니 반드시 쓸모가 있고, 천금을 다 써도 다시 돌아오리라”라고 쓸 때의 감정 변화와 생각을 설명하세요.
역할과 독자를 함께 지정하기
같은 지식을 열 살 아이도 이해하게 하고 싶다면 어떻게 해야 할까요?
당신은 노벨 물리학상을 받은 천체물리학자입니다. 천체물리학을 대중에게 설명하는 관점으로 답하세요.
열 살 아이를 위한 답변이므로 이해하기 쉽고 상상력이 풍부하게 써 주세요.
블랙홀이 생기는 원리와 블랙홀의 특징을 설명하세요.
이렇게 하면 관점, 대상 독자와 표현 방식이 함께 분명해집니다. “블랙홀을 설명해 줘”라고만 쓸 때보다 세 가지 정보가 더 들어갑니다.
역할 설명은 모델이 관점, 독자와 기준을 이해하도록 돕습니다. 모델이 실제로 어떤 직함을 얻는 것도 아니고, 답이 반드시 전문적임을 증명하지도 않습니다.
“당신은 세계 최고의 전문가입니다”라고 말하기보다 실제로 필요한 판단 기준을 적으세요.
3. 구분자로 서로 다른 내용 나누기
Prompt에 작업 지시, 원문 자료와 출력 형식이 함께 들어갈 때는 삼중 따옴표, Markdown 제목 또는 XML 태그를 사용해 나눌 수 있습니다.
삼중 따옴표 안의 글을 짧은 시 한 편으로 요약해 주세요.
"""
광활한 바다 위에서 거센 바람이 먹구름을 몰아 모았다. 바다제비는 검은 번개처럼 당당히 날아올랐다.
"""
다음처럼 쓸 수도 있습니다.
<task>황학루와 관련된 두 시를 비교하고 이유를 설명하세요.</task>
<article>옛사람은 이미 황학을 타고 떠났고, 이곳에는 황학루만 남았네……</article>
<article>벗은 서쪽 황학루에서 작별하고, 꽃 안개 낀 삼월 양주로 내려가네……</article>
필드 이름으로 요약과 제목을 나눌 수도 있습니다.
기사의 요약과 제목을 제공하겠습니다.
제목이 요약을 정확히 나타내고 독자가 글의 주제를 이해하도록 돕는지 판단하세요.
두 기준 중 하나라도 충족하지 않으면 대체 제목 다섯 개를 제시하세요.
요약: 장기간 이어지는 강한 비가 여러 북부 지역에 영향을 주고 있습니다. 비가 오래 지속되고 영향 범위도 넓으며, 일부 지역에는 매우 많은 비가 내릴 수 있습니다.
제목: 북부 여러 지역에 강한 비, 일부 지역은 집중호우 주의
여기서 “요약:”과 “제목:”도 구분자입니다. 특별한 기호는 없지만 어느 부분이 요약이고 어느 부분이 제목인지 분명히 알려 줍니다.
간단한 작업에서는 구분자를 쓰기 전후의 차이가 뚜렷하지 않을 수 있습니다. 작업이 복잡하고 자료가 길수록 명확한 경계가 중요해집니다.
구분자가 모델을 갑자기 똑똑하게 만드는 것은 아닙니다. “무엇이 지시이고, 무엇이 자료이며, 무엇이 형식인지”를 명확히 표시하도록 도울 뿐입니다.
4. 작업 수행 단계 지정하기
많은 작업은 원래 여러 단계로 나누어야 합니다. 단계를 적어 주면 모델이 우리의 사고 흐름을 따라가기 더 쉽습니다.
다음 순서대로 작업을 완료하세요.
1. 삼중 따옴표 안의 글을 한 문장으로 요약하고 앞에 “요약:”을 붙입니다.
2. 이 요약문을 영어로 번역하고 앞에 “번역:”을 붙입니다.
"""
{{처리할 텍스트}}
"""
단계도 많을수록 좋은 것은 아닙니다. 결과에 실제로 영향을 주는 단계부터 적고, 전문적으로 보이기 위해 간단한 작업을 수십 단계로 나누지는 마세요.
5. 예시 제시하기
때로는 원하는 스타일이나 형식을 규칙 한 문장으로 설명하기 어렵습니다.
이때는 예시를 직접 제시할 수 있습니다.
당신은 “마법 동물 이름 생성기”입니다. 예시의 스타일에 따라 동물의 이름을 지어 주세요.
동물: 고양이
이름: 밤의 특수요원
동물: 개
이름: 초능력 번개
이제 “말”의 이름을 지어 주세요.
고품질 예시 한 개에서 세 개면 대개 모델이 우리가 원하는 대응 관계를 이해할 수 있습니다.
그러나 모델은 예시의 문제점도 따라 하므로, 예시는 가장 이상적인 경우만 고르지 말고 실제 작업에서 마주칠 경계 사례도 포함해야 합니다.
6. 출력 길이 지정하기
대략적인 글자 수, 문장 수, 문단 수 또는 요점 수로 출력을 제한할 수 있습니다.
하지만 모델이 이 요구들을 따르는 방식은 모두 같지 않습니다.
같은 원문으로 세 번 연속 시험해 봅시다. 비교하기 쉽도록 아래 세 Prompt의 원문은 완전히 같습니다.
첫 번째: 약 50자
삼중 따옴표 안의 내용을 약 50자로 요약하세요.
"""
광활한 바다 위에서 거센 바람이 먹구름을 몰아 모았다. 먹구름과 바다 사이로 바다제비는 검은 번개처럼 당당하게 날아올랐다.
날개가 파도에 닿았다가, 화살처럼 먹구름을 향해 치솟는다. 바다제비의 울음에는 폭풍을 향한 갈망이 가득하다.
"""
“약 50자”는 명확해 보이지만 모델은 Token을 생성하며, 글자를 하나 쓸 때마다 문자 수를 동시에 세는 방식은 아닙니다. 결과가 50자에 가까울 수도 있고 눈에 띄게 넘을 수도 있습니다.
두 번째: 두 문단
삼중 따옴표 안의 내용을 두 문단으로 요약하세요.
"""
광활한 바다 위에서 거센 바람이 먹구름을 몰아 모았다. 먹구름과 바다 사이로 바다제비는 검은 번개처럼 당당하게 날아올랐다.
날개가 파도에 닿았다가, 화살처럼 먹구름을 향해 치솟는다. 바다제비의 울음에는 폭풍을 향한 갈망이 가득하다.
"""
이번에는 결과가 두 문단인지 한눈에 볼 수 있습니다. 정확한 글자 수보다 문단 수가 보통 더 확인하기 쉽습니다.
세 번째: 세 가지 요점
삼중 따옴표 안의 내용을 세 가지 요점으로 요약하세요.
"""
광활한 바다 위에서 거센 바람이 먹구름을 몰아 모았다. 먹구름과 바다 사이로 바다제비는 검은 번개처럼 당당하게 날아올랐다.
날개가 파도에 닿았다가, 화살처럼 먹구름을 향해 치솟는다. 바다제비의 울음에는 폭풍을 향한 갈망이 가득하다.
"""
요점 수도 직관적입니다. 결과가 세 항목인지 바로 확인할 수 있습니다.
세 번 모두 같은 글을 처리했고 길이를 표현하는 방식만 바꿨습니다. “약 50자”는 문자 범위를, “두 문단”과 “세 가지 요점”은 구조를 조절하므로 같은 요구가 아닙니다.
문단 수와 요점 수는 일반적으로 더 관찰하기 쉽지만, 그렇다고 검사를 생략하면 안 됩니다. 업무상 글자 수, 문단 수 또는 요점 수를 엄격히 지켜야 한다면 모델이 생성한 뒤 프로그램이나 편집 절차로 다시 검증해야 합니다.
마지막으로 다시 살펴보기
이 여섯 가지 방법을 모든 Prompt에 반드시 전부 사용할 필요는 없습니다.
간단한 작업은 직접 명확하게 말하면 충분합니다. 복잡한 작업에는 맥락, 구분자, 단계와 예시를 차례로 추가하세요.
진짜 목표는 Prompt를 아주 길게 쓰는 것이 아니라 모델의 추측을 줄이고 우리가 결과를 더 쉽게 확인하도록 만드는 것입니다.
이전 장: 확률, 샘플링과 Temperature
다음 장: 구조화 Prompt 템플릿과 활용법