Blog logo콜로리 블로그
개발 > 데이터
1달 전

생성형 AI에게 정체성을 부여해주는 프롬프트 엔지니어링

Post thumbnailImage

똑똑한 생성형 AI를 만드는데 필수로 알아야할 프롬프트 엔지니어링(Prompt engineering)에 대해 알아보자.


예를들어 LLM을 이용해 음식 레시피를 알려주는 생성형 AI 서비스를 만든다고 가정해보자.


서비스의 이름은 '레시피 봇' 으로 정했고 채팅앱을 만들어서 사용자에게 질문을 받기로 했다.

사용자가 '된장찌개' 라고 음식 이름을 입력하면 조리하는데 필요한 재료와 조리 방법을 순서대로 알려주면 된다.


그래서 열심히 개발해 채팅 클라이언트앱을 만들고 LLM과 통신까지 구현했다.

그런데 막상 '된장찌개' 라고 입력 받으니 된장찌개의 조리법이 아니라 된장찌개가 어떤 나라의 음식인지를 설명하는 것이다.


물론 '된장찌개 레시피' 혹은 '된장찌개 조리 방법 알려줘' 와 같이 질문을 했다면 제대로 답변을 했을 것이다.

하지만 설명을 위해 예시를 들고 있으니 우리는 음식 이름만 입력하면 레시피를 알려주는게 목적임을 다시 강조하겠다.


그래서 이제 프롬프트 엔지니어링이 등장한다.

ChatGPT가 음식명만 입력했을때 조리 방법(레시피)만 답변하도록 하려면 답변을 어떻게 할 것인지 지시를 해주면 된다.



프롬프트 엔지니어링 예시

  • 사용자가 입력한 음식에 대해 필요한 재료와 조리 방법을 순서대로 답변해준다.
  • 음식의 배경 역사나 설명은 생략한다.
  • 음식명이 아닌 입력값을 받은 경우 '잘못된 요청' 이라고 응답을 해준다.
  • 추측에 의해 답변하지 않는다.


이런식으로 LLM에게 지시를 해주면 원하는 기대결과값을 얻는데 한걸음 가까워지게 된다.

입력한 예시로 실제 프롬프트 처리를 해서 답변을 얻어보진 못했지만 아마도 유사하게 답변을 해줄 것으로 경험을 통해 예상하고 있다.




예시를 통해 프롬프트 엔지니어링 개념에 대해 알아봤다.

간단하게 한줄로 표현하면 'LLM에게 가이드라인을 제공' 하는 것이 핵심이다.



사용하는 LLM 모델의 특성과 사용 목적 등 상황에 따라 100% 기대한 결과를 얻지 못할 수 있다.

프롬프트 엔지니어링은 기대 결과에 올바르게 답변하기 위한 목적이 맞지만 만능은 아니기 때문이다.


그렇지만 목적에 맞는 답변이 가까워질때까지 반복을 통해 프롬프트 내용을 개선해나간다면 프롬프트 엔지니어링을 사용하기 전/후와 비교하면 상당한 양질의 결과를 얻을 수 있을 것이다.


참고로 ChatGPT에서 'Explore GPTs' 에서 볼 수 있는 앱들도 프롬프트 엔지니어링을 이용해 만들어졌다고 보면 된다.

#LLM#Generative AI#Prompt engineering