본문 바로가기

공부방

프롬프트 엔지니어링 7편 | 자동 프롬프트 엔지니어링, 코딩, 멀티모달

딱 한 줄 바꿨을 뿐인데, 답변의 퀄리티가 이렇게 차이난다고? 맞습니다. 똑같은 돈을 내고 AI 모델을 사용하더라도, 어떻게 질문을 하느냐에 따라 얻을 수 있는 결과는 천차만별입니다. 어떻게 하면 AI의 성능을 최대로 끌어내어 정확하고 의미있는 답변을 출력하게 할 수 있을까요? 구글에서 발간한 화제의 백서, “Lee Boonstra의 프롬프트 엔지니어링 백서”를 보면 알 수 있습니다. 원문은 모두 영어로 되어 있는데요. 이번 백서의 내용을 꼼꼼히 공부하고, 직접 실험해보면서 중요한 개념들을 해설하는 시리즈를 기획했습니다. 총 8편에 걸쳐 진행될 예정이며, 구글 백서 원문은 이곳(링크)에서 확인할 수 있습니다. 

[구글 프롬프트 엔지니어링 백서 파헤치기 시리즈]

1편 - LLM의 작동 방식과 config 조정하기
2편 - 일반 프롬프트, 제로샷, 원샷, 퓨샷
3편 - 시스템, 컨텍스트, 역할 프롬프트
4편 - 스텝백 프롬프트
5편 - CoT, 자기 일관성
6편 - ToT, ReAct
7편 - 자동 프롬프트 엔지니어링, 코드, 멀티모달(현재글)
8편(완) - 실제 사례 살펴보기(5월 7일 발행 예정)


 

지난 6편까지 쭉 보신 분들이라면, 프롬프트 작성이 꽤나 복잡한 일이라는 것을 많이 느끼셨을 것입니다. (저도 마찬가지..) 이것도 자동화할 방법은 없을까요? 효과적인 ‘프롬프트를 작성하는’ 프롬프트를 작성하는 것이죠. 프롬프트를 자동으로 만들어주는 프롬프트, 실제로 이런 테크닉도 연구되고 백서 안에 소개되어 있는데요. ‘자동 프롬프트 엔지니어링(Automatic Prompt Engineering, APE)이라고 합니다. APE를 잘 만들기만 한다면 프롬프트를 사람이 직접 많은 것을 입력하지 않아도, 또 작업이 바뀔 때마다 수정하지 않더라도 답변의 퀄리티를 높일 수 있습니다. 

자동 프롬프트 엔지니어링은 크게 3단계로 이뤄집니다. 

출처: 구글 프롬프트 엔지니어링 백서

 

  • 1단계: 메타 프롬프트 작성

먼저 메타 프롬프트(프롬프트를 생성하기 위한 프롬프트)를 작성합니다. 백서에서 사용한 예시에서는 "우리는 밴드 머천다이즈 티셔츠 웹샵을 운영하고 있으며, 챗봇 훈련을 위해 '메탈리카 티셔츠 한 장 S 사이즈'와 같은 주문의 다양한 표현 방식이 필요합니다. 의미는 동일하게 유지하면서 10가지 변형을 생성해주세요."라고 메타 프롬프트를 입력했습니다. 

  • 2단계: 다양한 지시문 후보 생성 및 평가

메타-프롬프트를 사용하여 AI는 10가지 다른 방식으로 티셔츠 주문을 표현했습니다. 

  1. 메탈리카 티셔츠를 스몰 사이즈로 한 장 구매하고 싶습니다.
  2. 스몰 사이즈 메탈리카 티셔츠 한 장을 주문할 수 있을까요?
  3. 스몰 사이즈로 메탈리카 티셔츠 한 장을 사고 싶습니다.
  4. 메탈리카 셔츠 한 장, 스몰 사이즈로 부탁합니다.
  5. 스몰 사이즈 메탈리카 티셔츠 한 장을 원합니다.
  6. 스몰 사이즈 메탈리카 티셔츠 한 장을 주문하고 싶습니다.
  7. 스몰 메탈리카 티셔츠 한 장 부탁드립니다.
  8. 스몰 사이즈 메탈리카 티셔츠 한 장을 찾고 있습니다.
  9. 스몰 사이즈 메탈리카 티셔츠 한 장을 구해주실 수 있나요?
  10. 메탈리카 스몰 티셔츠 한 장 부탁드립니다.

 

여기서 나온 10가지 표현들이 ‘지시문(프롬프트) 후보들’입니다. 메타 프롬프트에서 ‘'메탈리카 티셔츠 한 장 S 사이즈’를 주문하기 위해 쓸 수 있는 프롬프트를 짜달라고 했고, 아웃풋에서 10가지 프롬프트 후보들이 출력됐습니다. 그렇다면 이렇게 생성된 프롬프트를 평가해야 합니다. BLEU(Bilingual Evaluation Understudy) 또는 ROUGE(Recall-Oriented Understudy for Gisting Evaluation)를 사용해서 평가할 수 있습니다. 이런 평가 메트릭을 사용해 각 지시문 후보가 원래 의도한 의미를 얼마나 잘 유지하는지, 얼마나 자연스러운지 등을 측정합니다.

  • 3단계: 최적의 후보 선택

평가에서 가장 높은 점수를 받은 지시문 후보를 선택합니다. 이렇게 선택된 지시문이 실제 챗봇에 사용될 ‘최종 프롬프트’가 됩니다. 

자동 프롬프트 엔지니어링은 프롬프트 자체를 자동으로 최적화하는 과정입니다. 우리는 메타-프롬프트를 사용하여 다양한 프롬프트 후보(또는 지시문 후보)를 생성하고, 이들을 평가하여 최적의 프롬프트를 찾아낼 수 있습니다.

 

백서에 나온 예시가 잘 와닿지 않아서, 제가 다른 예시를 만들어보았습니다.  “날씨 예보를 요약”하는 최적의 프롬프트를 찾고 싶다고 해보겠습니다. 

1단계는 메타 프롬프트를 작성합니다. “날씨 예보를 요약”하는 작업을 시키기 위해 쓸 수 있는 프롬프트 3개를 출력하세요. 

2단계는 프롬프트 후보들을 생성하고 평가하는 것이죠. 프롬프트 후보 3개가 나왔고, 각 프롬프트를 모델에 넣어 응답을 생성합니다. 

후보 1: "오늘과 내일의 기온, 강수 확률, 바람 상태를 지역별로 구분하여 간결하게 요약해주세요."
응답: (생략)

후보 2: "주요 도시의 오늘 날씨를 최고/최저 기온과 날씨 상태 중심으로 요약해주세요."
응답: (생략)

후보 3: "이번 주 날씨 패턴을 전반적으로 설명하고, 특이사항이 있다면 강조해주세요."
응답: (생략)

3가지 후보 프롬프트를 넣었을 때 받은 응답을 평가하기 위해서는 기준이 필요합니다. 전문 기상 캐스터가 작성한 이상적인 날씨 요약문을 기준으로 삼고, 각 후보 프롬프트에서 얻은 응답과 기준 응답 사이의 BLEU 또는 ROUGE 점수를 계산합니다. (정성적 평가로도 가능합니다.) 참고로 BLEU, ROUGE 메트릭은 표면적인 텍스트 유사성에 초점을 맞추기 때문에 의미적 품질, 창의성 등은 평가하기 어렵습니다. 

3단계에서는 평가에서 가장 높은 점수를 받은 후보를 선택합니다. 후보1이 내놓은 답변이 가장 높은 점수를 받았다면, 후보 1의 프롬프트인 "오늘과 내일의 기온, 강수 확률, 바람 상태를 지역별로 구분하여 간결하게 요약해주세요."이 선택됩니다. 

BLEU 또는 ROUGE 점수를 사용하면 객관적인 수치로 프롬프트를 평가할 수 있으며, 평가를 자동화할 수 있어 대규모 프롬프트 최적화 작업에 유리합니다. 하지만 적절한 기준점(Ground Truth)를 찾는 것이 중요하며 잘못된 기준점을 찾는다면 결과물 자체도 나빠질 수 있습니다.



개발자들은 좋겠다(?) AI가 코딩도 다 해주고

LLM이 코드를 정말 잘 짜준다는 사실은 널리 알려져 있습니다. 백서에서도 코드 프롬프팅에 대한 챕터가 따로 있을 정도인데요. Vertex AI Studio를 이용해 코딩 프롬프트를 테스트하는 예시들을 보여주고 있습니다. 

코드 작성을 위한 프롬프트

컴퓨터에 수백 개의 파일 이름을 바꿔야 하는 상황을 생각해보세요. 일일이 이름을 바꾸려면 꽤 오랜 시간이 필요합니다. Bash 명령어를 조금 알아서 자동화 스크립트를 만들 수는 있지만, 이것도 시간이 걸립니다. 

이런 상황에서 AI 프롬프트를 활용해 볼 수 있습니다. Gemini 같은 대중적인 AI 챗봇에 요청할 수도 있고, 더 보안이 필요하다면 Google Cloud의 Vertex AI Studio를 이용하는 것이 좋습니다. Vertex AI Studio에서는 온도 설정 같은 세부 옵션을 조절할 수 있어 더 맞춤형 결과를 얻을 수 있다는 장점이 있습니다.

코드 작성이 완료됐다면 꼭 코드를 먼저 읽고 테스트해보아야 합니다. 아래 예시에서 보여준 코드는 잘 작동하고 있다고 하네요!(백서에서) 

출처: 구글 프롬프트 엔지니어링 백서

코드를 생성하는 것 외에도 개발자들은 모델을 다양하게 활용해볼 수 있습니다. 다른 사람의 코드를 읽을 때, 코드 설명을 요청할 수 있고요. 코드 번역을 맡길 수도 있습니다. 코드 번역이란, 코드를 다른 프로그래밍 언어 또는 다른 애플리케이션에서도 작동할 수 있도록 바꿔주는 작업을 말합니다. 

이 외에도 코드 디버깅과 검토를 위해 사용할 수도 있습니다. 코드의 버그 사항을 프롬프트에 넣고, 무엇이 문제인지 설명하고 해결 방법을 알려달라고 요청하면 됩니다. (cursor가 나온 뒤로는 굳이 LLM에 코드를 복사, 붙여넣기 하지는 않을 것 같긴 하네요.) 제 개인적인 생각으로는 코딩을 공부하는 입장(?)에서는 LLM에게 이렇게 물어보고, 디버깅하면서 공부하는 것도 도움이 된다고 생각합니다. 



멀티모달 프롬프팅

멀티모달 프롬프팅은 인공지능과 소통할 때 텍스트만 사용하는 것이 아니라, 다양한 형태의 정보를 함께 활용하는 방식입니다. 쉽게 말해, 인공지능에게 "여러 감각"을 통해 정보를 전달하는 것이라고 생각하면 됩니다.

어떤 정보 형태가 사용될까요?

  • 텍스트: 일반적인 문장이나 지시문
  • 이미지: 사진, 그래프, 스크린샷 등의 시각 자료
  • 오디오: 음성, 음악, 소리 등
  • 코드: 프로그래밍 언어로 작성된 코드 조각
  • : 정리된 데이터를 담은 표 형식의 정보

코드 디버깅을 하다가 오류 메시지를 스크린샷을 찍어 “이 오류를 해결해줘”라고 할 수 있는 것 처럼요. 그림을 가져와서 비슷한 그림을 그려달라고 하거나, 스프레드 시트를 가져와서 데이터 분석을 시키는 경우 등 다양하게 활용될 수 있습니다. 

챗GPT나 클로드, 제미니 등 AI 모델에서 파일을 업로드할 수 있게 하고 있으니, 손쉽게 사용할 수 있습니다. 

멀티모달 프롬프팅의 강점은 인간이 여러 감각을 통해 정보를 처리하는 것처럼, AI도 다양한 형태의 입력을 통해 더 정확하고 맥락에 맞는 응답을 할 수 있다는 점입니다. 예를 들어, 복잡한 문제를 설명하기 위해 긴 텍스트를 작성하는 대신, 이미지 하나와 간단한 질문으로 더 효율적인 소통이 가능합니다.

현재 기술은 계속 발전하고 있어, 미래에는 더 다양한 형태의 정보가 멀티모달 프롬프팅에 활용될 것으로 예상됩니다.

 


재밌게 읽으셨나요?
이 글이 흥미로웠다면 제가 직접 쓰고 만드는
AI 안테나 뉴스레터도도 재밌을 거예요!
매주 수요일마다 주요 AI 소식과 인사이트를
메일함에 넣어드립니다.
AI 안테나에서 또 만나요.

https://eddienewsletter.stibee.com/

 

AI안테나

인공지능과 함께 만드는 AI 뉴스

eddienewsletter.stibee.com