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