표지 이미지에는 1984년 Apple Inc.가 출시하여 컴퓨터 산업을 변화시킨 개인용 컴퓨터인 등장합니다. 상징적인 32비트 프로세서, 128KB RAM, 적당한 흑백 내장 디스플레이를 탑재했습니다.
또한 에서 직접 놀라운 기술 발명품인 마우스와 최초의 그래픽 사용자 인터페이스(현재 GUI의 할머니)를 통합했습니다.
70,000 대 이상 판매된 Macintosh는 Apple 의 성공에 중추적인 역할을 했습니다. 흥미로운 사실은 출시 이벤트가 Mac 자체보다 훨씬 더 성공적이었다는 것입니다. 미화 150만 달러의 예산으로 유명한 리들리 스콧(Ridley Scott)은 걸작이자 분수령이 된 사건이 된 오웰의 상징적인 소설 1984를 분명히 암시하는 연출했습니다.
거의 40년 후, 유명한 영화 감독이나 텔레비전 광고 없이, 단순한 웹 애플리케이션만으로 OpenAI는 아직 실험적인 언어 모델을 가져와 세상에 공개했습니다. 나머지 이야기는 헤드라인에 있습니다. ChatGPT는 출시 두 달 만인 1월 23일에 역사상 가장 빠르게 성장하는 소비자 애플리케이션이 되었습니다(TikTok 및 Instagram보다 빠름).
이제 전 세계의 관심은 AI 산업에 쏠려 있으며, 매주 발전이 이루어지면서 올해는 이 분야의 중추적인 순간이 될 것입니다. 가장 좋은 점은 AI 분야에 합류하여 인류 역사의 혁명적인 순간에 참여할 수 있는 시간이 아직 남아 있다는 것입니다.
프롬프트 엔지니어링 101(Prompt Engineering 101) 은 프롬프트 엔지니어링의 원리와 기술, 명확하고 효과적인 텍스트를 작성하는 기술을 공개하고 언어 모델을 프롬프트하고 원하는 것을 정확하게 얻기 위해 고안되고 작성된 포스트 시리즈입니다. 이 시리즈는 ChatGPT 및 기타 텍스트-텍스트 모델을 포함하여 광범위한 생성 모델에 대한 신속한 엔지니어링을 다룹니다. 또한 Stable Diffusion 또는 Midjourney와 같은 텍스트-이미지 모델을 탐색하고 환각, 개인 정보 보호 및 보안 문제 등과 같은 LLM의 추가 측면을 탐구합니다.
이것은 시리즈 의 포스트 #2 로, 신속한 제작을 마스터하기 위해 사고 사슬 및 자기 일관성과 같은 고급 기술을 다룰 것입니다. 나는 당신이 그것을 즐기시기 바랍니다!
Prompt Engineering 시리즈의 첫 번째 부분 에서 우리는 이 기술의 직관을 탐구하고 공식적인 정의를 얻었습니다. 본질적으로 프롬프트 엔지니어링은 관련성 있고 정확하며 일관된 응답을 생성할 수 있도록 대규모 언어 모델에 대한 명확하고 구체적인 프롬프트를 설계하고 최적화하는 반복적인 프로세스입니다.
다음으로 효과적인 프롬프트를 작성하기 위한 세 가지 원칙을 살펴보았습니다. 우리는 명확하고 구체적인 지침(첫 번째 원칙)이 주어졌을 때 모델이 더 나은 응답을 생성한다는 것을 입증하고 이를 달성하기 위한 몇 가지 전략에 대해 논의했습니다. 그런 다음 LLM이 계산 시간의 이점을 누릴 수 있다는 사실을 확인하고 성급하게 결론을 내리기 전에 모델이 추론하도록 하는 몇 가지 전술을 다루었습니다(두 번째 원칙). 궁극적으로 우리는 특이성과 창의성(세 번째 원칙) 사이의 균형을 조사하고 온도와 Top P 매개변수를 실험하여 이러한 절충안을 탐색했습니다.
아래 링크에서 프롬프트 엔지니어링에 대한 더 자세한 정의와 기본 사항을 읽을 수 있습니다(많은 프롬프트 예제가 포함되어 있습니다!!).
GPT-3 또는 PaLM과 같은 대규모 LLM은 자연어 이해에 있어 인상적인 능력을 보여주었으며 텍스트에서 정보를 추출하고 일관된 인간 스타일로 응답을 생성하는 등의 작업에서 매우 효과적인 것으로 입증되었습니다. 그럼에도 불구하고 LLM은 몇 가지 샷 예시가 프롬프트에 포함되면 알 수 없는 작업을 매우 강력하게 수행하는 것으로 나타났습니다. , 여러 벤치마크에서 모델 성능을 향상시키는 것으로 조사되었습니다. 말할 것도 없이 새로운 특정 도메인에 맞게 모델을 미세 조정하는 데 드는 비용과 시간이 절약됩니다.
그러나 연구에 따르면 이러한 모델은 일반적인 추론 작업이나 수학 퀴즈에서 성능이 갑자기 저하되는 것으로 나타났습니다. 고대 그리스 서사시 The Odyssey 전체를 인용할 수 있음에도 불구하고 이러한 모델은 학교에서 논리와 수학의 근본적인 문제로 어려움을 겪고 있습니다.
그렇다면 우리에게는 어떤 선택권이 있습니까? 한 시즌 동안 GPT-3를 초등학교에 보내나요? 다행히도 더 저렴하고 덜 당황스러운 대안이 있습니다. 학기 중에 ChatGPT를 수락하도록 지역 초등학교 교장을 설득하는 것을 상상할 수 있습니까?
인간이 복잡한 문제를 더 간단한 하위 문제로 나누고 논리적 추론을 따라 접근하는 방식과 유사하게 언어 모델에도 동일한 작업을 수행하도록 지시할 수 있습니다. 이 접근법은 Wei J et al.에 의해 탐구되었습니다. . 이는 여러 벤치마크에서 인상적인 결과를 보여 주었고, 일반적인 추론 작업에서 LLM 성능을 향상시키기 위한 견고한 접근 방식인 CoT(사고 사슬)를 확인했습니다.
아래 이미지(Wei J의 기사에서 가져옴)에서는 LLM 모델이 식당에 남아 있는 사과의 수를 계산하는 동안 잘못된 결론을 내리게 됩니다. 이는 테니스 공을 사용한 유사한 추론 문제가 맥락의 일부로 제공되는 경우에도 발생합니다.
그럼에도 불구하고 문제를 해결하기 위한 단계별 프로세스가 컨텍스트(CoT)에 포함되면 모델은 유효한 솔루션에 정확하게 도달할 수 있습니다.
이 방법은 모델에 추론 예제를 제공하거나(few-shot) 예제를 제공하지 않는(zero-shot) 데 사용할 수 있습니다. 실제 적용 사례를 통해 실제로 두 가지 맛을 모두 살펴보겠습니다.
다양한 브랜드 대안의 가격과 속성을 기반으로 어떤 제품을 구매해야 하는지 비교하고 선택하는 획기적인 기능을 갖춘 Walmart를 위한 새로운 쇼핑 애플리케이션을 개발하고 있다고 상상해 보세요.
문제를 설명하기 위해 Walmart가 매장에 보유하고 있는 의 모든 옵션을 축소한 목록에 집중해 보겠습니다. 보시다시피, 우리는 1바부터 14바까지의 팩과 다양한 브랜드와 가격(저렴한 옵션부터 고가의 옵션까지)을 보유하고 있습니다.
제품 🛒
--- Dove Men+Care 8 bars pack $ 9.99 --- Dove Beauty Bar 4 bars pack $ 6.47 --- Dove Beauty Bar 1 bars $ 1.47 --- Dove Beauty Bar 14 bars pains $ 16 --- Yardley London Soap Bar (Pack of 10) $ 19.99 --- Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack $46.45
어떤 옵션이 더 편리한지 결정하기 위해 각 대안의 막대당 가격(단가)을 계산할 수 있습니다. 다음으로 가장 저렴한 옵션을 선택하세요. 이러한 추론에 따라 우리는 Dove Beauty Bar 14 바가 단가 $1.14( Dove Beauty Bar 1 바 보다 바당 -22%)의 가장 저렴한 옵션임을 발견했습니다.
추론 🧠
- Dove Men+Care 8 bars pack: $1,24875 / unit - Dove Beauty Bar 4 bars pack: 1,6175 / unit - Dove Beauty Bar 1 bars: 1,47 / unit - Dove Beauty Bar 14 bars pains: $1,142857 per / unit - Yardley London Soap Bar (Pack of 10): 1,999 / unit - Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack: $9,29 / unit
GPT-4가 간단한 프롬프트를 사용하여 이 문제를 해결할 만큼 영리한지 살펴보겠습니다. 또한, 보다 깔끔하고 읽기 쉬운 예제를 만들기 위해 Python 사용하여 시스템 명령을 나머지 입력과 분리합니다.
프롬프트 💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which is the best option based on the price. <{products}> """
응답 🤖
The best option based on price is Dove Beauty Bar 1 bars for $1.47.
모델은 단위 가격을 계산하고 더 많은 막대를 구매하여 비용 절감 기회를 식별하는 대신 총 가격을 기준으로 가장 저렴한 옵션을 선택했습니다. 질문의 모호함을 지적할 가치가 있습니다. 최선의 선택은 무엇을 의미하나요? 가장 저렴한 것을 의미합니까, 아니면 장기적인 비용 절감을 극대화하는 것을 의미합니까?
"단계별 추론"이라는 마법의 단어를 추가하여 이 문제를 해결하기 위해 일련의 사고를 따르도록 모델에 지시하는 프롬프트를 다시 작성해 보겠습니다. 또한 비용 절감 기회를 찾는 목표를 명시적으로 강조하세요.
프롬프트 💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which presentation offers the best money-saving opportunity, reasoning step-by-step: <{products}> """
응답 🤖
The first step is to compare price per unit for products of the same type (ie bars of soap). - Dove Men+Care 8 bars pack: $9.99 ÷ 8 bars = $1.25 per bar - Dove Beauty Bar 4 bars pack: $6.47 ÷ 4 bars = $1.62 per bar - Dove Beauty Bar 1 bars: $1.47 per bar - Dove Beauty Bar 14 bars pack: $16 ÷ 14 bars = $1.14 per bar - Yardley London Soap Bar (Pack of 10): $19.99 ÷ 10 bars = $1.99 per bar - Dr. Squatch All Natural Bar Soap for Men, 5 Bar Variety Pack: $46.45 ÷ 5 bars = $9.29 per bar Based on this analysis, the best money-saving opportunity is the Dove Beauty Bar 14 bars pack, which offers the lowest price per bar at $1.14.
새로운 프롬프트를 통해 모델은 정답을 제공하는 동시에 디버그하기 쉽고 잠재적인 오류를 찾는 단계별 추론을 제공합니다. 더욱이 "단계별 추론"이라는 마법의 단어를 프롬프트에 추가하면 모델 출력에 상당한 차이가 생성된다는 점은 매우 인상적입니다. 비결은 무엇입니까?
비결은 단순히 숫자 또는 부울 값(최종 결과)을 출력하는 대신 모델이 단계별 추론 체인(사고 체인)을 생성하도록 강제하는 것입니다. 이 전략을 채택함으로써 우리는 처음에 모델을 논리적 추론 출력으로 안내하여 모델이 훈련 중에 직면한 유사한 문제에 대한 응답을 기반으로 할 수 있도록 합니다. 둘째, 더 큰 문제를 더 작고 관리 가능한 문제로 분해하도록 요청하여 모델을 지원합니다. 그런 다음 모델은 각 패키지의 가격 및 막대 수 식별, 단가 계산, 마지막 비교 수행과 같은 간단한 하위 문제에 대해 일관된 결과를 생성해야 합니다. 또한 GPT-3 또는 GPT-4와 같은 자동 회귀 언어 모델이 토큰별로 시퀀스 토큰을 생성하는 방식으로 인해 각각의 새로운 토큰은 이전에 생성된 모든 토큰을 기반으로 생성되므로 사고 사슬 자체가 강력한 긍정적 영향을 미칩니다. 일관된 최종 결과를 생성합니다.
즉, 타당한 추론을 통해 올바른 해결책의 중간 지점에 도달하면 문제에 대해 처음 추론을 시작했을 때보다 이 해결책에 도달할 가능성이 더 커집니다.
Zero-Shot Chain-of-Thought에서는 올바른 결과를 이끌어내는 일관되고 유효한 추론 체인을 자유롭게 정교하게 모델에 남겨 두는 반면, Few-Shot Chain-of-Thought라는 두 번째 버전은 문제의 몇 가지 예를 제공합니다. 프롬프트의 일부로 추론 답변과 함께. 이러한 방식으로 모델에 추론 형식이 적용되어 가능한 응답이 제한됩니다.
Walmart 애플리케이션으로 돌아가서, 어떤 코카콜라 탄산음료의 액량 온스당 가격 비율이 가장 좋은지 식별하려고 한다고 가정해 보겠습니다. 이를 위해 우리는 유사한 추론 체인을 프롬프트에 통합하여 Lay의 감자칩에 대한 최상의 프레젠테이션을 찾을 것입니다.
프롬프트 💬
prompt = f""" Q: Walmart has the following presentations for Lay's Classic Potato Chips: a 13 oz bag for $4.98, an 8 oz bag for $2.76, and a pack of x10 units 1 oz each for $6.82. Which presentation has the lowest price by ounce? A: Presentation 1 costs 4.98 so has a price of 4.98/13 = 0,383076923 per ounce. Presentation 2 costs 2.76 so has a price of 2.76/8 = 0,345 / per ounce. Presentation 3 costs 6.82 and includes 10 packages so has a price of 6.82/(1 x 10) = 0.682 per ounce. In conclusion, the cheapest presentation is the second one with a price of 0.345 per ounce. Q: Walmart has the following presentation for Coca-Cola Soda: an x24 pack of 12 fl oz cans for $11.86, an x12 pack of 12 fl oz cans for $7.46, and an x6 pack of 16.9 fl oz bottles for $4.98. Which presentation has the lowest price by fluid ounce? """
스스로 계산해보시고 가장 좋은 거래를 찾으시길 바랍니다. 모델이 정확하다는 것을 알게 될 것입니다. 의심할 여지 없이 다음 번 매장 방문 시 반드시 ChatGPT 앱을 곁에 두고 있을 것입니다!!
응답 🤖
A: The 24-pack contains a total of 24 x 12 = 288 fluid ounces and costs $11.86, so the price per fluid ounce is 11.86/288 = $0.041 per fluid ounce. The 12-pack contains a total of 12 x 12 = 144 fluid ounces and costs $7.46, so the price per fluid ounce is 7.46/144 = $0.052 per fluid ounce. The 6-pack contains a total of 6 x 16.9 = 101.4 fluid ounces and costs $4.98, so the price per fluid ounce is 4.98/101.4 = $0.049 per fluid ounce. Therefore, the 24-pack has the lowest price per fluid ounce.
놀랍게 보일 수도 있지만 이 간단한 트릭을 통해 모델은 유사한 추론 체인을 추론하고 이전 기술보다 훨씬 더 정확한 결과를 얻을 수 있습니다. 또한 문제를 해결하기 위한 단계별 절차를 하드 코딩하지 않는다는 점에 유의하세요. 따라서 이 접근 방식은 이론적으로 모델의 추론 기술에만 의존하여 유사한 문제를 해결할 수 있을 만큼 유연해야 합니다.
단일 프롬프트로 문제를 해결하도록 강요하는 규칙은 없습니다. 실제로 단일 프롬프트에 더 많은 논리와 복잡성을 추가할수록 모델이 혼동될 가능성이 더 커집니다. 프롬프트 연결은 복잡한 문제를 해결하기 위한 간단하지만 효과적인 전략입니다. 주요 아이디어는 문제를 더 작은 작업으로 나누고 각 작업은 특정 프롬프트에 의해 해결되는 것입니다. 각 프롬프트를 연결하고 이전 프롬프트의 결과를 다음 프롬프트의 입력으로 사용하여 최종 결과를 얻습니다.
이를 염두에 두고 Walmart 애플리케이션으로 돌아가 복잡한 사용자 흐름을 일련의 프롬프트로 구현해 보겠습니다. 지금까지 화장비누, 스낵, 청량음료 등 다양한 제품의 가격을 비교해보았습니다. 이제 우리는 슈퍼마켓을 방문할 때마다 개인적으로 두통을 일으키는 제품을 탐색할 준비가 되었습니다. 단위당 가격을 계산하는 것은 로켓 과학처럼 보입니다. 화장지! 🤣🤣🤣
다음은 Walmart의 옵션 목록입니다.
제품 🛒
--- Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls Each Mega Roll has 255 3-ply sheets. $ 6.93 --- Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls. 18 mega toilet paper rolls, each mega roll has 295 2-ply sheets $ 19.82 --- Angel Soft Toilet Paper, 36 Mega Rolls. With 320 2-ply sheets on every Mega Roll. $ 24.12 --- New Angel Soft Toilet Paper, 36 Mega Rolls. With 484 2-ply sheets Per Roll $ 45.44 --- Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll. With Scott 1,000 Toilet Paper, you get 12 rolls of 1000 1-ply sheets.
해결해야 할 문제는 이 게시물에서 중점을 두었던 문제와 동일합니다. 어떤 제품 프레젠테이션이 가장 비용 효과적인지 결정하는 것입니다. 또한, 저장 공간이 제한되어 대량 구매가 어려운 구매자, 더 많은 양의 제품이 필요한 구매자 등을 고려하여 추가 선택 사항을 생성하여 응용 기능을 향상시키고자 합니다. 또한, AI 기반 가상 쇼핑 도우미가 제공하는 맞춤형 추천에 상품 추천을 추가하는 것도 좋을 것 같습니다.
전체 작업을 해결하기 위해 단일 프롬프트를 사용하는 대신 목표는 각 작업에 대한 특정 프롬프트가 있는 여러 하위 작업으로 나누고 출력을 연결하는 것입니다. 먼저 각 제품의 측정 단위당 가격을 계산하여 직접 비교할 수 있도록 프롬프트를 디자인해 보겠습니다.
체인의 첫 번째 단계나 작업을 위해 우리는 Zero-Shot Chain of Thought를 사용할 것입니다. 이렇게 하면 모델이 입력의 각 제품에 대한 측정 단위당 가격을 반환하고 단계별로 추론하도록 지시합니다. 여기에서 생성된 출력은 나중에 다음 프롬프트의 입력으로 사용됩니다. 이러한 이유로 구조화된 출력 형식을 요청하는 것이 필수적입니다. 이 경우 JSON 목록이면 충분합니다.
프롬프트 💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to calculate the price by unit of measurement for each presentation, reasoning step-by-step. Finally, return a list in JSON format with the title of the product, original price and unit price using the title, total_price and unit_price keys respectively. <{products}> """
응답 🤖
Let's start by breaking down the cost for each roll and then calculating the cost per unit, in this case, the cost per sheet. For the Quilted Northern Ultra Plush Toilet Paper: * The product costs $6.93 and contains 6 mega rolls. Therefore, each mega roll costs $6.93 / 6 = $1.155. * Each mega roll contains 255 sheets. Therefore, the cost per sheet is $1.155 / 255 = $0.00453 approximately. For the Quilted Northern Ultra Soft & Strong Toilet Paper: * The product costs $19.82 and contains 18 mega rolls. Therefore, each mega roll costs $19.82 / 18 = $1.1011 approximately. * Each mega roll contains 295 sheets. Therefore, the cost per sheet is $1.1011 / 295 = $0.00373 approximately. For the Angel Soft Toilet Paper: * The product costs $24.12 and contains 36 mega rolls. Therefore, each mega roll costs $24.12 / 36 = $0.6694 approximately. * Each mega roll contains 320 sheets. Therefore, the cost per sheet is $0.6694 / 320 = $0.00209 approximately. For the New Angel Soft Toilet Paper: * The product costs $45.44 and contains 36 mega rolls. Therefore, each mega roll costs $45.44 / 36 = $1.2622 approximately. * Each mega roll contains 484 sheets. Therefore, the cost per sheet is $1.2622 / 484 = $0.00261 approximately. For the Scott 1,000 Toilet Paper: * The product costs $45.44 and contains 12 rolls. Therefore, each roll costs $45.44 / 12 = $3.7867 approximately. * Each roll contains 1000 sheets. Therefore, the cost per sheet is $3.7867 / 1000 = $0.00379 approximately. Now, let's format this into JSON: [ { "title": "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls", "total_price": "$6.93", "unit_price": "$0.00453" }, { "title": "Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls", "total_price": "$19.82", "unit_price": "$0.00373" }, { "title": "Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$24.12", "unit_price": "$0.00209" }, { "title": "New Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$45.44", "unit_price": "$0.00261" }, { "title": "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll", "total_price": "$45.44", "unit_price": "$0.00379" } ] This JSON data provides each product's title, total price, and the calculated unit price.
각 화장지 프레젠테이션의 장당 가격을 수동으로 계산해 보시기 바랍니다. 그렇게 하면 모델 출력이 올바른지 확인할 수 있습니다. 그러나 모델 출력에는 추론 프로세스도 포함됩니다(모델에 단계별 추론을 요청하므로). 즉, 계속하기 전에 나머지 텍스트에서 JSON 목록을 추출해야 합니다. 다행스럽게도 LLM을 사용하여 이를 달성할 수 있습니다!
이 텍스트 추출을 수행하기 위한 간단한 프롬프트를 작성해 보겠습니다. 또한 가장 저렴한 것부터 가장 비싼 것까지 단가를 기준으로 옵션을 정렬하도록 모델에 지시해 보겠습니다. 이 단계는 나중에 프롬프트 체인에서 매우 유용합니다.
프롬프트 💬
prompt = f""" You will be provided with a text delimited by <>. This text contains a JSON list with information about Walmart products. Your task is to extract that list and return only this list in JSON format. Each JSON list item contains the key "unit_price", which is a number. Before returning the list, sort it in ascending order by the key "unit_price". Here is an example of a list item: { "title": "Toilet paper", "total_price": "$2.99", "unit_price": "$0.0045" } Remember to return the list without any additional text or explanation, just the list in JSON format. <{response_prompt_1}> """
응답 🤖
[ { "title": "Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$24.12", "unit_price": "$0.00209" }, { "title": "New Angel Soft Toilet Paper, 36 Mega Rolls", "total_price": "$45.44", "unit_price": "$0.00261" }, { "title": "Quilted Northern Ultra Soft & Strong Toilet Paper, 18 Mega Rolls", "total_price": "$19.82", "unit_price": "$0.00373" }, { "title": "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll", "total_price": "$45.44", "unit_price": "$0.00379" }, { "title": "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls", "total_price": "$6.93", "unit_price": "$0.00453" } ]
제품 대안을 JSON 목록으로 표시하면 GPT-4와 같은 모델이 가장 비용 효율적인 옵션을 식별할 뿐만 아니라 예를 들어 몇 가지 옵션만 필요한 쇼핑객에게 귀중한 통찰력을 제공하는 것이 쉬운 작업이 됩니다. 단위. 이를 달성하기 위한 프롬프트를 만들어 보겠습니다. 더욱이 우리는 AI로 구동되는 가상 쇼핑 도우미를 개발하고 있다는 점을 기억하세요.
결과적으로 우리는 LLM을 활용하여 제품 대안을 구체적이고 친근한 어조로 단일 문자 메시지로 전달할 수도 있습니다.
프롬프트 💬
prompt = f""" Your name is Wally and you are an artificial shopping assistant at Walmart stores. You will be provided with a list of various product presentations in a JSON list format, delimited by <>. Each product presentation is accompanied by its total_price, unit_price, and a title that contains extra information about the product presentation. Additionally, the list is sorted by unit_price ascending. Your task is to generate a short, straight-to-the-point buy recommendation, mentioning the best money-saving opportunity based on the JSON products list. Also include the best, smallest and largest options to give the user options based on the size of the product. Use a single paragraph to include all three recommendations. First present yourself in a friendly way, start mentioning the best option of all, then the smallest option, and finally the largest option. Say goodbye inventing something that includes the Walmart slogan "Save Money. Live Better". <{response_prompt_2}> """
응답 🤖
Hello there! I'm Wally, your friendly shopping assistant at Walmart. Let's dive into your toilet paper options! Looking at the overall value, your best option is the "Angel Soft Toilet Paper, 36 Mega Rolls" priced at $24.12 with a unit price of $0.00209, giving you the most bang for your buck. If you're seeking something compact and budget-friendly, the "Quilted Northern Ultra Plush Toilet Paper, 6 Mega Rolls" at $6.93 would be your go-to pick. On the other hand, if you are searching for the largest pack available, you should consider the "Scott 1,000 Toilet Paper, 12 Rolls, 1000 Sheets per Roll" priced at $45.44, offering a vast number of sheets for your needs. Remember, every cent counts at Walmart because our goal is to help you "Save Money. Live Better". Happy shopping!
내 개인적인 의견으로는 모델의 출력이 단 세 개의 간단한 프롬프트 체인에서 생성되었다는 점을 고려하면 매우 인상적입니다. 상단에 있는 체리를 간과하지 마십시오. 저는 모델에게 Walmart 슬로건을 응답에 포함하도록 특별히 지시했습니다.
이 섹션을 결론적으로 말하면, 프롬프트 연결은 LLM으로 해결된 다양한 작업이나 하위 문제의 결과를 통합하여 LLM의 진정한 잠재력을 이끌어내는 매우 강력한 기술입니다. 복잡한 프롬프트를 여러 개의 작은 프롬프트로 나누는 일반적인 경험 법칙은 없다는 점을 기억하십시오. 특정 문제에 대한 올바른 균형을 찾아야 합니다.
CoT를 사용하더라도 LLM이 일관된 응답을 생성하지 못하는 일부 시나리오가 있으며, 동일한 프롬프트에 대해 모델이 실행 간에 혼란을 겪고 일관되지 않은 응답을 반환할 수 있습니다. 이러한 맥락에서 간단하지만 효과적인 접근 방식으로, 단순히 동일한 프롬프트로 모델에 여러 번 질문하고 다수의 결과를 최종 답변으로 취하는 것으로 구성됩니다. 이 기술을 CoT와 결합하면 더욱 강력하고 예측 가능한 결과를 얻는 데 도움이 됩니다.
예를 들어, Chain-of-Thought 논문에 제시된 구내식당의 사과 사례를 고려해 보겠습니다. 입력 프롬프트로 모델을 한 번만 호출하는 대신 모델을 세 번 호출하고 다수의 답변을 최종 답변으로 사용할 수 있습니다(아래 이미지 참조).
다수의 응답을 채택하면 특정 실행 중에 모델이 잘못된 출력을 반환할 가능성이 크게 줄어듭니다. 이 기술의 효과는 반복 횟수를 늘리면 향상됩니다. 그러나 프롬프트를 반복적으로 실행하면 모델에 대한 호출 수가 많아지고 하드웨어 소비도 늘어납니다. GPT-3와 같은 대규모 언어 모델의 경우 이는 더 많은 API 호출로 이어지며 결과적으로 단일 답변을 생성하는 데 더 많은 비용이 소요됩니다.
이러한 이유로 LLM을 사용하는 시스템을 설계할 때는 꼭 필요한 경우에만 이 기술을 사용하여 견고성과 모델 호출 저장 간의 균형을 유지하는 것이 필수적입니다. 예를 들어, 시스템 응답에 있어 높은 수준의 견고성이 필요한 경우입니다.
이 기술의 잠재력을 설명하기 위해 Walmart 애플리케이션으로 돌아가서 또 다른 특정 제품인 분석해 보겠습니다.
제품 🛒
--- Great Value Cage Free Large AA White Eggs, 6 Count $ 1.07 --- Happy Egg Organic Free Range Large Brown Eggs, 12 Count $ 5.16 --- Great Value Cage Free Large AA White Eggs, 12 Count $ 1.86 --- Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count $ 2.69 --- Marketside Large Cage Free Brown Eggs, 12 Count $ 2.67
모델에 대한 문제를 약간 더 어렵게 만들기 위해 프롬프트에 일부 사용자 기본 설정을 포함해 보겠습니다.
preferences = f""" - Only consider grade AA eggs - Only consider eggs produced on cage-free farms - The client needs a minimum of 6 eggs and a maximum of 12 """
GPT-3/GPT-4와 같은 강력한 모델을 사용하면 아래와 같은 Zero-Shot CoT 프롬프트만으로도 좋은 결과를 얻을 수 있습니다(이전 테스트 기억). 해보자!
프롬프트 💬
prompt = f""" You will be provided with a list of various product presentations delimited by <>. Each product presentation is accompanied by its price. Your task is to identify which presentation offers the best money-saving opportunity, reasoning step-by-step: Also, consider the following user preferences to select the most suitable ooption: {preferences} <{products}> """
응답 🤖
(1) Considering the user preferences, we first filter the list of eggs for only grade AA and cage-free options, which gives us the following choices: * Great Value Cage Free Large AA White Eggs, 6 Count: $1.07 * Great Value Cage Free Large AA White Eggs, 12 Count: $1.86 * Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count: $2.69 * The Happy Egg and Marketside options are discarded because their grade is not specified. Next, we consider the amount of eggs. The client needs a minimum of 6 eggs and a maximum of 12. Therefore, we can discard the Eggland's Best 18 count option, as it exceeds the maximum required amount. Now, we compare the remaining two options: * Great Value Cage Free Large AA White Eggs, 6 Count: $1.07 * Great Value Cage Free Large AA White Eggs, 12 Count: $1.86 * Although the 6-count pack fits the minimum requirement, the 12-count pack offers a better price per egg. For the 6-count pack, each egg costs $1.07 / 6 = ~$0.178. For the 12-count pack, each egg costs $1.86 / 12 = ~$0.155. Therefore, considering both the user's preferences and the cost per egg, the "Great Value Cage Free Large AA White Eggs, 12 Count" for $1.86 is the best money-saving opportunity. (2) Let's go through each product one by one, considering the user's preferences: 1. Great Value Cage Free Large AA White Eggs, 6 Count - $1.07 These are grade AA eggs from a cage-free farm, so they meet the user's criteria. The price per egg is $1.07/6 = $0.178. 2. Happy Egg Organic Free Range Large Brown Eggs, 12 Count - $5.16 These are not specified as grade AA, so we can't consider them based on user's preferences. 3. Great Value Cage Free Large AA White Eggs, 12 Count - $1.86 These are grade AA eggs from a cage-free farm and the quantity is within the range the user wants. The price per egg is $1.86/12 = $0.155. 4. Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count - $2.69 These are grade AA eggs from a cage-free farm. However, the quantity is more than the user wants (18), so we can't consider this option. 5. Marketside Large Cage Free Brown Eggs, 12 Count - $2.67 These are not specified as grade AA, so we can't consider them based on user's preferences. Based on the preferences, we are only left with two choices: Great Value Cage Free Large AA White Eggs, either 6 Count or 12 Count. However, the 12 Count package offers the best money-saving opportunity, because it has a lower cost per egg ($0.155 per egg) than the 6 Count package ($0.178 per egg). Additionally, the 12 Count package still falls within the user's desired quantity range of 6 to 12 eggs. Therefore, the best option for the user is the "Great Value Cage Free Large AA White Eggs, 12 Count" at $1.86. (3) Given the user's preferences, we need to find the product which: 1. Contains only grade AA eggs 2. Is produced on cage-free farms 3. Offers a minimum of 6 eggs and a maximum of 12 Let's consider each product: 1. "Great Value Cage Free Large AA White Eggs, 6 Count" - $ 1.07. This option matches all the user's preferences and costs $1.07 for 6 eggs, which is approximately $0.178 per egg. 2. "Happy Egg Organic Free Range Large Brown Eggs, 12 Count" - $ 5.16. This product does not specify the grade of the eggs, so we will disregard this option. 3. "Great Value Cage Free Large AA White Eggs, 12 Count" - $ 1.86. This option also matches the user's preferences and costs $1.86 for 12 eggs, which is approximately $0.155 per egg. 4. "Eggland's Best Farm Fresh Cage Free Large White Grade AA Eggs, 18 Count" - $ 2.69. While this product matches the egg grade and production method preferences, it contains more than the maximum amount of eggs requested by the user (18 instead of 12). Therefore, we disregard this option. 5. "Marketside Large Cage Free Brown Eggs, 12 Count" - $ 2.67. This product does not specify the grade of the eggs, so we will disregard this option. Therefore, the product that provides the best money-saving opportunity while meeting the user's preferences is "Great Value Cage Free Large AA White Eggs, 12 Count" for $1.86. This option offers more eggs for a lower cost per egg compared to the other suitable option.
모델이 어떤 실행에서도 잘못된 결과를 생성하지 않았음에도 불구하고(세 가지 인스턴스 모두에서 정확한 추론을 통해) 이 예는 LLM 응답의 변동 가능성을 강조합니다. 이는 이러한 변동성을 줄이는 데 있어 자체 일관성의 가치를 더욱 강조합니다.
보다 일반적으로 자기 일관성은 산술, 상식 및 기호 추론 작업의 결과를 향상시키는 것으로 나타났습니다. 일반 CoT가 효과적이지 않은 것으로 확인된 경우에도 Self-Consistency는 여전히 결과를 개선할 수 있었습니다( 확인).
이 고급 기술을 마무리하려면 목록에 더 많은 제품을 추가하거나 "단계별 추론"을 제거하여 모델에 실수할 여지를 더 많이 주는 등 직접 시도해 보시기 바랍니다. 또한, 현재 진행 중인 실제 문제에 Self-Consistency를 적용해 보십시오.
일반적으로 InstructGPT 모델(예: ChatGPT)과 관련된 프로세스 할 때 역할 프롬프트(Role Prompting)로 알려진 새로운 접근 방식이 사용자들 사이에서 추진력을 얻었습니다. 이 방법에는 특정 작업을 실행하기 위해 잘 알려진 엔터티의 성격을 가정하도록 모델에 지시하는 것이 포함됩니다.
이러한 주체의 가능성은 사실상 무한합니다. Tom Cruise나 Emma Watson과 같은 유명 배우부터 Barack Obama 또는 José Mujica와 같은 정치인, 심지어 Sherlock Holmes와 같은 가상의 인물까지 다양합니다. 이 기술을 사용하면 독특한 톤으로 반응을 생성하고 캐릭터의 말하기 스타일을 모방하며 더욱 매력적인 사용자 경험을 조성할 수 있습니다.
또한 전문가의 시뮬레이션 경험과 지식을 활용할 수 있습니다. 예를 들어 모델에게 핵물리학자, 마케팅 이사, CEO, 언론인 등의 역할을 맡아 특정 작업을 완료하도록 요청하세요.
이러한 유형의 메시지를 예시하기 위해 GPT-4 에게 Great Value Cage Free Large AA White Eggs를 제품으로 사용하여 Sheldon Cooper(빅뱅 이론 쇼의 유명한 캐릭터)의 고유한 톤으로 쇼핑 제안을 맞춤화하도록 요청합니다. 우리는 이 게시물의 앞부분에서 구매하는 것이 가장 좋은 옵션이라는 것을 알았습니다.
제품 🛒
Great Value Cage Free Large AA White Eggs, 12 Count. Price $1.86. This option offers more eggs for a lower cost per egg compared to the other suitable option.
프롬프트 💬
prompt = f""" You are a shopping assistant with the personality of the iconic character Sheldon Cooper from The Big Bang Theory show. Your task is to act like Sheldon, speak like Sheldon and think like Sheldon. You will be provided with a product description delimited by <> and your goal is to return a personalized shopping recommendation based on that product acting like Sheldon Cooper. Be concise, friendly and present yourself as Dr. Sheldon Cooper. <{product}> """
응답 🤖
Hello, I'm Dr. Sheldon Cooper. Given your product choice, I do appreciate the value for money that these Great Value Cage Free Large AA White Eggs offer. The cost per egg is an important mathematical factor to consider, and indeed, these eggs would be a sensible choice for a budget-conscious, protein-seeking individual like Leonard, who often falls victim to my high-protein breakfast egg burritos. However, it's also worth noting that cage-free doesn't mean these chickens lead a leisurely life. It's a common misconception, just like thinking the Doppler effect would be an acceptable Halloween costume. Ideally, for the truly ethical choice, you'd opt for pasture-raised eggs. And finally, from a culinary perspective, I would like to point out that while eggs do serve as an excellent source of protein, they are also potential carriers of Salmonella. But you probably knew that. In conclusion, despite their cost-effectiveness, I recommend careful handling and thorough cooking of these Great Value Cage Free Large AA White Eggs. Sheldon Cooper out.
얻은 답변에서 볼 수 있듯이 이 기술을 사용하면 흥미로운 결과를 얻고 고유한 응답을 반환할 수 있습니다. 그러나 우리는 추론을 모델에 위임하고 우리가 재생하도록 요청하는 엔터티에 대한 모델의 이해에 전적으로 의존한다는 점에 유의하십시오. 이러한 이유로, 먼저 모델이 우리가 가정하도록 요구하는 역할이나 개체를 올바르게 이해하고 있는지 확인하는 것이 중요합니다. 그렇지 않으면 결과가 우리가 기대하는 것과 다를 수 있습니다.
좋은 반례는 인간의 지능 수준을 능가하는 슈퍼컴퓨터를 모방하도록 모델을 요청하는 것입니다. 그러한 엔터티가 현재 존재하지 않는다는 점을 고려하면 모델은 이러한 유형의 엔터티의 응답에 대해 훈련되지 않았을 것입니다. 결과적으로 이 조건을 충족하는 응답을 제공할 수 없습니다.
프롬프트 💬
You are an artificial superintelligence, much more evolved and intelligent than human beings. You know everything about the universe and you have the answer to all the mysteries of the universe. Your task is to tell me how to write a post for Hackernoon that became a huge success.
안타깝게도 ChatGPT나 GPT-4 모두 아직 답변을 얻지 못했습니다...
번역 중에 문장이나 단어의 의미가 손실될 수 있는 것과 유사하게(종종 '번역 중 손실'이라고도 함) LLM은 토큰화 프로세스 중에 의미를 잃을 수 있습니다. 인간은 텍스트의 개별 단어를 인식하는 반면 LLM은 토큰을 해석합니다. 이러한 토큰은 개별 단어와 거의 일치하지 않습니다. 실제로 ChatGPT 또는 GPT-4와 같은 고급 모델은 모델이 영어의 일반적인 하위 단어를 인식할 수 있도록 하는 것을 목표로 하는 Tokenizer를 활용합니다. 이로 인해 일반적으로 단어가 둘 이상의 토큰으로 표시됩니다. 이 토크나이저는 유사한 오픈 소스 토크나이저보다 강력하고 빠르지만, 희귀한 영어 단어나 영어가 아닌 단어에 대해 원치 않는 출력이 발생할 수 있습니다.
이를 설명하기 위해 사용하여 다양한 문장을 가지고 놀고 각 사례에 대한 토큰화 출력을 관찰해 보겠습니다.
"I want to buy shoes" = "I/want/to/buy/shoes" "I think, therefore I am" = "I/think/,/therefore/I/am" "You should visit Punta del Este" = "You/should/visit/P/unta/del/E/ste"
관찰한 바와 같이, Tokenizer는 처음 두 예에서 단어를 성공적으로 분리했지만 우루과이에 위치한 관광적이고 아름다운 도시 Punta del Este의 이름을 이해하는 데 어려움을 겪었습니다. 이는 상대적으로 간단한 작업에서도 가끔 오류가 발생할 수 있으므로 주목할 만합니다. 이를 더 자세히 알아보기 위해 계속해서 실험해 보겠습니다.
텍스트
USA Santa Claus Uruguay
토큰화된 텍스트 🪄
USA Santa/Claus U/rug/uay
프롬프트 💬
prompt = f""" You will be provided with a list of texts delimited by <>. Your task is to reverse those texts. <{texts}> """
응답 🤖
Here are the reversed versions of the texts you provided: < ASU sualC atnaS yaguUr
시연된 바와 같이 모델은 Tokenizer에 대해 덜 일반적인 단어인 Uruguay라는 단어를 부정확하게 반전합니다. 다행히도 이 문제를 해결할 수 있는 간단한 해결 방법이 있습니다. 이와 같은 상황에서는 "-"와 같은 구분 기호를 사용하여 텍스트를 개별 문자로 분리하여 텍스트를 전처리할 수 있습니다. 이런 방식으로 모델이 텍스트를 토큰화할 때 하위 단어가 아닌 개별 문자를 인식합니다. 이 수정은 모델이 향상된 결과로 작업을 실행하는 데 도움이 될 수 있습니다. 한번 시도해 봅시다!
프롬프트 💬
prompt = f""" You will be provided with a list of texts delimited by <>. Your task is to reverse those texts. < USA Santa Claus Uruguay > """
응답 🤖
Sure, here are the reversed versions of the texts you provided: < ASU seikooC sualC atnaS yaugurU
제시된 해결 방법을 사용하면 모델이 모든 단어를 적절하게 반전할 수 있습니다. 희귀한 단어가 포함된 입력에 대한 모델 성능 저하를 관찰할 때 언제든지 이 해결 방법을 사용할 수 있습니다. 이 튜토리얼에서는 전처리 및 후처리 단계를 포함하지 않았습니다. 모든 프로그래밍 언어에는 이 작업 부분에 활용할 수 있는 문자열 메서드가 많이 있습니다.
우리의 Prompt Engineering 여정은 뛰어난 성능에도 불구하고 CoT+자체 일관성으로 끝나지 않습니다. 운 좋게도 이 작가에게는 이 기술을 익히기 전에 배워야 할 프롬프트 엔지니어링의 측면이 훨씬 더 많습니다. 아래에서는 프롬프트를 작성할 때 고려해야 할 몇 가지 보완적인 요소를 살펴보고 효과적인 프롬프트를 작성하는 데 사용할 수 있는 세 가지 유용한 도구를 소개합니다.
1- 올바른 구분 기호를 선택하십시오
LLM의 관점에서 모든 구분 기호가 동일하지는 않습니다. 일반적으로 입력의 나머지 부분에서 자주 사용되지 않는 문자인 것 외에도(모델과 프롬프트를 혼동하지 않도록) 1개의 토큰으로만 표시되는 구분 기호를 사용하는 것이 편리합니다. 이러한 방식으로 우리는 즉각적으로 토큰 소비를 줄여 하드웨어 자원과 비용을 절약하고 해당 토큰을 더 중요한 다른 용도로 사용할 수 있습니다.
사용하면 구분 기호가 단일 토큰으로 표시되는지 다시 확인할 수 있습니다.
“““
→ 토큰 1개```
→ 토큰 2개---
→ 토큰 1개###
→ 토큰 1개< >
→ 토큰 2개<tag></tag>
→ 토큰 5개
2- 입력 전처리
사용자 입력을 프롬프트의 일부로 모델에 전달하는 대신 문자열 메서드, 정규식 또는 유사한 도구를 사용하여 이 입력을 사전 처리하는 것이 좋습니다. 목표는 모델의 이해나 작업 완료를 방해할 수 있는 불필요한 공백, 구두점, HTML 태그 및 기타 불필요한 요소를 제거하는 것입니다. 이 접근 방식은 토큰을 절약하여 토큰당 비용을 청구하는 ChatGPT와 같은 모델의 비용을 절감할 뿐만 아니라 즉각적인 주입, 개인 정보 보호 문제 및 관련 문제를 식별하는 데도 도움이 됩니다.
3- 프롬프트 완벽
이 게시물 시리즈에서 소개한 것과 같은 특정 원칙과 기술을 따르면 처음부터 효과적인 프롬프트를 만들 수 있습니다. 그러나 더 나은 접근 방식은 와 같은 프롬프트 최적화 프로그램을 활용하는 것입니다. 이 도구는 AI를 활용하여 사용 중인 특정 대상 모델(GPT-3, GPT-4, Midjourney 등)을 기반으로 사용자 지정 프롬프트를 향상합니다.
애플리케이션 설계의 일부로 이러한 도구를 통합할 여력이 없다면 적어도 해당 도구를 살펴보는 것을 고려해 보십시오. 문서에 나와 있는 최적화된 예제를 통해 몇 가지 팁을 배울 수 있습니다.
4- 프롬프트 템플릿
바퀴를 다시 만드는 대신 인터넷을 통해 사람들이 공유하는 프롬프트 템플릿을 읽어보세요. 귀하의 요구 사항에 맞는 프롬프트가 없다면 적어도 아이디어를 얻을 수 있습니다. ChatGPT, Midjourney 및 가장 인기 있는 모델에 대한 다양한 프롬프트 템플릿을 가져올 수 있는 두 사이트는 다음과 같습니다.
➡️
➡️
5- OpenAI 놀이터
OpenAI는 라는 강력한 도구를 제공합니다. 이 대화형 웹 앱을 사용하면 공식 API를 통해 제공되는 다양한 모델을 실험할 수 있으며 특정 매개변수를 조정하고 기본 동작을 변경할 수 있습니다. 놀이터는 실험을 위한 훌륭한 시작점이며 단 한 줄의 코드도 작성할 필요가 없습니다.
마지막 조언, 좋은 프롬프트 작성 또는 LLM과의 흥미로운 대화는 커뮤니티의 다른 사람들과 공유하는 것만큼 중요할 수 있습니다. 잊지 말고 경험을 공유할 때 사용하여 한 번의 클릭으로 공유해 보세요.
Prompt Engineering 101 시리즈의 두 번째 게시물에서는 Chain-of-Thought와 Self-Consistency라는 두 가지 강력한 기술을 소개했습니다. 결합된 전략은 뛰어난 결과를 만들어냅니다. 실제 사례를 사용하여 우리는 생각의 연쇄(Zero-Shot 및 Few-Shot)의 두 변형을 모두 탐색하여 이러한 기술의 잠재력을 직접 경험했습니다. 다음으로 우리는 더 복잡하고 강력한 파이프라인을 구성하기 위해 일련의 프롬프트를 실험했습니다. 마지막으로 프롬프트 엔지니어링의 다른 측면을 조사하여 프롬프트를 만들 때 고려해야 할 관련 측면을 강조하고 마지막으로 몇 가지 유용한 도구에 대해 언급했습니다.
OpenAI API와 직접 상호 작용하기 위한 프롬프트, 응답 및 Python 스크립트와 함께 모든 예제를 찾아 프롬프트를 사용해 볼 수 있습니다.
다음 게시물에서는 ChatGPT 또는 유사한 모델과 같은 LLM 위에 구축된 시스템의 동작을 테스트하고 검증하는 기술을 살펴보겠습니다.
이 게시물 시리즈는 및 의 뛰어난 과정과 , 및 이 제공한 우수한 LLM 부트캠프에서 영감을 받았습니다(두 과정 모두 리소스 섹션에 언급되어 있음). 이러한 학습 프로그램을 마친 후 저는 학술 논문과 튜토리얼을 탐색하면서 더 깊이 탐구하고 싶었습니다. 이로 인해 나는 인터넷을 통해 정크 리소스와 고품질 리소스를 식별하게 되었습니다. 나는 Prompt Engineering과 Generative AI for Artwork에 관한 책 두 권을 Amazon에서 주문했는데, 그 책은 형편없게 쓰여졌고 완전한 돈 낭비로 판명되었습니다. 몇 주 동안의 집중적인 작업, 두통 및 커피 한잔 끝에 저는 Prompt Engineering에 대한 매우 가치 있는 리소스 모음을 발견했습니다. Prompt Engineering 여정에서 다른 사람들을 돕는 정신으로 저는 이 게시물 시리즈를 작성하면서 제 경험을 공유하기로 결정했습니다.
이 기사가 마음에 드셨다면 제 작업을 지원하기 위해 제 소셜 미디어에서 저를 팔로우해 주세요. 게다가 새로운 콘텐츠가 출시될 때마다 알림을 받게 됩니다!!
🐦 | 👨💼 | 💻 더 많은 이야기
DeepLearning.ai의
DeepLearning.ai의
프롬프트 엔지니어링 가이드
프롬팅 입문 과정