개발자를 위한 ChatGPT 프롬프트 엔지니어링
서론
- 앤드류 응 교수님과 OpenAI의 Cookbook 공식 가이드를 만드신 직원분이 1시간 정도 되는 짧은 강의랑 무료로 출시해서 바로 시청하게 되었다.
- 이번 포스팅은 해당 강의를 보고 간략하게 남겨본다.
ChatGPT Prompt Engineering for Developers
What you’ll learn in this course In ChatGPT Prompt Engineering for Developers, you will learn how to use a large language model (LLM) to quickly build new and powerful applications. Using the OpenAI API, you’ll...
www.deeplearning.ai
실습 환경
- 은 걱정 안 해도 된다. 아래처럼 주피터를 제공하고 오른쪽엔 강의를 제공해 준다.
요약을 위한 프롬프트 엔지니어링
핵심은 프롬프트를 매우 구체적으로 적는 것이다.
강의에 나온 예시는
prompt = f"""
Your task is to generate a short summary of a product \
review from an ecommerce site to give feedback to the \
Shipping deparmtment.
Summarize the review below, delimited by triple
backticks, in at most 30 words, and focusing on any aspects \
that mention shipping and delivery of the product.
Review: ```{prod_review}```
"""
response = get_completion(prompt)
print(response)
프롬프트를 번역하면
"전자 상거래 사이트에서 제품 리뷰에 대해 요약해서 배송 부서에 피드백을 주는 것이 너의 Task이고
배송 및 배달에 관한 언급에 중점을 두고 요약해라"
Triple backtics는 ''' '''를 의미함, 제공할 리뷰는 triple backticks안에 즉, ```{prod_review}```처럼 제공된다는 뜻
실습
트위터 구독 수수료에 관한 뉴스가 있다
Twitter to take 10% cut on content subscriptions after 12 months By Reuters
Twitter to take 10% cut on content subscriptions after 12 months
www.investing.com
프롬프트 1
프롬프트:
"아래뉴스를 요약해줘"
트위터 CEO 일론 머스크는 금요일에 소셜 미디어 플랫폼이 수익원 다변화 노력의 일환으로
첫 해 이후 콘텐츠 구독을 10% 줄일 것이라고 발표했습니다.
사용자들은 트위터가 처음 12개월 동안 찍은 컷 없이 긴 형식의 텍스트와 몇 시간 분량의 비디오를
포함한 콘텐츠에 대한 팔로워 구독을 제공할 수 있습니다.
iOS 및 Android 플랫폼의 구독료에서 회사가 삭감한 금액은 첫 해의 30%에서 두 번째 해에는 15%로 떨어질 것입니다.
이러한 변화는 지난해 광고 수입이 감소한 후 수익을 올리기 위한 것입니다.
프롬프트 2
프롬프트 :
"뉴스를 요약하고 초등학생도 너의 요약본을 보고 쉽게 이해 할 수 있게하는 것이 너의 역할이다
30단어 이내로 요약해라"
트위터 CEO 일론 머스크는 수익원 다변화 노력의 일환으로 첫 해 이후 콘텐츠 구독을 10% 줄일 것이라고 발표했습니다.
사용자는 긴 형식의 텍스트 및 비디오를 포함하여 자신의 콘텐츠에 대한 구독을 제공할 수 있습니다.
머스크는 이전에 회사가 첫 12개월 동안 삭감하지 않을 것이라고 말했습니다.
iOS 및 Android 플랫폼의 구독료 인하율은 첫 해의 30%에서 두 번째 해에는 15%로 떨어질 것입니다.
추론을 위한 프롬프트 엔지니어링
강의 예시에서는 감정 추론에 대한 예시를 보여줬다
구체적으로 제시하고 제공받을 포맷도 정해준다.
사용자가 쇼핑몰 리뷰 분석 담당가라면 아래처럼 요구할 수도 있다
prompt = f"""
Identify the following items from the review text:
- Sentiment (positive or negative)
- Is the reviewer expressing anger? (true or false)
- Item purchased by reviewer
- Company that made the item
The review is delimited with triple backticks. \
Format your response as a JSON object with \
"Sentiment", "Anger", "Item" and "Brand" as the keys.
If the information isn't present, use "unknown" \
as the value.
Make your response as short as possible.
Format the Anger value as a boolean.
Review text: '''{lamp_review}'''
"""
response = get_completion(prompt)
print(response)
프롬프트를 해석하면, 먼저 식별할 항목을 정해준다
- 긍정적인가 부정적인가
- 분노하고 있는가(예/아니로로 대답)
- 분노하고 있는 상품정보
- 상품 만든 회사
- 그리고 리턴 값도 JSON형태, 사용될 키값, 최대한 간략하게라는 구체적인 옵션을 추가한다.
실습
- 아래 최악의 호텔이라는 제목의 리뷰를 사용해서 실습을 진행했다.
- 제목부터 화가 가득 찬 리뷰였다.
프롬프트 1
예시 프롬프트를 살짝 수정했다.
Identify the following items from the review text:
- Sentiment (positive or negative)
- Is the reviewer expressing anger? (true or false)
- Item purchased by reviewer
- company that provided the service
The review is delimited with triple backticks. \
Format your response as a JSON object with \
"Sentiment", "Anger", "service" and "Brand" as the keys.
If the information isn't present, use "unknown" \
as the value.
Make your response as short as possible.
Format the Anger value as a boolean.
결과
{
"Sentiment": "negative",
"Anger": true,
"service": "hotel",
"Brand": "Hotel Keihan Tsukiji Ginza Grande"
}
그 외
- 그 외 추가적인 기능이랑 챗봇 실습이 있는데 생략한다
결론
강의의 내용은 아래와 같은 내용에 대해 설명하고 있다. 1시간 정도이니 가볍게 듣기에 나쁘지 않았다.
- 명확하고 구체적으로 프롬프트를 작성할 것
- 모델에게 생각할 시간을 줄 것(틀려도 프롬프트를 다듬어가면서 구체적으로 제시하기)
'알쓸코잡' 카테고리의 다른 글
dict.fromkeys()에 관한 사실 (0) | 2023.05.26 |
---|---|
꼬리에 꼬리를 무는 Proxy 이야기 (0) | 2023.05.08 |
꼬리에 꼬리를 무는 웹 스크래핑/크롤링 이야기 (0) | 2023.04.27 |
전혀 모르고 있다가 파이썬 3.12가 나왔다길래 읽어봤다는 내용 (0) | 2023.04.21 |
왜 웹 브라우저 자동화 도구(Selenium, Pupeteer)는 로그인 상태가 유지되지 않는가? (0) | 2023.04.16 |