본문 바로가기
챗지피티 학습

OpenAI사가 제시한 프롬프트 엔지니어링 8가지 팁

by 프롬프트엔지니어 2024. 8. 10.

안녕하세요, AI 애호가 여러분! 오늘은 챗지피티를 사용할 때 꼭 알아야 할 프롬프트 엔지니어링 비법을 공유하려고 합니다. 이 비법은 오픈AI의 General FAQ에 있는 내용을 번역한 글 입니다. 이 팁들을 마스터하면 여러분의 AI 프로젝트가 한 단계 업그레이드될 거예요. 자, 시작해볼까요?

 

링크: https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api

 

1. 최신 모델로 시작하세요

AI 세계는 빠르게 진화하고 있죠. OpenAI도 계속해서 새로운 모델을 출시하고 있습니다. 최신 모델을 사용하면 더 나은 성능과 더 쉬운 프롬프트 엔지니어링을 경험할 수 있어요. 항상 OpenAI의 최신 업데이트를 체크하는 것이 좋습니다. 실제로 이전 버전에서는 few shot 프롬프팅으로 해결했던 문제들을 모델 버전이 업그레이드 되면서 해결되는 경우들을 종종 경험할 수 있습니다. 

 

2. 명확한 지시로 시작하세요

AI에게 무언가를 요청할 때는 명확해야 합니다. 프롬프트의 시작 부분에 지시사항을 넣고, `###` 또는 `"""`를 사용해 지시사항과 컨텍스트를 분리하세요. 예를 들면 이렇게요:

 

(덜 효과적인 프롬프트) -----------------------------------------------------------------------------

아래 텍스트를 요약해주세요. 중요한 포인트만 뽑아 글머리 기호로 정리해 주세요.

광합성은 식물과 다른 생물체가 빛 에너지를 화학 에너지로 전환하는 과정입니다. 이 과정은 지구상 대부분 생명체의 생존에 필수적입니다. 광합성은 엽록체에서 일어나며, 이는 대부분의 식물 세포에서 발견됩니다. 과정은 두 단계로 나뉩니다: 명반응과 암반응(캘빈 회로)입니다. 명반응에서는 빛 에너지가 포착되어 ATP와 NADPH를 생성합니다. 암반응에서는 이 에너지 분자들이 이산화탄소를 포도당으로 전환하는 데 사용됩니다. 이 과정의 부산물로 산소가 생성되며, 이는 대기로 방출됩니다. 광합성은 지구의 대기에 산소를 공급하고, 식물과 조류를 통해 거의 모든 생태계의 기반을 형성합니다.
```
아래 텍스트를 요약해주세요. 중요한 포인트만 뽑아 글머리 기호로 정리해 주세요.

 

(더 효과적인 프롬프트) -----------------------------------------------------------------------------

아래 텍스트를 요약해주세요. 중요한 포인트만 뽑아 글머리 기호로 정리해 주세요.

 

텍스트: """

{광합성은 식물과 다른 생물체가 빛 에너지를 화학 에너지로 전환하는 과정입니다. 이 과정은 지구상 대부분 생명체의 생존에 필수적입니다. 광합성은 엽록체에서 일어나며, 이는 대부분의 식물 세포에서 발견됩니다. 과정은 두 단계로 나뉩니다: 명반응과 암반응(캘빈 회로)입니다. 명반응에서는 빛 에너지가 포착되어 ATP와 NADPH를 생성합니다. 암반응에서는 이 에너지 분자들이 이산화탄소를 포도당으로 전환하는 데 사용됩니다. 이 과정의 부산물로 산소가 생성되며, 이는 대기로 방출됩니다. 광합성은 지구의 대기에 산소를 공급하고, 식물과 조류를 통해 거의 모든 생태계의 기반을 형성합니다.}

"""

 

이렇게 하면 AI가 여러분의 요청을 더 정확하게 이해할 수 있습니다.

 

3. 상세함이 핵심입니다

AI는 마법사가 아닙니다. 여러분이 원하는 것을 정확히 알려주어야 해요. 컨텍스트, 원하는 결과물, 길이, 형식, 스타일 등을 구체적으로 명시하세요. 

 

(덜 효과적인 프롬프트) -----------------------------------------------------------------------------

아래 프롬프트는 사용자가 원하는 컨텍스트를 전혀 표현하지 않은 경우입니다. 

  • 지시: OpenAI사에 대한 시를 써 주세요.
  • 컨텍스트: 없음
  • 스타일: 없음

 

 

(더 효과적인 프롬프트) -----------------------------------------------------------------------------

아래 프롬프트는 사용자가 원하는

  • 지시: OpenAI사에 대한 시를 써 주세요.
  • 컨텍스트: DALL-E 출시에 초점을 맞춘
  • 길이: 영감을 주는 짧은 시, 4행
  • 스타일: 윌리엄 워즈워스의 스타일

 

4. 출력 형식을 예시로 보여주세요

AI에게 특정 형식의 출력을 원한다면, 그 형식을 직접 보여주는 것이 가장 효과적입니다. 예를 들어, 텍스트에서 원하는 내용들을 정확하게 추출하고 싶다면 '더 효과적인 프롬프트' 처럼 해보세요. 이렇게 하면 AI가 여러분이 원하는 정확한 형식으로 결과를 제공할 확률이 높아집니다.

 

(덜 효과적인 프롬프트) -----------------------------------------------------------------------------

 

 

 

(더 효과적인 프롬프트) -----------------------------------------------------------------------------


5. 단계적 접근: 제로샷, 퓨샷, 파인튜닝

AI에게 새로운 작업을 요청할 때는 단계적으로 접근하세요. 먼저 예시 없이 요청해보고(제로샷), 그다음 몇 가지 예시를 제공해보세요(퓨샷). 둘 다 만족스럽지 않다면, 모델을 파인튜닝하는 것을 고려해보세요.

 

(제로샷 프롬프팅) -----------------------------------------------------------------------------

아무런 예시 없이 챗지피티에게 프롬프팅을 했습니다. 이를 제로샷 프롬프팅이라고 하지요. 챗지피티가 이미 키워드 추출을 학습했다고 가정하고 예시 없이 프롬프팅을 하는 것입니다. 

 



(퓨샷 프롬프팅) -----------------------------------------------------------------------------

챗지피티에게 두 개의 예시를 주는 프롬프팅을 했습니다. 챗지피티에게 두번 이상의 예시를 제공해서 훈련을 시키는 것을 퓨샷 프롬프팅이라고 합니다. 제로샷 프롬프팅을 했을 때 챗지피티가 제대로 답변을 하지 못할 경우 활용하는 방법입니다. 

퓨삿 프롬프팅도 효과가 없는 경우 'Fine-tune'을 해야 합니다. 아래 링크를 참고하세요.

https://platform.openai.com/docs/guides/fine-tuning


6. 명확성은 힘이다

"약간", "적당히" 같은 모호한 표현은 피하세요. 대신 구체적인 숫자나 기준을 제시하세요. "짧은 설명을 해주세요"보다는 "3-5문장으로 설명해주세요"가 더 좋습니다.

 

7. 긍정적 지시를 사용하세요

AI에게 "이렇게 하지 마세요"라고 말하는 대신, "이렇게 해주세요"라고 말하는 것이 더 효과적입니다. 예를 들어, "비밀번호를 묻지 마세요"보다는 "사용자의 개인정보 보호를 위해 로그인 문제는 고객 지원 페이지로 안내해주세요"라고 하는 것이 좋습니다.

 

두 프롬프트에 대해 챗지피티에게 어떤 차이가 있는지 물어보았습니다. 프롬프팅 방법에 따라 어떤 차이가 발생했는지 챗지피티의 답변을 참고하세요. 

 

8. 코드 생성 시 힌트를 주세요

코드를 생성할 때는 시작 부분에 힌트를 주는 것이 도움이 됩니다. 예를 들어, Python 코드를 원한다면 "import"로 시작하는 것이 좋습니다. SQL 쿼리를 원한다면 "SELECT"로 시작하세요. 확인 결과 현재 모델은 import를 추가하거나 뺀 경우 차이는 없었습니다. 

 

(덜 효과적인 프롬프트) -----------------------------------------------------------------------------

이 경우 챗지피티가 Python 코드를 작성

 

(더 효과적인 프롬프트) -----------------------------------------------------------------------------

프롬프트 마지막에 'import'를 추가 하여 챗지피티에게 Python 코드를 작성하도록 유도 했습니다. 

 

사실 두 방법 다 테스트를 해 봤습니다. 

 

("import"를 적지 않은 경우) -----------------------------------------------------------------------------

 

("import"를 적은 경우) -----------------------------------------------------------------------------

 

두 케이스  모두 구글 코렙에서 실행해 보았습니다. 차이는 없군요... 어쩌면 모델 업그레이드가 차이를 없앴을 수도 있습니다. 


마치며

프롬프트 엔지니어링은 실험과 연습이 필요한 기술입니다. 이 팁들을 기억하고 계속해서 다양한 방식으로 시도해보세요. 여러분만의 효과적인 프롬프트 스타일을 개발하게 될 거예요.

만약 챗지피티가 아니라 OpenAI의 API를 사용하실 때는 꼭 모델(model)과 온도(temperature) 파라미터도 실험해보세요. 모델은 성능과 비용의 균형을, 온도는 창의성과 정확성의 균형을 조절합니다. 대부분의 사실 기반 작업에는 온도 0이 좋습니다.

이제 여러분은 프롬프트 엔지니어링의 달인이 되실 준비가 되었습니다! 이 팁들을 활용해 AI의 힘을 최대한 끌어내보세요. 질문이나 공유하고 싶은 경험이 있다면 댓글로 알려주세요. 함께 배우고 성장합시다!