OpenAI 프롬프트 엔지니어링
Azure OpenAI에서 사용할 수 있는 것과 같이 AI 모델에 보내는 입력 프롬프트의 품질은 다시 가져오는 항목의 품질에 직접적인 영향을 줍니다. 모델에 보내는 프롬프트를 신중하게 구성하면 모델이 더 올바르고 흥미로운 응답을 제공할 수 있습니다.
프롬프트 엔지니어링이란
프롬프트 엔지니어링은 AI 모델을 더 잘 활용하기 위해 프롬프트를 디자인하고 최적화하는 프로세스입니다. 효과적인 프롬프트 설계는 프롬프트 엔지니어링의 성공에 매우 중요하며 특정 작업에 대한 AI 모델의 성능을 크게 향상시킬 수 있습니다. 관련 있고 구체적이며 명확하며 잘 구성된 프롬프트를 제공하면 모델이 컨텍스트를 더 잘 이해하고 보다 정확한 응답을 생성하는 데 도움이 될 수 있습니다.
예를 들어 OpenAI 모델이 제품 설명을 생성하도록 하려면 제품의 기능과 이점을 설명하는 자세한 설명을 제공할 수 있습니다. 이 컨텍스트를 제공하여 모델은 보다 정확하고 관련 있는 제품 설명을 생성할 수 있습니다.
또한 프롬프트 엔지니어링은 AI 모델의 편견을 완화하고 공정성을 개선하는 데 도움이 될 수 있습니다. 다양하고 포괄적인 프롬프트를 디자인하여 모델이 특정 그룹 또는 관점에 편향되지 않도록 할 수 있습니다.
중요
아무리 좋은 프롬프트를 디자인해도 AI 모델의 응답은 사실로 간주되거나 편견에서 완전히 자유로워서는 안 됩니다. 항상 AI를 책임감 있게 사용하세요. 자세한 내용은 Azure OpenAI 및 Microsoft의 AI 원칙에 대한 Microsoft의 투명성 고지를 참조하세요.
또한 프롬프트 엔지니어링은 모델이 응답을 생성하는 데 사용하는 참조를 이해하는 데 도움이 될 수 있습니다. 생성형 AI 모델에는 많은 매개 변수가 있으며 사용자가 따르는 논리는 대부분 알 수 없으므로 사용자가 제공하는 응답에 도달하는 방법을 혼동할 수 있습니다. 쉽게 이해하고 해석할 수 있는 프롬프트를 설계해 우리는 모델이 응답을 생성하는 방법을 인간이 더 잘 이해할 수 있도록 도울 수 있습니다. 이는 모델이 의사 결정을 내리는 방법을 이해하는 것이 중요한 의료와 같은 분야에서 특히 중요할 수 있습니다.
사용자 고유의 프롬프트를 엔지니어링할 때 활용하는 방법에는 여러 가지가 있습니다. 여기에는 지침, 상황별 콘텐츠, 신호 또는 퓨샷 예제를 제공하고 프롬프트에서 콘텐츠를 올바르게 정렬하는 것이 포함됩니다. 여기서 다루는 방법은 이 영역이 미묘하고 유동적인 주제이기 때문에 완전하지 않습니다.
API 엔드포인트에 대한 고려 사항
이 단원의 나머지 부분에 있는 예제에서는 ChatCompletion
을 중점적으로 다룹니다. ChatCompletion
은(는) 시스템 메시지에 모든 지침이 포함되고 사용자 역할 메시지에 사용자 콘텐츠가 제공되는 비 채팅 시나리오에도 사용할 수 있습니다. 이러한 예제의 대부분은 원하는 경우 Completion
엔드포인트를 사용하도록 변경할 수 있습니다.
모델 가용성 측면에서 Completion
엔드포인트는 gpt-3
이하 버전과 함께 사용할 수 있으며, ChatCompletion
은 gpt-35-turbo
이상 모델과 함께 사용할 수 있습니다.
모델 매개 변수 조정
이 단원에서 설명하는 기술 외에도 모델의 매개 변수를 조정하면 응답에 상당한 영향을 미칠 수 있습니다. 특히 temperature
및 top_p
(top_probability)은(는) 모델의 임의성을 제어하지만 다른 방식으로 모델의 응답에 영향을 미칠 가능성이 가장 높습니다.
값이 높을수록 창의적인 임의의 응답이 생성되지만 일관성이나 집중이 저하될 수 있습니다. 응답은 이러한 매개 변수에 대해 더 높은 값으로 허구적이거나 고유한 이점이 될 것으로 예상되는 반면, 보다 일관되고 구체적인 콘텐츠는 더 낮은 값을 사용해야 합니다.
특히, 높은 temperature
는 문장 구조의 더 많은 변형을 허용하고 높은 top_p
는 사용되는 단어의 더 많은 변형을 허용합니다(다양한 동의어를 사용하여).
동일한 프롬프트로 이러한 매개 변수를 조정하여 응답에 미치는 영향을 확인합니다. temperature
또는 top_p
을(를) 한 번에 변경하는 것이 좋지만 둘 다 변경하지 않는 것이 좋습니다.
효과적인 프롬프트 작성
Azure OpenAI 모델은 뛰어난 정확도로 자연어 쿼리에 대한 응답을 생성할 수 있습니다. 그러나 응답의 품질은 프롬프트가 얼마나 잘 작성되었는지에 따라 크게 달라집니다. 개발자는 프롬프트에서 다양한 기술을 사용하여 Azure OpenAI 모델의 성능을 최적화할 수 있으므로 보다 정확하고 관련성 있는 응답을 생성할 수 있습니다.
명확한 지침 제공
원하는 항목을 Azure OpenAI 모델에 명확하게 묻는 것은 원하는 결과를 얻는 한 방법입니다. 모델이 가능한 한 설명적일 경우 원하는 것과 가장 일치하는 응답을 생성할 수 있습니다.
예를 들어 새 물병에 대한 제품 설명을 만들려는 경우를 가정해 봅시다. 각 프롬프트와 관련된 답변을 고려합니다.
프롬프트
Write a product description for a new water bottle
응답
Introducing the latest addition to our product line - the innovative and eco-friendly water bottle.
Made from high-quality, BPA-free materials, this bottle is designed to keep your beverages at the
perfect temperature for hours. Its sleek and stylish design makes it the perfect accessory for any
outdoor activity or workout session. With its convenient carrying handle and leak-proof lid, you
can take it with you wherever you go, without worrying about spills or leaks. Plus, its easy-to-clean
design ensures that you can use it again and again, making it the perfect choice for anyone looking
for a reliable and sustainable water bottle.
명확한 지침이 있는 유사한 프롬프트와 비교합니다.
프롬프트
Write a product description for a new water bottle that is 100% recycled. Be sure to include that
it comes in natural colors with no dyes, and each purchase removes 10 pounds of plastic from our
oceans
응답
Introducing our newest water bottle, the eco-friendly choice for the conscious consumer. Made from
100% recycled materials and available in natural colors with no dyes, this bottle is not only
stylish but also sustainable. Each purchase of this bottle removes 10 pounds of plastic from
our oceans, making it a responsible choice for those who care about the environment. Its durable
and leak-proof design makes it perfect for outdoor activities, while its easy-to-carry handle
makes it convenient to take on the go. Join us in our mission to reduce plastic waste and choose
this eco-friendly water bottle for your daily hydration needs.
포함해야 하는 세부 정보를 포함하면 모델이 설명에 추가할 정보를 알 수 있으므로 신제품에 대한 정확도가 높아집니다.
이 메서드는 포함할 세부 정보의 글머리 기호 목록, 응답 길이 또는 출력에 포함할 원하는 형식과 같은 복잡한 지침을 포함하도록 추정할 수 있습니다. 결과에 표시할 내용을 정확하게 요청하면 모델이 여러분의 요청을 얼마나 잘 충족하는지에 놀랄지도 모릅니다.
지침 형식
명령의 형식을 지정하는 방법은 모델이 프롬프트를 해석하는 방법에 영향을 미칠 수 있습니다. 회신 편향은 프롬프트 끝에 있는 정보가 시작 부분의 정보보다 출력에 더 많은 영향을 줄 수 있는 모델에 영향을 줄 수 있습니다. 프롬프트 끝에 있는 지침을 반복하고 생성된 응답에 미치는 영향을 평가하여 더 나은 응답을 얻을 수 있습니다.
이러한 회신 편향은 채팅 시나리오에서 ChatCompletion
을(를) 사용할 때 발생할 수도 있습니다. 여기서 프롬프트에 포함된 대화의 최신 메시지는 응답에 더 큰 영향을 줍니다.
기본, 보조, 그라운딩 콘텐츠
응답에 사용할 모델의 콘텐츠를 포함하면 모델이 더 정확하게 응답할 수 있습니다. 이 콘텐츠는 기본 콘텐츠와 지원 콘텐츠의 두 가지 방법으로 생각해 볼 수 있습니다.
기본 콘텐츠는 번역할 문장 또는 요약할 문서와 같이 쿼리의 주제인 콘텐츠를 나타냅니다. 이 콘텐츠는 프롬프트의 시작 또는 끝에 포함되는 경우가 많으며(명령으로 블록별로 ---
구분됨), 이를 사용하여 수행할 작업을 설명하는 지침이 포함되어 있습니다.
예를 들어 요약할 긴 문서가 있다고 가정해 봅시다. 프롬프트의 ---
블록에 넣은 다음 명령으로 끝날 수 있습니다.
---
<insert full article here, as primary content>
---
Summarize this article and identify three takeaways in a bulleted list
콘텐츠 지원은 응답을 변경할 수 있지만 프롬프트의 포커스 또는 주제가 아닌 콘텐츠입니다. 지원 콘텐츠의 예로는 이름, 기본 설정, 응답에 포함할 이후 날짜 등이 있습니다. 지원 콘텐츠를 제공하면 모델이 보다 완전하고 정확하게 응답하며 원하는 정보를 포함할 가능성이 높아질 수 있습니다.
예를 들어 매우 긴 홍보용 이메일이 제공되면 모델은 주요 정보를 추출할 수 있습니다. 그런 다음, 원하는 특정 항목을 지정하는 지원 콘텐츠를 프롬프트에 추가하면 모델이 더 유용한 응답을 제공할 수 있습니다. 이 경우 이메일은 기본 콘텐츠이며, 관심 있는 내용을 지원 콘텐츠로 지정합니다
---
<insert full email here, as primary content>
---
<the next line is the supporting content>
Topics I'm very interested in: AI, webinar dates, submission deadlines
Extract the key points from the above email, and put them in a bulleted list:
그라운딩 콘텐츠를 사용하면 모델이 답변을 그릴 수 있는 콘텐츠를 제공하여 신뢰할 수 있는 답변을 제공할 수 있습니다. 그라운딩 콘텐츠는 모델이 학습된 데이터보다 최근 정보 또는 회사 FAQ 문서 또는 질문형 에세이 또는 기사일 수 있습니다. 더 안정적이고 최신인 응답이 필요하거나 게시되지 않은 정보 또는 특정 정보를 참조해야 하는 경우 그라운딩 콘텐츠를 사용하는 것이 좋습니다.
그라운딩 콘텐츠는 요약 또는 번역과 같은 항목에 대해 작동하는 콘텐츠 대신 프롬프트 쿼리에 응답하는 정보의 원본이므로 기본 콘텐츠와 다릅니다. 예를 들어 AI의 역사에 대한 게시되지 않은 연구 논문을 제공하면 해당 그라운딩 콘텐츠를 사용하여 질문에 대답할 수 있습니다.
---
<insert unpublished paper on the history of AI here, as grounding content>
---
Where and when did the field of AI start?
그라운딩 데이터를 사용하면 모델이 학습된 데이터 세트의 일부가 아닐 수 있는 보다 정확하고 정보에 입각한 답변을 제공할 수 있습니다.
큐
큐는 모델이 빌드할 수 있는 선행 단어이며, 종종 올바른 방향으로 응답을 형성하는 데 도움이 됩니다. 지침과 함께 사용되는 경우가 많지만 항상 그런 것은 아닙니다. 큐는 코드 생성을 위해 모델을 요청하는 경우에 특히 유용합니다. 코드 생성은 후속 단원에서 더 자세히 설명합니다.