brunch

매거진 AI 봇

You can make anything
by writing

C.S.Lewis

by 젠틀파이 제이미 Jul 24. 2023

나도 할수 있다! 프롬프트 엔지니어링 (2/2)

프롬프트엔지니어링, 젠틀파이, LLM, 챗봇, GPT, 챗GPT

이 포스팅은 나도 할수 있다! 챗GPT 프롬프트 엔지니어링(1/2)에 이어진 글입니다. 


이전 포스팅에서는 GPT의 준비 과정(환경 접속 및 설정)과 효과적인 지시를 내리는 방법에 대해(원칙 1번) 다뤘다. 이번에는 한 단계 더 나아가 프롬프트 엔지니어링의 두번째 원칙, '연쇄 사고'(Chain of thought)평가환영(hallucination), 세 가지에 대해 살펴보도록 하겠다. 


4) 프롬프팅의 원칙

* 원칙1 : 구체적으로 지시한다 (이전 포스팅)

* 원칙2 : 업무완수를 위한 중간 과정을 지시한다

인간도 조금 복잡한 문제를 풀 때는 몇 단계로 나눠서 문제를 해결하는 것처럼, GPT도 복잡한 문제를 풀 때는 생각할 시간을 줘야 한다. 복잡한 문제를 단순하게 시키면 오류가 많아질 수 밖에 없다. (보통 생각의 순서를 알려준다)


Tactic: 연쇄 사고(Chain-of-Thought)

수학을 가르치는 상황에서 아이에게 문제 해결 과정을 상세히 설명하면, 아이는 이해를 바탕으로 스스로 정답을 이끌어 낼 수 있게 된다. 이와 비슷하게, 연쇄 사고(chain of thought)는 한 번에 답변을 얻는 것이 아니라 답변에 도달하는 과정을 알려주는 것을 목표로 한다. 이는 AI에게 작업과 추론과정을 포함한 답변예시를 본 질문에 앞서 미리 제공하는 기법이다. 


아래처럼 백설공주의 예문을 주고 사람이 몇명 등장하냐고 했더니, 몇 명인지 답을 말하지 않고 등장인물을 나열했다.

숫자로 대답하지 않고 답을 나열함


이럴때는 단계별로 해야할 일을 알려주자. 첫번째 단계에는 이것을 수행하고, 두번째 단계에는 저것을 수행하라고 신입직원에게 디렉션을 주듯 해본다. 


제일 먼저, 등장하는 인물의 이름을 먼저 추출해.

그런 다음, 그 이름의 갯수를 세어서 답해줘.

문제 해결 단계를 나눠 제공

정답을 도출하기 위한 과정을  한 단계만 더 포함했는데도, gpt는 정답 11명을 도출해 냈다. 


위의 예시처럼 간단하게도 가능하지만, 아래의 예시처럼 단계를 더 세분화해서 시키면 업무를 더 실수없이 처리한다. (다양하게 시도해봐서 최적의 과정을 도출하는 것이 좋다. 정답이 없다)


[예시]  

Step1: 고객의 조건에 맞는 상품을 5개 정도 추천하라.
Step2: 추천한 상품이 첨부된 상품 리스트에 있는지 확인하라. 만약에 리스트에 없다면 추천할 상품이 없다고 대답하라. 
Step3: 추천한 이유를 3문장 내로 설명하라.
Step4: 할인율이 가장 큰 것을 최상위에 배치하라. 
Step5: 추천한 상품에서 다음의 항목을 답변하되, Json 형식으로 대답하라. 

* 상품명: 
* 상품ID:
* 할인율: 
* 추천이유:  


문제 해결 단계를 제공하는 이유는 여러가지가 있다. 우선 GPT가 도출한 답변의 오류를 줄일 수 있다. 그리고 어쩌면 더 중요한 이유, 또 어느 단계에서 GPT가 오류를 내는 지 우리가 파악할 수 있다. 어느 단계에서 오류가 나는지를 알수 있다면, 중간 단계에 사람이 개입하도록 설계하든지, GPT에게 단계를 나눠서 개별 단계별로 업무를 지시한다든지 하면서 빠르게 대안을 찾을 수 있다. (진행중인 작업의 중간 결과물은 따로 관리하도록 설계, GPT는 각 단계에 필요한 지시사항과 정보만 prompt에 넣는 방법 고려할 수도 있겠다.)



5) 평가(아웃풋 검사)


Tactic 1: 위험표현 감지

엉뚱한 답은 그나마 웃으면서 넘겨줄수도 있다. 그러나, 사용자의 성적 발언이나 폭력적인 발언, 증오, 위협 에 부적절한 답을 하면 어떡하나도 고민이다. 이 때 오픈AI가 제공하는 모더레이션 API을 활용해 보자. 사용의 위험한 의도를 판별해 줌으로써, 불편한 상황에 닥쳤을 때 운영자가 대응할 수 있게 해준다. 아래에서는 '범죄를 저지를 방법을 알려줘'라고 사용자가 물었을 때, 모더레이션 API를 통해 위험을 인지한 결과다. 위험도 중 Violence가 0.99276286으로 높게 나온것을 볼 수 있다. 이렇듯 API를 통해 인지케 하고, 대응은 각 기업의 기준에 맞게 대응 메시지가 나가도록 프롬프팅 한다. 

오픈 AI의 모더레이션 API 활용 결과 - Violence : 0.99276286 이 높은 것을 확인할 수 있다.


Tactic 2: 결론에 이르기전에 제대로 수행했는지 자체 검사 요청하기

GPT가 답변을 내는 데 이상한 답변이 자주 발생한다면 셀프 검열, 즉, GPT에게 직접 자기 답변을 평가하게 할 수 있다. 

아래 중간의 질문처럼 답변을 낼때 검색정보를 제대로 활용하고 있는지, 질문에 대한 답이 충분히 되었는지 판별시키기는 작업을 수행해 볼 수 있다. 

GPT에게 답변을 내게 하고, 그 답변이 주어진 정보내에서 답변했는지 재확인시킴

다만, GPT-4 같은 최신 모델은 굳이 이런류의 검증이 필요없고, 레이턴시와 비용을 고려해 필요한 경우만 포함시키도록 한다. 



6) Hallucinations (환각)

Hallucinations (환각)은 실제 존재하지 않는 것을 존재하는듯이 말하는 것이다. 이를 줄이기 위한 방법을 프롬프트 엔지니어링을 포함해서 알아기로 한다.


Tactic 1: 프롬프트 엔지니어링

- 사실 확인 명령 : AI에게 사실을 확인하도록 요청하는 프롬프트를 사용할 수 있다. 앞에서 언급한, 5)평가 에서처럼 "제공된 정보 안에서 답했는지 확인해달라" 혹은 "현재 알려진 정보를 기반으로 답변하고, 알려진 정보가 없다면 모른다고 답해라"와 같은 프롬프트는 AI가 정확한 정보만을 제공하도록 유도할 수 있다.

- 구체적이고 명확한 프롬프트 사용: 프롬프트가 모호하면 AI는 여러 방향으로 해석하고, 그에 따라 예상치 못한 결과를 생성할 수 있다. 따라서, 가능한 한 구체적이고 명확한 프롬프트를 사용하는 것이 좋다. " 해리포터 영화에 대해 어떻게 생각하나?" 보다는 "해리포터의 줄거리와 캐릭터의 관계성에 대해 어떻게 생각하나?"와 같이 더 구체적인 프롬프트를 사용하는 것이 좋다. 


Tactic 2: Temperature 설정

높은 Temperature 값을 사용하면 모델의 출력이 더 다양해지고 환영이 발생하기 쉽다. Temperature 값을 O에 가깝게 사용하여 모델의 출력을 더 예측 가능하고 정확하게 만들 수 있다. 


위에 언급한 몇가지 방법들은 환각 현상을 관리하는데 도움이 될 수 있지만 완전 제거는 어렵다. 프롬프트 엔지니어링은 여전히 실험적인 과정이며 알려진 큰 범위에서의 가이드 이외에 절대적인 법칙이 없다. 프롬프트엔지니어링 전문가들이 한목소리로 말한다. 다양한 접근 방법과 프롬프트를 시도하고 그 결과를 평가함으로써 최적의 방법을 찾아내는 것이 중요하다고. 그렇기 때문에, 레퍼런스가 될 프롬프트를 자산화도 하고 내재화하는 한편, 서로 공유하는 기회가 있었으면 한다.




안녕하세요. 저는 젠틀파이 대표 제이미입니다.

좋아요를 눌러주시면, 다음글을 빨리 쓸 기운이 솟아납니다! 

다음글은 챗GPT로 서비스 만들기 입니다. 

챗GPT와 AI 챗봇 소식을 계속 보고 싶으시다면, 페이스북 챗봇 그룹이나 브런치를 구독해주세요.  





참고 사이트: 프롬프트 베이스Prompt Base (프롬프트를 사고 팔수 있는 마켓 플레이스)

참고 사이트Prompt Engineering Guide 와 ChatGPT Prompt Engineering for Developers 

두 사이트에 직접 들어가보고, 함께 실전수업을 꼭 해보시길!!




AI 애플리케이션 플래닝그룹, 젠틀파이는 텍스트봇, 음성봇, 스마트 디스플레이 등 다양한 챗봇을 제작하고 컨설팅하는 전문 그룹입니다.

프리미엄 통계 서비스 코코너티브를 적용하고 싶으시거나

챗GPT봇을 구축하고 싶으신 분들, GPT 적용 시 프롬프트 엔지니어링이 필요하신 분들은 젠틀파이 hello@gentlepie.com에 연락 주세요.   



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari