프롬프트 엔지니어링은 어떻게 작동하나요
OpenAI 모델이 학습되는 방식 때문에, 특히 잘 작동하며 더 유용한 모델 출력으로 이어지는 특정 프롬프트 형식이 있습니다.
프롬프트 작성 팁을 찾기에는 보통 OpenAI의 공식 프롬프트 엔지니어링 가이드가 가장 좋은 시작점입니다.
아래에서는 저희가 효과적이라고 판단한 여러 프롬프트 형식을 소개하지만, 작업에 더 잘 맞는 다른 형식도 자유롭게 시도해 보세요.
경험칙과 예시
참고: "{text input here}"는 실제 텍스트/컨텍스트를 대신하는 자리표시자입니다
1. 최신 모델 사용
최상의 결과를 위해 일반적으로는 가장 최신이면서 성능이 뛰어난 모델을 사용하길 권장합니다. 최신 모델일수록 프롬프트 엔지니어링이 더 쉬운 경향이 있습니다.
참고: 추론(reasoing) 모델을 프롬프트할 때와 GPT 모델을 프롬프트할 때 고려해야 할 차이가 있습니다. 자세한 내용은 여기를 참고하세요.
2. 프롬프트 시작 부분에 지시를 두고 ### 또는 """로 지시와 컨텍스트를 구분하기
덜 효과적 ❌:
아래 텍스트를 가장 중요한 요점만 불릿 목록으로 요약하세요.
{text input here}더 좋음 ✅:
아래 텍스트를 가장 중요한 요점만 불릿 목록으로 요약하세요.
Text: """
{text input here}
"""3. 원하는 컨텍스트, 결과, 길이, 형식, 스타일 등을 가능한 한 구체적이고 설명적으로, 자세히 작성하기
컨텍스트, 결과, 길이, 형식, 스타일 등에 대해 구체적으로 작성하세요
덜 효과적 ❌:
OpenAI에 대한 시를 써 주세요. 더 좋음 ✅:
최근 DALL-E 제품 출시(DALL-E는 텍스트-이미지 머신러닝 모델)에 초점을 맞춰, {famous poet} 스타일로 OpenAI에 대한 짧고 영감을 주는 시를 써 주세요.4. 예시를 통해 원하는 출력 형식을 명확히 하기
덜 효과적 ❌:
아래 텍스트에 언급된 엔터티를 추출하세요. 다음 4가지 엔터티 유형을 추출하세요: 회사명, 사람 이름, 구체적인 주제 및 테마.
Text: {text}보여주고, 말하세요—모델은 구체적인 형식 요구사항을 보여주면 더 잘 반응합니다. 이렇게 하면 여러 출력을 안정적으로 프로그램에서 파싱하기도 더 쉬워집니다.
더 좋음 ✅:
아래 텍스트에 언급된 중요한 엔터티를 추출하세요. 먼저 모든 회사명을 추출하고, 그다음 모든 사람 이름을 추출한 뒤, 내용에 맞는 구체적인 주제를 추출하고, 마지막으로 전반을 아우르는 일반적인 테마를 추출하세요.
Desired format:
Company names: <comma_separated_list_of_company_names>
People names: -||-
Specific topics: -||-
General themes: -||-
Text: {text}5. 제로샷부터 시작해 퓨샷을 시도하고, 둘 다 안 되면 파인튜닝
✅ 제로샷
아래 텍스트에서 키워드를 추출하세요.
Text: {text}
Keywords:✅ 퓨샷 - 예시를 몇 개 제공하기
아래의 해당 텍스트들에서 키워드를 추출하세요.
Text 1: Stripe provides APIs that web developers can use to integrate payment processing into their websites and mobile applications.
Keywords 1: Stripe, payment processing, APIs, web developers, websites, mobile applications
##
Text 2: OpenAI has trained cutting-edge language models that are very good at understanding and generating text. Our API provides access to these models and can be used to solve virtually any task that involves processing language.
Keywords 2: OpenAI, language models, text processing, API.
##
Text 3: {text}
Keywords 3:✅파인튜닝: 파인튜닝 모범 사례는 여기를 참고하세요.
6. ‘두루뭉술한’ 표현과 부정확한 설명 줄이기
덜 효과적 ❌:
이 제품에 대한 설명은 비교적 짧아야 하며, 몇 문장 정도로 너무 길지 않게 작성해 주세요.더 좋음 ✅:
3~5문장 분량의 단락으로 이 제품을 설명해 주세요.7. 하지 말아야 할 것만 말하지 말고, 대신 무엇을 해야 하는지 말하기
덜 효과적 ❌:
다음은 상담원과 고객 간의 대화입니다. 사용자 이름이나 비밀번호를 묻지 마세요. 반복하지 마세요.
Customer: I can’t log in to my account.
Agent:더 좋음 ✅:
다음은 상담원과 고객 간의 대화입니다. 상담원은 문제를 진단하고 해결책을 제안하되, PII와 관련된 질문은 하지 않습니다. 사용자 이름이나 비밀번호 같은 PII를 묻는 대신, 사용자를 도움말 문서 www.samplewebsite.com/help/faq 로 안내하세요.
Customer: I can’t log in to my account.
Agent:8. 코드 생성 전용 - ‘리딩 워드’로 특정 패턴을 유도하기
덜 효과적 ❌:
# 간단한 파이썬 함수를 작성하세요.
# 1. 마일 단위의 숫자를 입력받고
# 2. 마일을 킬로미터로 변환합니다아래 코드 예시에서 “import”를 추가하면 모델에게 Python으로 작성을 시작해야 한다는 힌트를 줍니다. (마찬가지로 SQL 문은 “SELECT”로 시작하도록 유도하는 것이 좋은 힌트입니다.)
더 좋음 ✅:
# 간단한 파이썬 함수를 작성하세요.
# 1. 마일 단위의 숫자를 입력받고
# 2. 마일을 킬로미터로 변환합니다
import9. Generate Anything 기능 사용
개발자는 ‘Generate Anything’ 기능을 사용해 작업이나 기대하는 자연어 출력을 설명하고, 그에 맞춘 프롬프트를 받을 수 있습니다.
‘Generate Anything’ 기능 사용에 대해 자세히 알아보기.
파라미터
일반적으로 모델 출력에 변화를 주기 위해 가장 자주 사용되는 파라미터는 model 과 temperature라고 봅니다.
model- 성능이 높은 모델은 일반적으로 비용이 더 들고 지연 시간이 더 길 수 있습니다.temperature- 모델이 가능성이 더 낮은 토큰을 출력하는 빈도의 척도입니다.temperature가 높을수록 출력은 더 랜덤해지고(대개 더 창의적으로) 됩니다. 하지만 이것은 “진실성”과는 다릅니다. 데이터 추출, 사실 기반 Q&A 등 대부분의 사실 중심 사용 사례에서는temperature를 0으로 두는 것이 가장 좋습니다.max_completion_tokens(최대 길이) - 출력 길이를 제어하는 것이 아니라 토큰 생성의 하드 컷오프 제한입니다. 이상적으로는 이 제한에 자주 걸리지 않는 것이 좋습니다. 모델은 보통 작업이 끝났다고 판단하거나, 사용자가 정의한 중지 시퀀스(stop sequence)에 도달하면 멈춥니다.stop(중지 시퀀스) - 생성되면 텍스트 생성을 중단시키는 문자(토큰)들의 집합입니다.
다른 파라미터 설명은 API 레퍼런스를 참고하세요.
