프롬프트 엔지니어링(Prompt Engineering)?

- chatGPT 프롬프트 작성 가이드



프롬프트 엔지니어링이란 게 생겨났습니다. 네, 배워야 할 것이 늘었습니다.
chatGPT로 많은 걸 할 수 있다는데... 막상 써보면 엉뚱한 결과를 내 놓기 일쑤죠.
특히 무료버전인 chatGPT3.5는 최근 자료는 포함하고 있지 않아 더욱 그렇습니다. 가끔 뻔뻔한 거짓말도 하고요.

chatGPT Fail
아니야~ 이거 아니야.

 

 

아니라고 이좌식아!



이런 chatGPT를 효과적으로 사용하기 위해 약간의 프롬프트 엔지니어링 지식을 습득하고 있으면 도움이 됩니다.

프롬프트 엔지니어링을 간단하게 말하면 언어모델(LM)을 효율적으로 사용하기 위한 프롬프트 작성 기술이라고 볼 수 있겠습니다.

원래의 목적은 LM기반의 서비스, 또는 어플리케이션을 개발할 때 모델과 상호작용하는 효율적이고 안정적인 인터페이스의 구축을 위한 프롬프트의 설계기술이이지만 그것은 개발자들의 이야기.
일반인들에 있어 필요한 것은 chatGPT 같은 언어모델 기반의 챗봇이나 여타 A.I. 서비스에서 꽤 괜찮은 답변을 끌어내기 위한 입력 요령 정도이지 않겠습니까. 마침 DAIR.ai에서 프롬프트엔지니어링에 관한 내용을 잘 정리해놓은 웹사이트가 있어 소개를 드리며 간단히 맛보기 해 보려고 합니다. 그 이외에도 몇가지 출처가 불분명한 문서를 참고했습니다. 즉 전문성이 떨어진다는 말씀이죠. 더 전문적이고 깊게 이해하고 싶으신 분들은 아래의 링크를 클릭해주세요.

 

https://www.DAIR.ai

<https://www.promptingguide.ai>

 

DAIR.AI

Democratizing Artificial Intelligence Research, Education, and Technologies

dair.ai

 


우선 프롬프트 엔지니어링을 이해하기 위해 알면 좋은 것들 몇 가지입니다. 전문적이고 학술적인 내용은 개나 줘버리고 간단하게 이해해봅시다.

1. chatGPT와 같은 LM의 반응을 결정하는 두 가지 파라미터 Temperature, Top-p

Temperature는 언어모델의 자유도를 결정하는 요소입니다. 다음 문장을 완성시킨다고 가정했을 때,
“저 산속에 ______”
나무, 풀, 꽃, 짐승... 산 속에는 별의별 것들이 다 있죠. 하지만
“고양이가 의자위에 ____”
이런 문장에는 ‘자고 있다’, ‘앉아 있다’ 등등 몇 가지 가능한 서술어로 압축될 수 있습니다.
이런 경우 온도가 낮다(low temperature)라고 합니다. 반대로 위의 경우 온도가 높다고 할 수 있겠죠. 온도(temperature)는 0에서 무한대까지의 범위로 언어모델의 자유도를 결정합니다.

"Top-p"는 '상위 k개의 예측값'이라는 의미입니다. 
Top-p 샘플링은 자연어 생성 모델에서 다음 단어를 예측하기 위해 사용됩니다. 모델은 이전 단어들의 정보를 기반으로 다음 단어를 예측하는데, 이 예측값들 중 가능성이 높은 단어들을 선택하는 방식입니다. 이를 통해 답변의 정확도를 높입니다. 반대로 말하면 프롬프트에 불필요한 단어, 또는 주제와 관계가 없는 단어가 많으면 예측정확도가 떨어지고 동문서답의 가능성이 더 커지겠죠.

프롬프트를 구성하는 요소(Elements)

프롬프트는 다음과 같은 구성 요소로 되어있습니다. 각 구성요소는 프롬프트에서 구별될 수 있도록 줄바꿈이나 접두 기호를 사용하면 더 좋다고 합니다.

Instruction:  지시어 - “아래의 내용을 요약해줘.” 등등
Context: 맥락정보(저의 주관적 해석) - 미리 원하는 맥락의 내용을 프롬프트에 적어서 일관성을 유지시키는 것.
Input Data: 해석, 축약, 정보추출 등을 할 문장이나 기사, 또는 데이터
Output Indicator: 출력해야할 내용의 형식을 결정해주는 명령

이를 바탕으로 promptingguide.ai에서 권하는 좋은 프롬프팅을 위한 충고는 아래와 같습니다

1. 단순하고 간결하게 시작하라
2. 명령문(Instruction)은 프롬프트의 시작 부분에
3. 예문을 제시해서 원하는 답과 형식을 특정시켜라
4. 모호하기 않게
5. 해야할 것과 하지 않아야 할 것을 제시하라

위의 요소들을 상기해가면서 예제를 보도록 하죠.

프롬프트 예제

정보 추출하기, 요약하기

2023년 5월 3일자 뉴스엔 인터넷기사에서 정보를 추출합니다.


5월3일 송도에 뉴진스 뜸!


명령어를 먼저 쓰는 것이 좋다고 했는데 이 정도에서는 아래에 써도 별 상관이 없는 것 같군요.


분류

 

식당 이용자의 리뷰를 긍정, 부정, 중립으로 구분해봅시다.


이건 좋은 것도 나쁜 것도 아닌 "애매한맛"집



긍정(Positive), 부정(Negative), 중립(Neutral)로 문장을 분류하는 것은 전통적인 언어모델의 목표였죠. 만약 새로 개봉한 영화의 반응을 지표화 하고 싶다면 관객들이 준 별점을 참고할 수도 있겠지만 영화정보의 댓글들을 스크래핑해서 이 영화를 본 사람들의 반응이 긍정적인지 부정적인지 알 수 있을 것입니다.


역할극(대화, 토론)

언어모델에 역할을 부여해서 대화하는 상황을 만들 수 있습니다. 이를 이용해서 개발자들은 콜센터의 자동응답기능을 만들거나 하지만 우리같은 일반인들에게는 별로 무용한 기능이라 생각했는데...
요즘 이런 역할놀이를 바탕으로 외국어 공부를 하는 컨텐츠들이 생기더라고요. 예를 들면 공항에서의 상황, 음식점에서 주문하기 등등.

자체 제작 영어교재~



이때 A.I.의 언어 수준이나 말투 등을 지정할 수도 있습니다.



수의사가 좀 더 쉽게 말할 수 있도록 조정



이게 쉽냐?

후... 넌 아직 멀었다.



흠... 아직 멀었군요. 

결론

 

언어모델에 따라 다르고 사용자에 따라 다른 프롬프트 사용 방식이 있겠지만 위에 열거한 요소들을 기억해놓는다면 chatGPT나 앞으로 나올 LLM 기반 서비스에 적응해서 100% 활용할 수 있는 날이 오겠죠?

promptingguide.ai에는 좀 더 기술적인 이야기와 프롬프팅 테크닉에 대한 내용도 있으니 궁금하신 분들은 참고해보셔도 좋을 것 같습니다. 프롬프팅 기술은 제가 공부해보고 개발자가 아닌 우리 같은 일반인에게도 유용할 것 같다고 생각되면 포스팅으로 올리도록 하겠습니다.

이상입니다.
끝.

반응형

+ Recent posts