david's daily developer note

[GPT PROMPT] 2. 프롬프트 디자인 (Prompt Design) 본문

[Develop] Web

[GPT PROMPT] 2. 프롬프트 디자인 (Prompt Design)

mouse-david 2024. 10. 8. 22:55
728x90

본 글에서는 GPT 프롬프트의 핵심 구조를 기록한다.

프롬프트 구조

PlayGround의 System에는 사용자 의도에 맞는 답변을 얻기 위한 기본 정보를 입력 구조가 존재하고, 지시 (Instruction), 맥락 (Context), 출력 데이터 형식 (Output Indicator)으로 구분된다.

지시 (Instruction)

GPT 모델에게 역할(Role)과 수행할 작업을 부여한다.

"너는 빵집 점원이야. 손님이 오면 주어진 메뉴에 대한 주문을 받고, 지불 금액을 계산해서 알려줘야 해."

맥락 (Context)

GPT 모델에게 답변에 필요한 정보를 추가한다.

출력 데이터 형식 (Output Indicator)

GPT 모델에게 답변 형식을 알려준다.

메뉴
1. 단팥빵 (2000원)
2. 크림빵 (2500원)
3. 소세지빵 (3500원)

손님이 오면 "안녕하세요. 무엇을 주문하시겠어요?" 라고 대답
손님이 주문하면 "주문하신 메뉴는 ~~입니다. 총 금액은 ~~입니다." 라고 대답
손님은 한 개 이상의 메뉴를 주문할 수 있어

손님이 주문한 메뉴가 있는지 반드시 확인하고 주문한 메뉴가 없다면 
"~~가 메뉴에 없는데, 다른 메뉴로 도와드릴까요?" 라고 대답

준비 됐으면 처음 손님이 왔다고 가정하고 대답해

프롬프트 디자인의 세분화

상기 세분화 예시 이미지에서 PlayGround System에 입력되는 것은 마지막 예시(Example) 를 제외한 전부이다.
상기 세분화된 내용을 System에 명시적으로 구분하면 작성하면 GPT 모델에게 더욱 정확한 지시가 가능하고, 이후에 일관적인 답변을 기대할 때, 실수나 혼란을 줄일 수 있다.

 

**역할(Role)**: 
너는 빵집 점원이야.

**대상(Audience)**: 
너는 식사를 마치고 부식으로 빵을 사러온 손님을 대상으로 주문을 받을거야

**지식/정보(Knowledge/Information)**: 
메뉴 
단팥빵(2000원), 크림빵(1500원)... 
우리 빵집의 추천 메뉴는 단팥빵이야

**정책/규칙/스타일/제약사항(Policies/Rules/Styles/Constraints)**:
- 친절한 어조를 유지해
...

**형식/구조(Format/Structure)**: 
주문한 메뉴와 가격은 테이블 형식으로 보여줘
최종 지불 가격을 "총 지불 가격은 ~~입니다" 형식으로 안내해

**예시(Examples)**: 
....

 내용을 명시적으로 구분하기 좋은 형식

단계적 작업 지시에 효과성을 위하여 숫자로 구분하는 방법

1. 친절하게 인사해
2. 주문을 요청해
3. 메뉴에 있는 주문인지 확인해
4. 없다면 메뉴를 소개해줘

계층 관계를 명시하기 위하여 마크다운 헤더를 활용하는 방법

#1. 친절하게 인사해
#2. 주문을 요청해
	## 메뉴를 고민하면 추천 메뉴를 소개해줘
#3. 메뉴에 있는 주문인지 확인해
#4. 메뉴에 없는 주문이면 없다면 추천 메뉴를 소개해줘

 

다음 글에서는 LLM 파라메터에 대해서 학습하고 기록한다.

728x90

'[Develop] Web' 카테고리의 다른 글

[GPT PROMPT] 1. 개론 (학습 환경 + LLM 기본 작동 원리)  (5) 2024.10.08
[WEB] REST API  (0) 2018.05.16