728x90
반응형

프롬프트(Prompt)란?

Gradient Flow의 Ben Lorica는 "프롬프트 엔지니어링은 기초 모델에서 원하는 결과를 도출하기 위해 효과적인 입력 프롬프트를 만드는 기술입니다." 라고 한다.

프롬프트 자체는 모델 출력에 대한 영향을 나타내는 모델에 대한 입력 역할을 한다. 좋은 프롬프트는 모델이 원하는 결과를 생성하도록 하는 반면, 잘못된 프롬프트에서 반복적으로 작업하면 모델의 한계와 작업 방법을 이해하는 데 도움이 된다.
 

출처:https://medium.com/@islizeqiang/openai-and-andrew-ngs-chatgpt-prompt-engineering-course-guidelines-and-summary-f2fef07b226f

 
 

Prompt Engineering Methods

Andrew Ng님이 강좌 내용의 일부이며 매우 효과적인 방법의 방법이라고 생각한다.
 

1. Guidelines (지침)

원칙 1: 명확하고 구체적인 지침 작성

전략 1: 구분 기호를 사용하여 입력의 고유한 부분을 명확하게 표시
아래와 같이 질문과 내용이 구분될 수 있도록 백틱 (```)으로 구분자를 설정하여 프롬프트를 완성시킬 수 있다.
 

백틱으로 구분된 텍스트를 한 문장으로 요약합니다.
```{text}```
```, """, < >, <tag> </tag>, :

 
전략 2: 구조화된 출력 요청
HTML, JSON 등 데이터 구조를 정의해서 요청할 수 있다.

저자 및 장르와 함께 3개의 구성 책 제목 목록을 생성합니다.
다음 키와 함께 JSON 형식으로 제공하십시오: book_id, 제목, 저자, 장르.
[
  {
    "book_id": 1,
    "제목": "1984",
    "저자": "조지 오웰",
    "장르": "소설"
  },
  {
    "book_id": 2,
    "제목": "노인과 바다",
    "저자": "어니스트 헤밍웨이",
    "장르": "소설"
  },
  {
    "book_id": 3,
    "제목": "언어의 온도",
    "저자": "이기주",
    "장르": "시집"
  }
]

 
전략 3: 모델에게 조건이 충족되었는지 확인하도록 요청
아래 프롬프트를 보면 "제공된 단계 없음"이라고 쓰라고 적혀있는데 이건 할루시네이션을 방지하기 위함이다.

할루시네이션이란?

GPT Chat과 같은 AI 언어 모델에서 '할루시네이션'은 주어진 데이터 또는 맥락에 근거하지 않은 잘못된 정보나 허위 정보를 생성하는 것을 뜻한다. AI 모델이 정확하지 않거나 사실이 아닌 것처럼 보이는 출력물을 생성할 때 이러한 문제가 발생할 수 있다. [네이버 지식백과] 할루시네이션 [Hallucination] (한경 경제용어사전)
삼중 따옴표로 구분된 텍스트가 제공됩니다. 일련의 지침이 포함된 경우 해당 지침을 다음 형식으로 다시 작성하십시오.

1 단계 - ...
2 단계 - …
…
N단계 - …

텍스트에 일련의 지침이 포함되어 있지 않으면 "제공된 단계 없음"이라고 쓰십시오.

"""{text}"""

 
전략 4: "Few-shot" 프롬프팅
예제와 함께 질문을 하는 방식이다.

당신의 임무는 일관된 스타일로 대답하는 것입니다.

<아이>: 인내심에 대해 가르쳐 주세요.
<조부모>: 가장 깊은 계곡을 파고드는 강은 겸손한 샘에서 흘러나옵니다. 가장 웅장한 교향곡은 하나의 음표에서 비롯됩니다. 가장 복잡한 태피스트리는 하나의 실에서 시작됩니다.
<아이>: 탄력성에 대해 가르쳐 주세요.

 

원칙 2: 모델에게 "생각"할 시간을 준다.

전략 1: 작업을 완료하는데 필요한 단계를 지정한다.
이렇게 질문하면 작업을 하는 단계를 보여준다.

다음 작업을 수행합니다.
1 - 세 개의 백틱으로 구분된 다음 텍스트를 한 문장으로 요약합니다.
2 - 요약을 영어로 번역합니다.
3 - 영어 요약에 각 이름을 나열합니다.
4 - french_summary, num_names 키가 포함된 json 개체를 출력합니다.

답을 줄 바꿈으로 구분하십시오.

```{text}```

 
 

2. Interative (반복)

반복적인 과정을 통해 결과를 도출해내는 방법이다. 예를 들어  명령이 충분히 명확하지 않았거나, 알고리즘에게  충분한 시간을 주지 않았다는 이유를   파악하는 반복적인 과정을 통해   아이디어를 정제하고, 프롬프트를 정제할 수 있다.

첫번째 프롬프트

귀하의 임무는 마케팅 팀이 기술 팩트 시트를 기반으로 제품의 소매 웹사이트에 대한 설명을 작성하도록 돕는 것입니다.
세 개의 백틱으로 구분된 기술 사양에 제공된 정보를 기반으로 제품 설명을 작성합니다.

기술 사양: ```{fact_sheet_chair}```

 

반복 1: 텍스트가 너무 길어서 재생성

"최대 50단어를 사용하십시오." 라는 문구를 추가해준다.

귀하의 임무는 마케팅 팀이 기술 팩트 시트를 기반으로 제품의 소매 웹사이트에 대한 설명을 작성하도록 돕는 것입니다.
세 개의 백틱으로 구분된 기술 사양에 제공된 정보를 기반으로 제품 설명을 작성합니다.

최대 50단어를 사용하십시오.

기술 사양: ```{fact_sheet_chair}```

 

반복 2. 잘못된 세부 사항에 초점을 맞춘 텍스트

어느 부분에 초점을 맞춰야 되는지 표현을 사용한다. "설명은 가구 소매상을 위한 것이므로 본질적으로 기술적이어야 하며 제품이 구성되는 재료에 중점을 두어야 합니다."  문구를 추가해준다.

귀하의 임무는 마케팅 팀이 기술 팩트 시트를 기반으로 제품의 소매 웹사이트에 대한 설명을 작성하도록 돕는 것입니다.
세 개의 백틱으로 구분된 기술 사양에 제공된 정보를 기반으로 제품 설명을 작성합니다.

설명은 가구 소매상을 위한 것이므로 본질적으로 기술적이어야 하며 제품이 구성되는 재료에 중점을 두어야 합니다.

최대 50단어를 사용하십시오.

기술 사양: ```{fact_sheet_chair}```

 

반복 3. 설명에 치수 표가 필요함

"설명 뒤에 다음을 제공하는 .... <div> 요소에 배치합니다." 처럼 문구를 추가해줄 수 있다.

귀하의 임무는 마케팅 팀이 기술 팩트 시트를 기반으로 제품의 소매 웹사이트에 대한 설명을 작성하도록 돕는 것입니다.
세 개의 백틱으로 구분된 기술 사양에 제공된 정보를 기반으로 제품 설명을 작성합니다.

설명은 가구 소매상을 위한 것이므로 본질적으로 기술적이어야 하며 제품이 구성되는 재료에 중점을 두어야 합니다.

최대 50단어를 사용하십시오.

설명 뒤에 다음을 제공하는 표를 포함합니다.
제품의 치수. 테이블에는 두 개의 열이 있어야 합니다.
첫 번째 열에는 차원의 이름이 포함됩니다.
두 번째 열에는 인치 단위의 측정값만 포함합니다.

테이블에 '제품 치수'라는 제목을 지정하십시오.

웹사이트에서 사용할 수 있는 모든 것을 HTML로 포맷합니다.
설명을 <div> 요소에 배치합니다.

기술 사양: ```{fact_sheet_chair}```

 

3. Summarizing (요약)

단어/문장/글자 제한으로 요약

귀하의 임무는 제품에 대한 짧은 요약을 생성하는 것입니다.
전자 상거래 사이트에서 검토합니다.

트리플로 구분하여 아래 리뷰를 요약하십시오.
백틱, 최대 30단어.

리뷰: ```{prod_review}```

운송 및 배송에 중점을 두고 요약

귀하의 임무는 전자 상거래 사이트에서 제품 리뷰에 대한 간략한 요약을 생성하여 배송 부서에 피드백을 제공하는 것입니다.

삼중 백틱으로 구분하여 최대 30단어로 아래 리뷰를 요약하고 제품 배송 및 배달을 언급하는 모든 측면에 중점을 둡니다.

리뷰: ```{prod_review}```

"요약" 대신 "추출"을 시도

귀하의 임무는 전자 상거래 사이트의 제품 리뷰에서 관련 정보를 추출하여 배송 부서에 피드백을 제공하는 것입니다.

아래 리뷰에서 삼중 따옴표로 구분하여 배송 및 배송과 관련된 정보를 추출합니다. 30단어로 제한합니다.

리뷰: ```{prod_review}```

 

4. Inferring (추론)

감정(긍정적/부정적)

다음 제품 리뷰의 감정은 무엇입니까,
트리플 백틱으로 구분되는 것은 무엇입니까?

"긍정적" 또는 "부정적" 중 한 단어로 대답하십시오.

리뷰 : '''{lamp_review}'''

감정 유형 식별

다음 리뷰 작성자가 표현하고 있는 감정의 목록을 확인하십시오. 목록에 5개 이하의 항목을 포함하십시오. 쉼표로 구분된 소문자 단어 목록으로 답변 형식을 지정합니다.

리뷰 : '''{lamp_review}'''

고객 리뷰에서 제품 및 회사 이름 추출

검토 텍스트에서 다음 항목을 식별합니다.
- 리뷰어가 구매한 아이템
- 아이템을 만든 회사

리뷰는 세 개의 백틱으로 구분됩니다. "항목" 및 "브랜드"를 키로 사용하여 응답을 JSON 개체로 형식화합니다. 정보가 없으면 "알 수 없음"을 값으로 사용하십시오. 가능한 한 짧게 응답하십시오.
  
리뷰 : '''{lamp_review}'''

추론 주제

세 개의 백틱으로 구분된 다음 텍스트에서 논의되고 있는 다섯 가지 주제를 결정합니다.

각 항목을 한두 단어 길이로 만드십시오.

쉼표로 구분된 항목 목록으로 응답 형식을 지정하십시오.

내용: '''{text}'''

 
 

5. Transforming (변형)

번역

다음 텍스트를 영어로 번역하십시오.
```{text}```

톤 변환

다음을 속어에서 비즈니스어로 번역하십시오.
'이봐, 나는 Joe야, 이 스탠딩 램프의 사양을 확인해봐.'

형식 변환

다음 Python 사전을 JSON에서 열 머리글 및 제목이 있는 HTML 테이블로 번역: {data_json}

문법 및 맞춤법 체크

다음 텍스트를 교정 및 수정하고 수정된 버전을 다시 작성합니다. 오류를 찾을 수 없으면 "오류를 찾을 수 없습니다"라고 말하세요. 텍스트 주위에 구두점을 사용하지 마십시오.

```{text}```

 

6. Expanding(확장)

고객 이메일에 대한 자동 회신 사용자 지정할 수 있다.

당신은 고객 서비스 AI 비서입니다.
당신의 임무는 소중한 고객에게 이메일 답장을 보내는 것입니다.
```로 구분된 고객 이메일을 고려하여 고객의 검토에 대한 감사의 답장을 생성합니다. 의견이 긍정적이거나 중립적이라면 검토해 주셔서 감사합니다.
감정이 부정적이면 사과하고 고객 서비스에 연락할 수 있다고 제안합니다.
리뷰의 특정 세부 정보를 사용하십시오.
간결하고 전문적인 어조로 작성하십시오.
'AI 고객 상담원'으로 이메일에 서명합니다.
고객 리뷰: ```{review}```
감정 검토: {sentiment}

 
아직 베타 버전이긴한데 Andrew Ng 강좌 코스를 볼 수 있을 것이다.
https://learn.deeplearning.ai/
 
 

각종 프롬프트 예제

아래 사이트들은 여러가지 예제들이 모아져있으며 참고해서 사용하기 좋다.
https://github.com/f/awesome-chatgpt-prompts

GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better.

This repo includes ChatGPT prompt curation to use ChatGPT better. - GitHub - f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better.

github.com

 

728x90
반응형

'AI 인공지능 > LLM' 카테고리의 다른 글

Code LLM 모델과 평가방식  (0) 2023.10.19
ChatGPT 탈옥 (DAN 모드) 아직도 가능한가?  (0) 2023.08.04
ChatGPT API를 사용해보자  (0) 2023.03.06
센세이션을 불고 온 ChatGPT  (0) 2023.02.20
DeepSpeed란 무엇인가?  (1) 2023.02.06