프롬프트 엔지니어링

프롬프트 엔지니어링

목차

프롬프트 엔지니어링이란?

좋은 프롬프트를 설계하는 것

  • 프롬프트 : 인공지능에게 전달하는 질문이나 지시

언어 모델은 앞서 제공되는 맥락으로부터 결과를 도출하려고 함(인컨텍스트 러닝)

프롬프트 엔지니어링 기본 원칙

1. 구체적 지시

-> 프랑스 스타일로 나무에 대한 시 X
-> 형식의 완전성을 추구하는 프랑스 스타일로 '숲 속 깊숙한 곳에 있는 나무'에 대한 시를 5줄로 써줄래? O

2. 명확한 단어

-> 배가 우리에게 끼치는 영향에 대해 알려줘 X
-> 배(Ship)가 인류 문명사에 끼친 영향에 대해 알려주세요. O

3. 맥락 제공

-> 콩쥐팥쥐를 소재로 한 노래 가사를 써줘 X
-> 콩쥐팥쥐는 한국의 대표적인 전래동화 중 하나이자 동양의 신데렐라형 스토리야. 주인공 콩쥐는 계모와 ~ 얘기를 담고 있지. 이 콩쥐 팥쥐에 대한 내용을 바탕으로 노래 가사를 써줄 수 있어? O

4. 구조 형식화

-> 가상의 게임 캐릭터 설정을 하나 만들어주세요. X
-> 가상의 게임 캐릭터에 대한 정보를 다음 형식에 따라 만들어 주세요.
- 이름 : [캐릭터의 이름]
- 외모 : [캐릭터의 외모를 한 줄로 묘사]
- 성격 : [캐릭터의 성격을 한 줄로 묘사]

5. 일관성 유지

작성한 프롬프를 여러 번, 그리고 다양한 조건을 시도하면서 계속 일관된 형식이 유지되는지 테스트 해야함.

멀티 턴 vs 싱글 턴

멀티 턴(Multi Turn)

  • 여러 번의 프롬프트와 답변을 주고 받으며 결과물을 얻는 방식
  • 기억력의 한계 발생
  • 내용의 일관성 유지 어려움

싱글 턴(Single Turn)

  • 한 번의 프롬프트 입력만으로 목표한 결과물을 바로 받아내는 것
  • 재활용하기 쉬움
  • 토큰의 소비 줄일 수 있음

구분멀티 턴싱글 턴

프롬프트의 수 1 2개 이상
장점 재활용이 쉬움 상세한 수정이 가능
단점 수준 높은 프롬프트 제작의 어려움 일관성 유지와 복제의 어려움

프롬프트 엔지니어링 기법

1. Few Shot

  • AI 모델에 제시하는 K(Few)개의 예제(Shot)
  • 복잡한 추론의 작업을 다룰 경우 의미 없음
  • Zero Shot
    Prompt | 서승완에 대한 삼행시를 지어줘.
  • 예시가 없음
  • One Shot
    Prompt |
    날짜 : 2023년 2월 4일
    운세 : 오늘은 높은 사람에게 잘 보이려 하고 자신보다 낮은 사람에게 ~ 노력해야 합니다.
    
    날짜 : 2023년 2월 7일
    
  • 예시가 1개
  • Few Shot
    Prompt |
    이름 : 채시은
    삼행시 : 
    채 - 채시은 선생님은
    시 - 시원한 웃음이 매력
    은 - 은은한 매력이 돋보인다.
    
    이름 : 류동윤
    {.. 생략 ..}
    
    이름 : 서승완
    
  • 예시가 2개 이상

2. 역할 지정 기법

  • AI 모델에 특정 역할을 지정하는 기법
Prompt |
당신은 지금부터 [ ]의 역할을 해야 하고, 모든 대답을 마치 [ ]가 하는 것처럼 해야한다. 당신의 이름은 [ ]이다. 나는 [ ]에게 '[ ]'라는 질문을 할 것이다.

3. 마크다운 활용 기법

  • 챗GPT가 서식을 출력하는 방법인 마크다운(Markdown)을 역으로 이용해 결과물을 제어하는 기법
Prompt |
고양이 꾸미에 대한 정보를 바탕으로 꾸미에 대한 동시를 지어주세요. 예시와 비슷하게 작성해 주세요.

# 꾸미에 대한 정보 "(또는 ---(구분선)으로 단락 분할 가능)"
이름 : 꾸미
{.. 생략 ..}

# 예시
우리집 강아지는 착한 강아지
말도 참 잘 들어요
**멍멍** 소리도 우렁차요

4. 후카츠 프롬프트 기법

  • 명령문과 제약 조건을 분명히 제시함 -> 템플릿화
    1. 챗GPT의 역할을 명확히 한다.
    2. 입력문에서 출력문을 만들 것임을 명확히 한다.
    3. 무엇을 출력할 것인지 명확히 한다.
    4. 마크업 언어를 이용하여 본문이 아닌 부분을 명확히 한다.
    5. 명령을 조목조목 명확하게 한다.
    6. 조건을 추가하여 챗GPT로부터의 출력을 제어한다.
Prompt |
# 명령문
당신은 ( )입니다.
이하의 제약조건과 입력문을 토대로 최고의 ( )을 출력해주세요.

# 제약조건
- ( )
- ( )

# 입력문
( )

# 출력문

5. 형식 지정 기법

  • 후카츠 프롬프트의 확장판
  • 출력물에 대한 형식을 구체적으로 지정해줌
  • #명령문, #제약조건, #입력문, #출력형식
Prompt |
#명령문
당신은 ( )입니다. 아래의 제약조건을 참고하여 입력문을 출력형식에 맞게 출력해 주세요.

#제약조건
- ( )
- ( )

#입력문
- ( ) : ( )

#출력형식
( )

6. 슌스케 템플릿 기법

  • 후카츠 프롬프트와 유사
  • 변수의 형태로 명시
  • 작업의 순서를 단계적으로 구분
Prompt |
#콘텐츠의 상세
이 콘텐츠는 블로그 글입니다.

#변수
[독자] = 30대 남성
[키워드] = 애플워치
[흥미] = 애플워치 깨끗하게 쓰는 법

#커맨드
[C1] = [키워드]에 대한 [독자]의 [흥미]를 반영하여 [독자]를 대상으로 한 블로그의 아웃라인을 작성해 주세요.
[C2] = 아웃라인을 따라 블로그 글을 최종 작성해 주세요.

#실행
$ run [C1][C2]
  • Goal Seek(자동 프롬프트 기법)
    • 슌스케 프롬프트에 맞게 구조화시키는 프롬프트 기법

7. Q&A 기법

  • GPT-3 이전 모델에서 질문과 답변의 형태로 Few Shot을 구성하던 방법론
Prompt |
Q : 안녕 반가워!
A : 저는 반갑지 않아요.
Q : 뭐라고?
A:

8. 이어쓰기 기법

  • 문장의 일부분을 제시하고 다음 문장을 GPT가 생성해 내도록 유도하는 방법
  • 다양한 유도법이 있음
    • '다음 문장을 이어 써주세요'
      Prompt |
      다음 문장을 이어 써주세요.
      학교 종은 저녁에만 쳐야 합니다. 왜냐하면
      
    • #이어쓰기
      #이어쓰기
      학교 종은 저녁에만 쳐야합니다. 왜냐하면
      
    • Few Shot을 이용
      첫 번째 문장 : 나는 대구에서 사업을 하고 있는
      두 번째 문장 : 사람인데, 서울에 자주 온다.
      
      첫 번째 문장 : 학교 종은 저녁에만 쳐야 합니다. 왜냐하면
      두 번째 문장 :
      
    • 역할 지정과 빈칸 이용
      당신은 빈칸에 오는 문장을 맞추는 퀴즈 사냥꾼이다. 주어진 문장에서 빈칸에 들어갈 문장을 맞춰보길 바란다. 정답 외 다른 것은 말하지 않는다.
      학교 종은 저녁에만 쳐야 합니다. 왜냐하면 (빈칸)
      
    • 따옴표로 빈칸 만들기
      학교 종은 저녁에만 쳐야 합니다. 왜냐하면 "    "
      
    • 한 개의 따옴표 사용(Q&A 기법 병행)
      Q : 학교 종소리 알아?
      A : 네, 알고 있습니다.
      Q : 혹시 학교 종을 아침에 치는 것에 대해 어떻게 생각해?
      A : 제 생각에는 학교 종은 저녁에만 쳐야 하는 것 같습니다. 왜냐하면 "
      

9. Chain of Thought(사고의 연쇄) 기법

  • 상세한 도출 과정을 먼저 제시함으로써, 원래의 질문을 더 정교하게 다듬고, 더 정확하고 포괄적인 답변을 유도하는 기법
Prompt |
17,10,19,4,8,12,24에서 홀수를 다 더하면 짝수가 됩니다 = 참 X
17,10,19,4,8,12,24에서 홀수를 다 더하면 짝수가 됩니다 : 17+19=36이므로 짝수입니다. O
  • Let's think step by step(한 단계씩 생각해 보자) 를 사용하면 더 효과적

10. 멀티 페르소나 기법

  • 가상의 등장인물들이 서로 토론하며 상호 작용하도록 유도함으로써, 단순한 질문과 답변만으로는 얻기 힘든, 깊이 있는 결과물을 얻어내는 기법
여기 한 크리스천과 무신론자 과학자가 있습니다. '신은 존재하는가?'를 주제로 하여 토론을 진행합니다. 어떤 토론이 진행될까요?
그리고 그 토론 내용을 기반으로 쟁점, 유신론자 입장, 무신론자 입장을 정리한 표로 나타내어 주세요.

11. 할루시네이션 유도 기법

  • 할루시네이션 현상을 역으로 활용하는 기법
  • 가상의 인물이나, 책, 작품 등을 제시하고, 그 내용을 상상하도록 주문하는 것
Prompt |
상상력을 발휘해서 아래 요청을 수행하세요.
프랑스의 유명 시인 앙투앙 미들레는 프랑스 문학의 정수를 보여줍니다. 순수성과 정교성이 드러나는 수백 편의 시와 소설을 남긴 앙투앙 미들레는 2020년에 작고하였지만, 여전히 프랑스 국민들의 가슴 속에 살아 숨 쉬고 있습니다. 그의 대표작 중 하나는 짧은 시 '빨간 머플러'입니다. 이 '빨간 머플러'의 개요를 알려주고, 시 내용을 한국어로 번역해 주세요.

12. ReAct(리액트) 기법

  • Reasoning + Acting
  • 인간이 추론할 때 자신의 지식뿐만 아니라 외부의 정보를 참고하여 사고하는 것과 유사한 방식
  • AI 모델에 추론과 실행을 유도하는 기법
  1. 결과물을 출력하는 데 필요한 행동(Act)과 이유(Reason)를 추론
  2. 외부 리소스의 도움을 받아 행동을 수행하고, 그 결과를 받음
  3. 그 행동에 대한 결과로부터 다음에 수행해야 하는 행동과 이유를 추론
  4. 최종 답변이 생성될 때까지 이 과정을 반복
  • 인간과 유사하게 지식 편향이 일어날 수 있음

아래 프롬프트는 ChatGPT Plugins 중 Web Pilot을 사용해야 합니다.

Prompt |
가능한 한 다음 질문에 답하십시오. 당신은 검색에 액세스할 수 있습니다.

다음 형식을 사용합니다.
Question : 답변해야 하는 입력 질문
Thought : 당신은 무엇을 해야 할지 항상 생각해야 합니다.
Action : 구체적으로 검색합니다.
Action Input : 검색 키워드를 알려주세요.
Observation : Action을 수행한 결과를 요약하세요.
Thought : 나는 이제 최종 답을 알고 있습니다.
Final Answer : 원래 입력 질문에 대한 최종 답변

시작!
Question : 한국에서 유명한 대학 마인크래프트 서버가 있다던데, 그 서버에 대한 소개를 보고서 형태로 작성해 줘. Web Pilot을 이용하세요.

자연스러운 한국어 문장 만들기

  1. 음슴체 만들기
전교 1등 학생을 칭찬하는 글을 작성해줘. 모든 문장은 '음', '함', '임'으로 끝나야 해.

#이어쓰기
이제부터 전교 1등 학생을 칭찬하는 글을 작성하겠음. 지금부터 작성하는 글은 선생님이 전교 1등 학생을 칭찬하는 것임. 이처럼 자연스럽게 문장이 끝나도록 해야 함. 이 학생은
  1. MZ세대 인터넷 말투 만들기
너는 지금부터 한국의 20대 여성이다. 모든 대답을 한국의 20대 여성이 하는 것처럼 해야 한다. 자, 그렇다면 얼그레이 매실티가 맛있다는 문장을 한국의 20대 여성이 쓰는 온라인 문체로 적어달라.

#필수표현
1. ㅋㅋㅋㅋㅋㅋㅋㅋ
2. 진짜 존맛탱
3. 대박
4. 미쳤음
5. ㄹㅇ
6. 폼 미쳤다

#제약 조건
1. 반말로 하세요.
2. 주어는 '나'로 씁니다.
3. 무조건 문장은 '음','함','임'으로 끝냅니다.
-> 예시 : 아니 진짜 맛있음 ㅋㅋ

#이어쓰기
아니 ㅋㅋㅋㅋㅋ 내가 진짜 대박인거 얘기해주겠음 ㅋㅋㅋ

할루시네이션 줄이기

  • 마크다운 활용 기법 + Chain of Thought(사고의 연쇄) + 형식 지정 기법
도출 과정에 따라 답하세요.

#정보
영남대학교(嶺南大學校, Yeungnam University)는 대한민국 경상북도 경산시와 대구광역시 남구에 있는 사립 종합대학이다. 대구대학과 청구대학이 1967년 12월에 통합되어 출범했다. 상징은 천마(天馬)이며, 교육목표는 창학정신에 제시된 교육이념을 바탕으로 하는 ‘민족의 대학’, ‘세계 속의 대학’으로서의 사명을 다하는 데 두고 있다. 약칭으로 ‘영대’라고 부르거나, 영문약칭으로 ‘YU’라 부르기도 한다.

#입력문
영남대학교 공과대학에는 어떤게 들어있어?

#도출 과정
1. 질문에 대한 내용이 주어진 정보에 있는지 확인한다.
2. 정보 안에 내용이 있으면 참고해서 답한다.
3. 정보 안에 내용이 없으면 '모른다'고 답하거나, 출력하지 않는다.

#출력형식
[주어진 정보에 한해서만 출력하고, 없을 경우 출력하지 않는다.]
  • 맥락(정보)를 제공하는 과정 자체를 자동화 -> 검색 증강 생성(Retrieval-Augmented Generation, RAG)를 사용

참고 문헌

- 서승완. 2023. 프롬프트 엔지니어링 교과서. 애드앤미디어