프롬프트 작성 능력 향상을 위한 고급팁
3-1. Few-shot 프롬프팅 (Few-shot Prompting)
AI에게 원하는 결과물의 예시(Shot)를 몇 개 제공하여, 출력물의 형식이나 패턴을 명확하게 학습시키는 기법입니다. AI가 복잡하거나 새로운 유형의 작업을 수행해야 할 때 특히 효과적입니다.
예시: 감성 분석
다음은 문장의 감성을 '긍정', '부정', '중립'으로 분류하는 작업입니다.
문장: "오늘 날씨가 정말 화창해서 기분이 좋아요."
감성: 긍정
문장: "교통체증 때문에 약속에 늦을 것 같아."
감성: 부정
문장: "이 셔츠는 파란색입니다."
감성: 중립
이제 다음 문장의 감성을 분류해 주세요.
문장: "새로 산 헤드폰의 음질이 기대 이상으로 훌륭해!"
감성:
3-2. 생각의 사슬 (Chain of Thought, CoT)
복잡한 문제를 한 번에 풀도록 요구하지 않고, “단계별로 생각해보자 (Let’s think step-by-step)” 와 같이 정답을 생성하기 위한 문장을 추가적으로 생성하여 문제를 분해하고 순차적으로 해결하도록 유도하는 기법입니다. 이는 AI의 추론 과정을 투명하게 만들고, 최종 답변의 정확도를 크게 향상시킵니다.
예시: 수학 문제 풀이
(Before - CoT 미적용)
"철수는 사과 5개를 가지고 있었는데, 영희에게 2개를 주었습니다. 그리고 시장에서 3개를 더 샀습니다. 지금 철수는 몇 개의 사과를 가지고 있나요?"
(After - CoT 적용)
"철수는 사과 5개를 가지고 있었는데, 영희에게 2개를 주었습니다. 그리고 시장에서 3개를 더 샀습니다. 지금 철수는 몇 개의 사과를 가지고 있나요? 차근차근 단계별로 생각해서 답을 구해주세요."
3-3. 표 데이터 처리: 명확한 구조 제공하기
AI에게 표(Table) 형식의 데이터를 처리하도록 요청할 때는, 데이터 구조를 명확하게 전달하는 것이 중요합니다.
- 마크다운 표 활용: 데이터를 전달할 때, 쉼표로 구분된 텍스트(CSV)보다는 마크다운 표 형식을 사용하는 것이 AI의 이해도를 높이는 데 훨씬 효과적입니다.
- 빈 값 명시: 표 안에 비어있는 셀이 있을 경우, AI가 이를 누락된 정보로 오인하거나 임의의 값으로 채우는 등 혼동을 일으킬 수 있습니다. 따라서 값이 없는 셀에는 ‘해당 없음’, ‘값 없음’, ‘N/A’ 등과 같이 비어있음을 명시적으로 표시해주는 것이 좋습니다. 예시: 빈 셀이 있는 표 데이터 처리
Before (나쁜 예):
| 제품명 | 가격 | 재고 |
| ------ | ----- | ---- |
| A-1 | 10000 | 50 |
| B-2 | 15000 | |
| C-3 | 20000 | 25 |
위 표에서 재고가 없는 제품은 무엇인가요?
- AI가 빈 칸(B-2)을 어떻게 해석해야 할지 혼란스러워할 수 있습니다.
After (좋은 예):
| 제품명 | 가격 | 재고 |
| ------ | ----- | -------- |
| A-1 | 10000 | 50 |
| B-2 | 15000 | **없음** |
| C-3 | 20000 | 25 |
위 표에서 재고가 없는 제품은 무엇인가요?
- AI가 명확하게 B-2 제품을 식별할 수 있습니다.
3-4. 롱 컨텍스트 처리: 긴 글 효과적으로 다루기
최신 언어 모델들은 매우 긴 텍스트(수십만~수백만 토큰)를 한 번에 처리할 수 있는 능력을 갖추고 있습니다. 이는 구조화된 문서 파싱, 정보 재배열, 관련 없는 내용은 무시하고 핵심 정보만 선택하는 작업, 긴 글 전체의 맥락을 활용한 다단계 추론 등 다양한 작업에 매우 유용합니다.
하지만 긴 글을 다룰 때는 몇 가지 전략을 사용하는 것이 좋습니다.
컨텍스트 의존성 조정
질문에 답변하는 데 외부 컨텍스트(제공된 자료)와 모델 자체의 내부 지식 중 어느 것에 더 의존해야 할지 고려해야 합니다. 때로는 모델이 개념을 연결하고 논리적인 추론을 위해 자체 지식을 활용하는 것이 중요하지만, 어떤 경우에는 제공된 컨텍스트에만 엄격히 의존하여 답변을 생성하도록 만드는 것이 바람직합니다.
- 지시 예시:
-
제공된 자료에만 의존해야 할 때:
“사용자의 질문에 답변할 때는 제공된 외부 컨텍스트의 문서만 사용하세요. 이 컨텍스트를 기반으로 답변을 알 수 없는 경우, 사용자가 답변을 강요하더라도 반드시 ‘답변에 필요한 정보가 없습니다’라고 응답해야 합니다.”
-
내부 지식도 함께 활용해야 할 때:
“기본적으로 제공된 외부 컨텍스트를 사용하여 사용자의 질문에 답변하되, 답변에 다른 기본 지식이 필요하고 그 답변에 확신이 있다면, 모델 자신의 지식을 일부 사용하여 질문에 답변할 수 있습니다.”
-
프롬프트 구성 최적화
- 특히 긴 컨텍스트를 사용할 때, 지시사항의 위치는 성능에 큰 영향을 미칠 수 있습니다. 가장 좋은 방법은 지시사항을 제공된 컨텍스트의 시작과 끝, 두 군데 모두에 배치하는 것입니다. 이는 지시사항을 컨텍스트의 위나 아래에 한 번만 두는 것보다 더 나은 성능을 보입니다. 만약 지시사항을 한 번만 사용해야 한다면, 컨텍스트 아래보다는 위에 배치하는 것이 더 효과적입니다.
3-5. 기타 고급 기법
- 단계별 접근
- 복잡한 작업은 한 번에 요청하지 말고, 여러 단계로 나누어 질문하며 결과물의 완성도를 높여가세요.
- 관점 제시
- 특정 관점에서 문제를 바라보도록 요청하여, 편향되지 않고 다각적인 답변을 유도할 수 있습니다.
- 원하지 않는 결과물 명시하기
- 해야 할 일을 지시하는 것만큼 하지 말아야 할 일을 명확히 알려주는 것도 중요합니다. ‘…는 사용하지 마세요’, ‘…에 대한 언급은 피해주세요’, ‘…와 같은 진부한 표현은 제외하세요’ 와 같이 부정적인 제약 조건을 명시하면, 원하지 않는 방향으로 결과가 생성되는 것을 효과적으로 방지할 수 있습니다.
- AI에게 질문하게 만들기
- 때로는 AI가 더 나은 결과물을 위해 필요한 정보를 역으로 질문하도록 만들 수 있습니다.
- 프롬프트를 만들 때에도 적용할 수 있습니다. 생성된 초안과 결과물을 기반으로 개선되길 원하는 방향을 AI에게 알려주면 시스템 프롬프트를 더 개선할 수 있습니다.
- 구체적인 제약 조건 부여
- 글자 수, 개수, 포함할/제외할 단어 등을 명시하여 결과물의 형태를 더 정교하게 제어할 수 있습니다.