샘호트만
샘호트만
⚔️ 베테랑 파트너
🔬 임팩트 찐친

프롬프트 못짜는 당신, 이제 그만 고민하세요 - Prompt를 피드백하면서 최적화시키기 (LangSmith + Annotation Queue + 외부 Prompt Template)

안녕하세요

샘호트만입니다.

저번 글 보다는 훨씬 재미없고, 일반인들이 보시면 왜 이런 뻘..짓을? 이라고도 생각하실 수 있습니다.

이런 것이 있구나! 라고 인지만 하셔도 충분하다고 생각합니다.


Intro

전통적인 자연어처리 시절에는 일상대화, 멀티턴 형태의 대화방식이 비중이 컸었습니다. 하지만 ChatGPT와 같은 LLM이 발전하면서, AI와 대화를 하는 이유가 점점 목적 지향형 대화로 바뀌었습니다. 사용자가 LLM에서 고정된 Context 안에서 목적을 달성하면 ChatGPT에서 대화세션을 탈출(escape)하는 것입니다.

여기서 우리가 Prompt를 구성하는 방식을 배우는 이유가 결국에는 “원하는 답변을 얻기 위해” 입니다. 하지만 여러분들이 원하는 답변을 못 얻는 이유는 일반인들이 통제할 수 없는 영역인 모델 고유의 학습데이터의 종류, 분포나 알고리즘 등이 달라 “언어모델” 과실도 있지만, 대부분은 안타깝게도 “본인” 과실입니다.

그래서 프롬프트를 잘 작성하는 방식의 교보재와 강의가 많이 존재합니다. 하지만 잘 짜는 것에 있어서는 정답도 없고, 명확하지도 않으니 매우 어렵습니다. 하지만 ai/prompt engineer, 개발자 분들은 API를 많이 건드리게 되고, 이 비용을 줄이기 위해 프롬프트를 최적화 시켜야합니다.

서론이 길었는데요. 오늘은 프롬프트를 작성하고, 피드백하고, 개선하는 방식에 대한 내용을 하나 소개하고자 합니다.


  • 준비물 :

    • LangChain API Key, Anthropic API Key

    • LangSmith 계정

    • Anthropic에 충분히 총알($)을 충전해놓기

    • 개선하고 싶은 나만의 Prompt (or Prompt Template)


전체적인 Cycle은 다음과 같습니다.


우선 zero-shot으로는 AI로 Copy-writing하는 것이 상당히 어렵다고 생각하는 편입니다. 우선 대충 이런 강의 내용이 있다고 가정하겠습니다.

solopreneur와 콘텐츠 크리에이터 대상으로 하는 AI 강의 입니다. 시간을 줄이고 싶어하며 귀찮음을 덜어내고자 하는 것이 수강생들의 목표입니다. 이를 통해서 사람들은 자유를 얻게되고 사업 운영하는 데 cost도 줄일 수 있고, 콘텐츠 생산하는데 더 창의적인 시간을 투자할 수 있고, 행복한 삶을 누리는 것을 목표로 하고 있습니다.


그 다음 claude에게 카피라이팅을 부탁하면 다음과 같이 나타납니다.

  1. "AI로 날개 달고 자유롭게 날아오르자! 당신의 시간은 이제 당신 것입니다!"

  2. "AI와 함께라면 귀찮음은 이제 그만! 당신의 사업과 콘텐츠에 날개를 달아드립니다!"

  3. "AI 마법으로 시간을 절약하고 창의력을 폭발시켜 보세요! 당신의 인생이 180도 달라집니다!"

  4. "비용 절감, 시간 확보, 그리고 무한한 자유를 즐겨보세요!"

  5. "AI 강의 한 방이면 인생이 송두리째 바뀝니다! 지금 바로 자유와 행복의 문을 두드리세요!"


결과는 보시다시피 너무 뻔하고 맛도 없고 진부합니다.


Initial Prompt

위와 같이 카피라이팅된 제목들을 한번 수정할 생각입니다. 다음과 같은 code를 준비합니다.


저는 맨위에서 재미없는 강의 제목을 따로 markdown cell에 넣었습니다. 그 다음 위와 같은 초기 system, Human 프롬프트를 구성하겠습니다.

“최대한 빡세고, 최대한 자극적이고, 최대한 쾌락적이고, 최대한 재미있고, 최대한 도파민을 충족하게” → 방향성 없이, 불명확하게 이야기 요구하고 + zero-shot 형태로 요구하였습니다. (원래 1개씩 추천하는게 맞는데, 실수로 5개를 요구했습니다.)

위에서 초기 Data(copywriting)된 내용 하나를 invoke 시키고 chain 연결된 결과는 다음과 같습니다.


테스트했으니 LangSmith에서 Feedback을 다는 모습을 보여드리겠습니다.


LangSmith를 이용해서 추론하고, Human Feedback 수행하기

위 5개 카피라이팅 데이터에 대해서 inference를 수행합니다.


돌리면 아래와 같이 langsmith url이 생성됩니다.


생성된 url에 접속하고 annotation queues (annotation 대기열)에 접속하면 데이터마다 생성된 결과를 볼 수 있으며 피드백을 달 수 있습니다.


위 생성된 output 결과를 보시면 초기 system prompt가 제대로 동작된 것을 알 수 있습니다. 확실히 자극적으로 쓰긴 하는데 너무 맵습니다. (교수님.. 진도가 너무 빠릅니다.)

나온 결과에 대해서 좋은지 안 좋은지 피드백을 달 수 있습니다. thumbs-up은 1, down은 0이고, 댓글을 달듯이 나온 결과에 대해서 왜 안 좋은지? 어떻게 개선되면 좋을지? 또는 예시를 넣어서 최대한 명확하게 피드백을 다는 것이 중요합니다.


만약에 괜찮게 나온 case라면 ‘1’을 선택하고 다음 페이지로 넘어가면 됩니다.


초기 프롬프트 개선하기

이전에 제가 작성한 피드백을 수용하는 새로운 프롬프트를 작성합니다.

langsmith에 engineer 분들이 prompt hub에 다양한 template를 올라가 있습니다. 저는 wfh/optimizerprompt 를 쓰고자 합니다.

wfh/optimizerprompt 는 대략적으로 다음과 같습니다. (아래에 url 남겨두겠습니다.)



이제 외부의 최적화용 프롬프트와 결합해서 피드백이 반영된 프롬프트를 개선시켜보겠습니다.



그렇다면 수정된 프롬프트는 다음과 같이 나타납니다. (52초 소요)


제 피드백이 반영된 개선된 프롬프트를 얻었습니다. 이거 들고가서 여러번 테스트를 해보면 됩니다. (하지만 너무 담백한 카피라이팅이 나올 것 같아서 아쉽습니다. 피드백 또한 본인 과실입니다..)


비용은? (환율 $1 = 1,380가정)

저는 Opus를 사용했고 temperature은 1을 사용했습니다. 프롬프트 최적화를 1바퀴 Cycle을 돌리고 수정된 프롬프트가 나오는데 까지는 $7.40 → $7.11 = 400원 정도 나옵니다. 하지만 Copy-Writing은 솔직히 나오는 output 길이가 짧은 편이라 가격이 상대적으로는 싼 편입니다.

제가 이거 말고 따로 AI News or Paper → 제 스레드에 맞게 튜닝하는 것도 실험했었는데요. $7.96 - 7.4 = 772원 정도 나왔습니다. 요새 고환율이라서 디지털 월세내는데 식은 땀을 흘리고 있습니다.



실제로는 1 cycle이 아니라 아주 여러번 최적화를 시킨다고 가정하면 돈이 꽤 많이 깨질 것 같습니다. 중요한 것은 피드백을 달 때 아주 깔끼하고 정제된 예시 + 명확한 피드백을 주는 것이 포인트라고 생각합니다.


실제 Field에서 실용성은 어떨까?

다음과 같이 생각을 List-up 해봤습니다.

  1. 프롬프트 템플릿을 평가할 때 measurable하게 접근할 수 있다. O / X 또는 매우나쁨-나쁨-좋음-매우좋음 이렇게 척도화 시킬 수 있기에 우선 measurable 해야 커뮤니케이션이 가능합니다.

  2. 프롬프트 짜기는 귀찮고, 머릿속에는 있지만 이걸 글로 표현 못하는데 생성되는 아웃풋 + 내가 줄 수 있는 명확한 프롬프트를 전달하여 프롬프트를 최적화 시킬 수 있습니다.

  3. API를 많이 사용하는 회사에서는 프롬프트에 대해 최적화를 시켰을 때, 새로운 Prompt가 token cost에 얼마나 영향을 줄 지, 어떻게 줄일지 고민을 많이 해봐야할 것 같습니다.

  4. LangSmith는 폐쇄망 환경에서는 고려를 해봐야합니다. eval하거나 최적화시킬 생성된 결과를 보안에 문제 없는 선에서 들고나와서 활용해볼 수 있을 거 같습니다.


[마무리하며] 이 글의 내용 + 초기 프롬프트 결합한 결과

네 그렇다고 하네요. 1번이 딱 적절하게 괜찮은 것 같네요!



아래 글들은 제가 이 글(LLM eval-feedback)을 작성하는데 도움 되었던 URL들 입니다.


긴 글 읽어주셔서 감사합니다.


  • LangSmith란 무엇인가?

LLM용 추적 및 디버깅 도구 ‘랭스미스’ 따라잡기


  • LangSmith Prompt Template Hub - wfh/metaprompt, optimizerprompt

LangSmith

LangSmith


  • 이번 글에서 영감이 된 영상입니다. teddynote‘신’입니다. wikibooks와 함께 공부하기 너무 좋습니다.

[Self Learning GPT] #LangSmith 피드백으로 원하는 형식의 답변을 학습하는 GPT


  • 이번 글에서 영감이 되는 개요 글 - Claude Workbench 위에서 하기

Alex on Twitter / X


  • Human & LLM 이 평가(Grading)하는 예시 cookbook

anthropic-cookbook/misc/building_evals.ipynb at main · anthropics/anthropic-cookbook


  • Langsmith 로 Eval 시리즈가 1주일 전 부터 LangChain 공식 유튜브에 올라오고 있습니다.

LangSmith Evaluations


  • 우선 아래 2개 코드를 공부하시는 것을 추천 드립니다. - Prompt 계속 개선해나가는 Code (LangSmith Cookbook)

langsmith-cookbook/optimization/assisted-prompt-bootstrapping/assisted-prompt-engineering.ipynb at main · langchain-ai/langsmith-cookbook

langsmith-cookbook/optimization/assisted-prompt-bootstrapping/elvis-bot.ipynb at main · langchain-ai/langsmith-cookbook


#10기랭체인

17
4개의 답글

👉 이 게시글도 읽어보세요