프롬프트 엔지니어링 4편 | 스텝백 프롬프트
딱 한 줄 바꿨을 뿐인데, 답변의 퀄리티가 이렇게 차이난다고? 맞습니다. 똑같은 돈을 내고 AI 모델을 사용하더라도, 어떻게 질문을 하느냐에 따라 얻을 수 있는 결과는 천차만별입니다. 어떻게 하면 AI의 성능을 최대로 끌어내어 정확하고 의미있는 답변을 출력하게 할 수 있을까요? 구글에서 발간한 화제의 백서, “Lee Boonstra의 프롬프트 엔지니어링 백서”를 보면 알 수 있습니다. 원문은 모두 영어로 되어 있는데요. 이번 백서의 내용을 꼼꼼히 공부하고, 직접 실험해보면서 중요한 개념들을 해설하는 시리즈를 기획했습니다. 총 8편에 걸쳐 진행될 예정이며, 구글 백서 원문은 이곳(링크)에서 확인할 수 있습니다.
[구글 프롬프트 엔지니어링 백서 파헤치기 시리즈]
1편 - LLM의 작동 방식과 config 조정하기
2편 - 일반 프롬프트, 제로샷, 원샷, 퓨샷
3편 - 시스템, 컨텍스트, 역할 프롬프트
4편 - 스텝백 프롬프트(현재글)
5편 - CoT, 자기 일관성
6편 - ToT, ReAct
7편 - 자동 프롬프트 엔지니어링, 코드, 멀티모달(5월 2일 발행 예정)
8편(완) - 실제 사례 살펴보기(5월 7일 발행 예정)
“한 걸음 물러서!”
이번 편에서 다룰 프롬프트 엔지니어링 테크닉은 ‘스텝백 프롬프트’입니다. 직역하면 한 걸음 물러선다는 뜻인데요. 무슨 의미인지 짐작이 가시나요?
이 기법은 주어진 특정 과제에 바로 답하기 전에, 먼저 그 과제와 관련된 일반적인 질문을 고려하도록 LLM에게 프롬프트를 주고, 그 일반적인 질문에 대한 답변을 후속 프롬프트에 활용하여 특정 과제를 해결하는 방식입니다. 그러니까 대답하기 쉬운 일반적이고 광범위한 질문을 던져 힌트를 준 뒤에 진짜 과제를 맡겨서, 과제를 해결할 때 보다 ‘근본적’인 원칙을 고려하게끔 하는 테크닉입니다. 이러한 ‘근본’을 한번 출력한 LLM은 이후 특정 과제를 할 때 더 정확하고 통찰력있는 응답을 생성해냅니다.
스텝백 프롬프팅 쓰는 방법
스텝백 프롬프트의 첫 단계는 일반적인 질문을 먼저 던집니다. 특정 문제에 대해 물러서서 관련된 더 넓은 개념, 원칙, 또는 프레임워크를 고려하는 질문을 LLM에게 제시합니다. 이 질문을 통해 LLM은 관련 배경 지식이나 추론 능력을 활성화할 수 있습니다.
두 번째 단계는 문제 해결입니다. 첫 단계에서 얻은 일반적인 통찰력을 활용해 특정 문제에 접근하여 문제를 해결합니다.
예제를 살펴보겠습니다.
챗GPT에게 “잠들기 전에 떠올리기 좋은 700자 내외의 짧은 이야기를 만들어줘”라고 요청할건데, 하나는 그냥 곧바로 위 프롬프트를 입력하고, 다른 창에서는 먼저 “이야기에 흥미로운 서사를 만드는 구조에 대해 설명해줘”라고 스텝백 첫 단계를 추가한 뒤에 그 다음에 “이 구조 중에 하나를 활용해서 잠들기 전에 떠올리기 좋은 700자 내외의 짧은 이야기를 만들어줘.”라고 요청했습니다.
결과는 어떻게 나왔을까요?
솔직히 말해서, 딱히 엄청난(?) 차이를 느끼지는 못했습니다만, 서사를 적용한 게 확실히 ‘전개’가 빠르고 뭔가 내용이 더 있는 느낌입니다. 최신 버전의 ChatGPT가 아니라 멍청했던(?) 옛날의 gpt3.5에서 다시 실험을 해보았더니 스텝백의 차이가 극명하게 나타났습니다.
“영어 공부 일주일 계획 세워줘”에 스텝백을 적용하기 전과 후는 답변이 어떻게 달라졌을까요?
먼저 적용하기 전입니다. 정말 대충 답변하는 게 느껴집니다.
스텝백을 적용해보았습니다. “다른 언어를 효과적으로 배우는 방법 또는 원칙이 무엇인지 설명하세요”라고 스텝백 첫 단계로 질문을 준 뒤에, 받은 답변을 복사하여 이를 기반으로 영어 공부 일주일 계획을 세워달라고 했습니다. 훨씬 구체적으로 답변을 받을 수 있습니다.
심지어 시스템 프롬프트로 스텝백의 역할을 할 수 있도록 프롬프트를 준 뒤에 영어 학습에 대해 질문을 했을 때에도 답변의 질과 그 구체성이 달랐습니다.
이처럼 일반적인 질문을 던지는 스텝백 프롬프트는 LLM이 더 넓은 범위의 지식을 활용하고, 특정 작업에 필요한 기본 원리를 먼저 고려하도록 합니다. LLM은 훈련 데이터에서 습득한 방대한 지식을 가지고 있지만, 질문을 받았을 때 가장 관련성 높은 정보만 활성화됩니다. 여기서 ‘조금 뒤로 물러서’ 더 넓은 범위의 관련 지식을 활성화하면, 모델이 더 포괄적인 지식에서 추론을 하게 되니 답변의 통찰력이 올라가는 것이지요.
스텝백을 했을 때 좋은 점이 또 있습니다. LLM이 특정 세부 사항에 치우치지 않고 일반적인 원칙에 집중하게 하여 편향되지 않은 답변을 얻을 수 있다는 것입니다. 이는 숲을 보지 않고 나무만 보는 오류에서 벗어날 수 있게 해줍니다.
스텝백 프롬프트에 대해 알아보다 보니, 인간이 생각하는 방식에 대해서도 자연스럽게 떠올려 보게 됩니다. 이직을 고민하고 있을 때면, 현재 회사와 이직할 회사를 끊임없이 비교하면서 어떻게 결정을 내려야 할지 모르겠어 힘들 때가 있는데요. 그럴 때에 한 걸음 물러서서 내 삶의 원칙에 대해 생각해보고, 그 원칙에 입각해서 회사를 판단하면 조금 더 명확해질 때가 있는 것 같습니다. 알고 보니 스텝백 프롬프트는 프롬프팅 기법으로서만이 아니라, 우리 삶에서도 언제든 적용해볼 수 있는 유익한 테크닉이네요.
앞으로 해결하고 싶은 문제가 있을 때, 문제 자체에만 집중하기보다 조금 더 큰 맥락에서 한번 더 생각해보면 좋을 것 같습니다. (LLM에게 질문을 하는 것 포함해서)
“이 문제의 더 큰 맥락은 무엇일까?”
“이런 유형의 문제를 해결하기 위한 일반적인 원칙이 있을까?”
“장기적으로 봤을 때 항상 적용할 수 있는 원칙은 무엇일까?”
재밌게 읽으셨나요?
이 글이 흥미로웠다면 제가 직접 쓰고 만드는
AI 안테나 뉴스레터도도 재밌을 거예요!
매주 수요일마다 주요 AI 소식과 인사이트를
메일함에 넣어드립니다.
AI 안테나에서 또 만나요.
https://eddienewsletter.stibee.com/
AI안테나
인공지능과 함께 만드는 AI 뉴스
eddienewsletter.stibee.com