프롬프트 마스터하기: 생성형 AI를 위한 효과적인 프롬프트 전략

안녕하세요!

요즘 챗지피티를 잘 사용하기 위해서는 프롬프트를 잘 만들어야 한다고 합니다. 하지만 어떤 방식으로 하는게 잘 사용하는것일까요? 이번글에서는 유명한 프롬프트 전략들 6가지를 알아보겠습니다.

프롬프트란?

프롬프트는 생성형 AI에게 특정 작업 수행을 요청하기 위한 자연어입니다. 생성형 AI가 만든 결과물들은 텍스트, 이미지, 비디오, 음성 등이 될 수 있습니다.

자연어란?
사람들이 일상적으로 의사소통을 위해 사용하는 언어

프롬프트 전략이 필요한 이유

언어모델, 이미지생성AI, 음악생성AI 등 대부분의 생성형AI들는 주로 프롬프트를 입력으로 받습니다. 왜냐하면 모델 학습을 할 때 생성된 결과물에 대한 설명을 프롬프트로 연결지어서 학습을 했기 때문입니다. 그래서 생성형AI는 정확한 답에 대한 근거가 있는 AI와 달리, 인간의 프롬프트가 판단의 잣대이므로 정해진 답이 없어서 프롬프트를 잘 작성하는것이 중요합니다.

프롬프트는 언어입니다. 언어는 표현을 글을 통해서 하기 때문에, 글쓰기에 대한 전략 필요합니다. 예를 들어, 프롬프트에 단순히 필요한 요구만 포함시키면 AI가 나머지 부분들을 일반적으로 생성하기 때문에, 정확한 작업을 위해서는 디테일한 프롬프트가 필요합니다.

특히 언어모델은 이전의 문장들을 토대로 다음 단어를 확률적으로 생성하기 때문에, 앞의 문장들의 품질과 방향이 중요합니다.

밑에서는 다양한 전략에 대해서 간단하게 알아보겠습니다.



전략

1. 전문가 역할을 통해 AI 답변 개선하기

언어모델에게 역할(직업)을 부여하는 방법으로, AI가 앞으로 생성할 단어들을 역할에 기반해서 더 전문적인 답변을 얻을 수 있습니다.

예시

[프롬프트]
당신은 의사입니다. 감기 증상과 대처 방법에 대해 자세히 설명해주세요.
[답변]
감기는 바이러스에 의해 발생합니다. 증상으로는 기침, 콧물, 인후통 등이 있습니다. 충분한 휴식과 수분 섭취가 중요하며, 필요한 경우 해열제를 복용할 수 있습니다.



2. 개성 부여를 통한 AI 대화 향상하기

페르소나(persona) 기법은 언어 모델에 특정한 성격이나 특성을 부여하는 것으로 언어모델이 마치 그 성격이나 특성을 가진 인물처럼 행동하도록 유도합니다.

추가적으로 역할을 부여하면서 개인적인 성격을 설정하면 더 디테일하게 답변을 생성할 수 있습니다.

예시

[프롬프트]
당신은 역사를 현대와 관련지어서 간단하게 설명해주는 역사학자입니다. 로마 제국에 대해 설명해주세요.
[답변]
로마 제국은 고대 세계에서 중요한 역할을 했으며, 현대의 법률, 정치 체계, 건축 및 언어에 지속적인 영향을 미치고 있습니다.



3. 소량의 예시로 학습하기

퓨샷(few-shot) 기법은 모델이 매우 적은 예시(샘플)를 통해 특정 작업을 수행하는 방법을 빠르게 적응시킬 수 있는 방법입니다.

특히 모델에게 제한된 범위의 특정 작업을 훈련시킬 때 유용합니다. 여러 데이터로 파인튜닝을 시킨것과 비슷한 효과를 낼 수 있지만, 지속적이지 않고 데이터의 범위가 한정된다는 단점이 있습니다.

예시

[프롬프트]
이제부터 문장의 끝을 용으로 끝내고 이모티콘을 랜덤하게 하나씩 붙여주세요.
예시1. 오늘은 정말 멋진 날씨였어용, 밖에서 산책하기 딱 좋았죵🌟.
예시2. 저녁에는 맛있는 파스타를 먹었어용, 정말 맛있었어용🎉.

"내일은 중요한 회의가 있어서, 미리 준비를 잘 해둬야겠어요." 이 문장을 변환해주세요.
[답변]
내일은 중요한 회의가 있어서, 미리 준비를 잘 해둬야겠어용🌈.



4. 단계적으로 추론하기

CoR(Chain of Reasoning) 기법으로 알려진 이 방법은 문제 해결을 논리적 추론의 연쇄를 사용하는 방법입니다.

언어모델은 자신이 앞에서 생성한것들을 참고하면서 다음 단어들을 생성하기 때문에, 복잡한 문제를 단계별로 추론 과정을 명시적으로 표현하면서(기록하면서) 풀면 방향을 잃어버리지도 않고 이유의 연결고리가 더욱 강화됩니다.

위의 이유로 주로 수학/과학/논리 문제에 강한 모습을 보입니다.

할아버지 프롬프트 업데이트 글에서 CoR을 활용한 GPT도 만나볼 수 있습니다.

예시

[프롬프트]
한 학급에 남학생이 12명, 여학생이 8명 있습니다. 이 학급 학생들 중 남학생의 비율은 몇 퍼센트입니까? 이 문제를 중간중간 기록하면서 단계적으로 풀어주세요.

위 처럼 기록하면서 단계적으로 풀어주세요.하셔도 되지만, 이미 챗봇이 CoR를 알고 있을경우에는 CoR을 적용해서 풀어달라고 작동합니다. 하지만 정확히 요구하는것이 더 효과가 좋았습니다.

[답변]
1. 학생 수 계산
먼저, 학급의 전체 학생 수를 구해야 합니다. 남학생이 12명, 여학생이 8명이므로, 전체 학생 수는 12명 + 8명 = 20명입니다.

2. 남학생의 비율 계산
남학생의 비율을 구하기 위해, 남학생 수(12명)를 전체 학생 수(20명)로 나눕니다. 이를 수식으로 표현하면 12 / 20 = 0.6입니다.

3. 백분율로 변환
마지막으로, 이 비율을 백분율로 변환하기 위해 100을 곱합니다. 따라서, 0.6 × 100 = 60%입니다.

결론: 이 학급에서 남학생의 비율은 60%입니다.



5. 단계적으로 사고하기

CoT(Chain of Thought) 기법으로 알려진 이 방법은 문제 해결 과정에서 자연스러운 사고의 흐름을 따르는 방식을 사용한 방법입니다.

특징으로는 직관적인 사고하고, 창의적이고, 다양한 관점 고려할 수 있습니다. 일상적인 의사결정, 창의적인 작업, 다양한 해석이, 인간다운 대화와 상호작용에 적합한 기법입니다. langchain의 agent에서도 사용되고있는 프롬프트 템플릿입니다.

밑의 CoT 프롬프트 템플릿은 욱영GPT_ 생각/액션/관찰 프롬프트(step by step 프롬프트)를 참고하였습니다.

예시

[프롬프트]
질문에 응답하려면 과정을 따라야 합니다.
!중요: 최종 답변을 얻을 때까지 반복합니다.
응답을 구성할 때 콘텐츠의 내용에 초점을 맞춥니다.

단계: 다음 형식의 JSON으로 응답합니다
{
"생각": 질문에 답하기 위해 필요한걸 생각하세요, 
"액션": 문제를 해결하세요
"관측": 액션이 충분했는지 확인하세요.
}
다시 생각해보면서 반복하고, 액션이 충분하다면 최종 답을 내놓으세요

질문: 오늘 저녁에 한국에 놀려온 인도 친구들과 외식을 계획하고 있습니다. 한국 식당중에서 어떤걸 먹는게 좋을지 골라주세요.

[답변]

{
  "생각": "인도에서 온 친구들과의 외식을 위해 한국 음식 중 그들의 취향과 식습관을 고려한 선택이 필요합니다. 인도 음식은 종종 매운 맛이 강조되기 때문에, 한국의 매운 음식이 좋은 선택일 수 있습니다.",
  "액션": "인도 친구들을 위해 한국의 매운 음식을 제공하는 식당을 선택하는 것이 좋습니다. 예를 들어, 불고기, 김치찌개, 또는 매운 닭갈비와 같은 음식이 적합할 수 있습니다.",
  "관측": "이러한 선택은 인도 친구들에게 친숙한 매운 맛을 제공하면서 동시에 한국의 전통적인 음식을 경험할 수 있는 기회를 줄 것입니다.",
  "최종 답변": "오늘 저녁 외식으로는 인도 친구들에게 매운 맛을 제공하는 한국 음식, 예를 들어 불고기, 김치찌개, 또는 매운 닭갈비를 제공하는 식당을 선택하는 것이 좋습니다."
}



6. 다양한 관점에서 생각하기

ToT(Tree of Thoughts) 기법으로 알려진 이 방법은 CoT접근 방식을 일반화하여 문제 해결을 위한 중간중간 했던 생각들을 탐색하면서 진행하는 방법입니다.

여러 다른 추론 경로를 고려하고, 선택 사항을 자가 평가하여 다음 행동 과정을 결정하며, 필요에 따라 전방 또는 후방을 살펴보고 되돌아가면서 전체적인 선택을 내려서, 복잡하고 전략적인 문제를 인간의 사고 과정에 더 가까운 방식으로 문제를 해결하는 특징을 가집니다.

예시

상황: 십자말 풀이 퍼즐 풀기
풀이: 
1. 탐색단계
퍼즐의 각 힌트를 분석하고, 가능한 단어 후보들을 생성

2. 평가 단계
생성된 각 단어 후보를 평가하여, 퍼즐의 다른 부분과 어떻게 맞물리는지 확인
예를 들어, "사자"를 선택하면 다른 교차하는 단어들에 어떤 영향을 미칠지까지 고려

3. 결정 단계
가장 적합한 단어를 선택합니다. 이때, 다른 단어들과의 교차점, 전체 퍼즐의 일관성 등을 고려 후 최종선택

4. 전략적 수정
퍼즐을 진행하면서, 새로운 정보나 교차점이 발견되면, 이전의 선택을 재평가하고 필요에 따라 수정
예를 들어, 다른 단어를 채우다가 "사자"가 적합하지 않다는 것을 깨닫게 되면, 다른 후보로 변경

단순히 한 단계씩 문제를 해결하는 것이 아니라, 여러 가능성을 탐색하고, 각 선택의 결과를 예측하며, 필요에 따라 중간중간 전략을 수정합니다. 이는 퍼즐과 같은 복잡한 문제에서 더 효과적인 해결 방법을 제공합니다.

예시로 24게임에서 GPT-4는 Chain of Thought 프롬프트를 사용하여 4%의 작업만 해결했지만, ToT방식으로 74%의 성공률을 달성했다는 결과가 있었습니다^ToT

ToT의 과정은 G대넓얕 - GPT와 대화하기 위한 넓고 얕은 지식에 그림과 설명이 잘 되있습니다.



전략적인 프롬프트가 항상 좋을까요?

프롬프트는 언어이기 때문에 다양한 방면을 고려해야 하므로, 무조건 전략이 모든것이 아닙니다.

예를 들어, 물건을 파는 어떤 사람이 말을 할 때 판매전략이 아무리 좋아도 내용이 틀리거나 말투가 친절하지 않다면 손님이 물건을 살 마음이 달아나 버립니다. 그래서 프롬프트 자체의 구성(업무, 맥락 등)도 중요합니다.

다음에는 프롬프트 자체의 중요한 구성이 어떤것이 있는지 알아보겠습니다.

16
4개의 답글

(채용) 콘텐츠 마케터, AI 엔지니어, 백엔드 개발자

지피터스의 수 천개 AI 활용 사례 데이터를 AI로 재가공 할 인재를 찾습니다

👉 이 게시글도 읽어보세요