본문 바로가기

알쓸코잡

[강좌] 개발자를 위한 ChatGPT 프롬프트 엔지니어링 - Andrew Ng

개발자를 위한 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)

 

프롬프트를 해석하면, 먼저 식별할 항목을 정해준다

  1. 긍정적인가 부정적인가
  2. 분노하고 있는가(예/아니로로 대답)
  3. 분노하고 있는 상품정보
  4. 상품 만든 회사
  • 그리고 리턴 값도 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시간 정도이니 가볍게 듣기에 나쁘지 않았다.

  1. 명확하고 구체적으로 프롬프트를 작성할 것
  2. 모델에게 생각할 시간을 줄 것(틀려도 프롬프트를 다듬어가면서 구체적으로 제시하기)