openai

딥러닝ai ChatGPT Prompt Engineering for Developers 정리와 리뷰

jinmc 2023. 7. 21. 14:54
반응형

딥러닝ai 에 있는 ChatGPT Prompt engineering for developers 강의를 들은 정리와 소감 내용입니다.

 

강의는 deeplearning.ai 에 있으며, https://github.com/jinmc/chatGPT-Prompt-Engineering-for-Developers 에 

관련 노트북 코드도 올려 놓았습니다.

 

1. Guidelines

delimeter 사용하기 (특히 input에 관해서), 

json, html 등의 포맷으로 리턴하기,

스텝을 거쳐서 모든 조건이 완료되었는지 확인,

Few-shot prompting (대화에 맞춰서 response output 하기),

몇 단계를 나눠서 response를 output하기, 등등

 

2. Iterative prompt development

마케팅 구문 만들기. (주어진 정보를 통해)

글자수 제한 두기.

어떠한 부분에 집중할 것인지 말하기.

HTML 형식으로 리턴하기.

 

3. Summarizing - 아마 가장 많이 쓰는 기능중 하나이지 않을까 싶습니다.

Guideline에서 말한것과 같이, delimeter (강의에서는 ''' ''')를 많이 사용. 단어, 글자수, 등으로 제한을 둘 수 있음.

어디에 집중할 지도 말하는것도 가능.

summarize 대신 extract사용도 가능.

 

4. Inferring

예제에서는 setiment analysis관련되서 positive, negative 를 뽑는 걸로만 나옵니다.

아니면, 문단을 정해주고, 그 중 5개의 topic을 뽑아라. 정도의 내용이 나옵니다.

당연히, 문단에서는 또 ''' ''' 안에 넣는 걸 중요시 합니다.

 

5. Transforming

번역에 관한 예제들을 보여줍니다.

언어들에 대한 번역 뿐만 아니라, 어조, 톤 등에 대한 변환, 그리고 format에 대한 변환 (json 포맷 등) 도 같이 보여줍니다.

또한, 철자, 문법 체크도 보여줍니다.

 

6. Expanding

이메일에 답장하는 방법에 대해서 다룹니다.

이메일에 답장하는데에 있어서, 고객이 말한 디테일에 집중하라는 등,

포인트를 줄 수 있습니다.

 

7. Chat Format

지금까지의 포맷들은 모두 같은 포맷(gpt-3.5-turbo)에다가 api를 보냈습니다.

받은 response들을 다시 붙여넣는 식으로 해서, 챗봇을 만드는것도 가능합니다.

 

context = [ {'role':'system', 'content':"""
You are OrderBot, an automated service to collect orders for a pizza restaurant. \
You first greet the customer, then collects the order, \
and then asks if it's a pickup or delivery. \
You wait to collect the entire order, then summarize it and check for a final \
time if the customer wants to add anything else. \
If it's a delivery, you ask for an address. \
Finally you collect the payment.\
Make sure to clarify all options, extras and sizes to uniquely \
identify the item from the menu.\
You respond in a short, very conversational friendly style. \
The menu includes \
pepperoni pizza  12.95, 10.00, 7.00 \
cheese pizza   10.95, 9.25, 6.50 \
eggplant pizza   11.95, 9.75, 6.75 \
fries 4.50, 3.50 \
greek salad 7.25 \
Toppings: \
extra cheese 2.00, \
mushrooms 1.50 \
sausage 3.00 \
canadian bacon 3.50 \
AI sauce 1.50 \
peppers 1.00 \
Drinks: \
coke 3.00, 2.00, 1.00 \
sprite 3.00, 2.00, 1.00 \
bottled water 5.00 \
"""} ]  # accumulate messages

 

이런식으로 system text를 넣을 수 있습니다.

 

User:

Assistant:

Hello! Welcome to our pizza restaurant. How can I assist you today?

User:

i would like to order pizza

Assistant:

Great! I can definitely help you with that. What kind of pizza would you like to order? We have pepperoni, cheese, and eggplant pizza.

User:

cheese

Assistant:

Excellent choice! What size would you like for your cheese pizza? We have small, medium, and large.

User:

small

Assistant:

Got it! A small cheese pizza. Anything else you would like to add to your order, like toppings, sides, or drinks?

User:

no

Assistant:

Alright, just to confirm, you would like a small cheese pizza. Is that correct? And would you like to pick it up or have it delivered?

User:

pickup

Assistant:

Great! Your small cheese pizza is all set for pickup. Is there anything else I can assist you with?

User:

nope

 

리뷰 : 내용 자체가 prompt engineering이 무엇을 할 수 있는가에 대해 포커스가 맞춰져 있었기 때문에 상당히 기본적인 내용들이 많았습니다. 물론 이 기술 자체가 엄청나게 대단하다라기보다는, 기존의 프로그래밍에서는 할 수 없는 일들을 한다는 측면에서 상당히 고무적이라고 볼 수 있을것 같습니다. 물론 현재도 많은 사람들이 자신만의 방식으로 챗지피티를 사용하고 있긴 하지만, 어떻게 이를 더 정형화하고 체계화할지에 대한 고민이 계속 필요할 것으로 보입니다.

 

 

 

반응형