❑ 프롬프트 엔지니어링 개념
Prompt engineering
• LLM의 답변 정확도를 높이기 위해 프롬프트를 설계를 하는 것
• AI에 입력되는 프롬프트를 전략적으로 설계하여 사용자가 원하는 결과를 얻을 수 있도록 함
• 사용자의 요구 사항을 명확하고 구체적으로 반영한 프롬프트를 구성
❑ 프롬프트엔지니어링 고급기술(논문 검증)
Few-shot prompting
• 예제 중심 프롬프트 구현
• 샷(Shot)= 예시의 의미
• 예시를 하나도 제공하지 않으면 제로샷(Zero shot), 하나의 예시를 제공하면 원샷(One-shot), 2~5개의 예시를 제공하면 퓨샷프롬프팅(Few-shot)
ex> 예시1)나는 오늘 학교에 간다.
(I'm going to school today.)
예시2)나는 음악실에 가고 싶다.
(I want to go to the music room.)
Zero-shot Prompt
• 추가 학습이나 예제 데이터 없이 모델에게 문제를 주어 답변을 생성하게 하는 기법
ex> 이 텍스트의 감성을 분석해주세요: '오늘 날씨가 너무 좋아서 기분이 좋아요.'
One-shot Prompt
• 하나의 예제나 템플릿을 바탕으로 답변을 생성하게 하는 기법
ex> 이 텍스트의 감성을 분석해주세요: '오늘 날씨가 너무 좋아서 기분이 좋아요.’
"예시: 긍정적"
이 텍스트의 감성을 분석해주세요: '오늘은 너무 바빠서 힘들어요.'
Few-shot Prompt
• 2~5개의 예시를 제공
ex> 이 텍스트의 감성을 분석해주세요: '오늘 날씨가 너무 좋아서 기분이 좋아요.'
"예시: 긍정적"
이 텍스트의 감성을 분석해주세요: '오늘은 너무 바빠서 힘들어요.'
"예시: 부정적“
이 텍스트의 감성을 분석해주세요: '주말이 다가와서 설레요.'
Few-shot CoT(Chain of Thought)
• 답변에 도달하는 과정을 학습시키는 것을 목적으로 본 질문 전에 미리 태스크와 추론 과정을 포 함한 답변 예제를 포함시키는 질문법
• Few-Shot Prompting의 추론 과정을 거쳐야 하는 경우 풀 수 없다는 한계점을 보완한 방식으 로, 예제를 더 많이 기입할수록 정확도가 높아짐
• 모델이 단계별로 생각하면서 문제를 해결하도록 돕는 방법
ex> CoT Prompt:도서관에 책이 123권 있습니다. 그중 29권이 대출되었습니다. 이제 남은 책의 수를 구해봅시다.
먼저, 123에서 29를 빼야 합니다. 123에서 20을 빼면 103이 됩니다. 다음으로, 103에서 9를 빼면 도서관에 남은 책은 몇권일까요?
Zero-shot CoT(Chain of Thought)
• 추론과정 예시 대신에 ""Let's think step by step.""을 질문에 넣는 방법
ex> 나는 finance datareader를 사용해 삼성전자 주가를 수집하는 파이썬 코드를 짜려고 해. 각 단계별로 나누어 진행하되 단계별로 항상 나에게 의견을 물어본 뒤 다음 단계를 진행해줘. 그리고 파이썬 코드 정보는 다음과 같아.
- 코랩에서 파이썬 코드를 실행할거야.
- 날짜는 2021년1월1일부터 오늘까지로 수집하고 엑셀로 저장해줘
Active Prompt
• 기존 Few-shot CoT(Chain-of-Thought) 방법의 한계: 사람이 만든 고정된 예시를 사용해 다양 한 작업에 최적화되지 않음.
• Active-Prompt: LLM(대형 언어 모델)이 각 작업에 맞는 예시를 스스로 찾아내도록 함.
• Few-shot CoT에서 쓰이는 예시를 좀 더 정확하게 만드는 방법임.
Active Prompt 단계
• 질문하기: 여러 질문을 LLM에 던짐
• 답변 생성하기: 모델이 다양한 답변을 생성.
• 불확실성 평가하기: 답변이 많이 다를수록 그 질문은 어려운 것으로 간주.
• 사람의 주석 추가:어려운 질문에 대해 사람이 정확한 답변을 작성
• 효율적인 학습: 주석이 달린 예시로 모델을 다시 학습시킴
Directional Stimulus Prompting
• 더 정확한 답변을 얻기 위해 힌트를 생성하는 방법
• 힌트를 생성하는 LLM활용(Policy)해 힌트를 생성한 질문을 던져 답변을 얻는 방법
ex>
기사 내용: "AI 기술이 최근 빠르게 발전하고 있습니다. 많은 기업이 이를 활용하고 있습니다."
질문: "이 기사를 요약해 주세요."
힌트: "AI 발전, 기업 활용"
ToT Prompt(Tree of Thoughts)
• 문제 해결을 위해 언어 모델이 중간 단계의 생각을 생성하고 평가하여, 체계적인 탐색을 통해 최적의 해결책을 찾는 방법
• 중간 단계를 생각해 놓아서 서칭하는 개념
ex> 세 명의 전문가가 x+5=11의 문제를 해결하는 과정을 단계별로 기록하고 평가해봐. 각 단계마다 가장 가능성이 높은 생각을 유지하면서 다음 단계로 넘어가.
Self-consistency (자기 일관성) - 다수결의 원칙
• Self-consistency는 AI가 여러 추론 경로를 통해 동일한 답을 도출하도록 유도하여, 답변의 일관성과 신뢰성을 높이는 기법
Self-consistency과 CoT 차이
• CoT: 하나의 논리적 경로를 따라 단계적으로 문제를 해결함
• Self-consistency: 여러 경로로 문제를 해결, 동일한 답이 나오는지 확인 가장 일관된 결과를 선택함.
ex> 프롬프트 : 형이 30살이고, 나는 형보다 6살 어리다. 또, 내 동생은 나보다 3살 어리다. 나는 몇 살일까?
추론 1: 형의 나이 30 - 6 = 24살
추론 2: 동생의 나이 (예: 21살) + 3 = 24살
추론 3: 자신의 나이 계산 후 형, 동생과 비교 (1) 24살 + 6살 = 형 30살(2) 24살 - 3살 = 동생 21살
결론:각 추론 모두 24살로 일관되게 도출되므로, 당신의 나이는 24살입니다.
Least to Most Prompting
• 최소에서 최대로 기법(Least to Most Prompting)은 복잡한 문제를 해결할 때 단계적으로 접근하는 방법
처음에는 간단한 프롬프트를 제공하고, 점점 더 복잡한 내용을 추가
• 중간 단계를 생각해놓아서 서칭하는 개념
ex>
Standard Prompt: 자동차가 어떻게 움직이나요?
Least to Most Prompt: 자동차 바퀴는 어떻게 회전하나요?
엔진이 바퀴를 움직이게 하는 과정을 설명해 주세요. 그 다음으로, 연료가 엔진에서 에너지로 변환되는 방식을 설명하고, 마지막으로 이 모든 과정이 자동차를 어떻게 움직이게 하는지 종합적으로 설명해 주세요.
RAG기법
• 질문과 관련된 정보를 데이터베이스나 파일에서 검색해 컨텍스트로 제공하는 프롬프팅 기법
• 환각 현상을 줄이기 위해 질문에 답할 수 있는 컨텍스트를 제공하는 방법
ex> 아래는 주요 단어와 이에대해 정의된 사전입니다. 사전을 기반으로 질문에 답하세요
단어: "알고리즘" 정의: 문제를 해결하기 위해 명확하게 정의된 일련의 절차나 규칙.
단어: "데이터베이스" 정의: 데이터를 효율적으로 저장하고 검색할 수 있도록 조직화된 정보의 집합. 단어: "API" 정의: 애플리케이션이 서로 상호작용할 수 있도록 도와주는 인터페이스.
질문: "알고리즘이 무엇인가요?"
답변: "알고리즘은 문제를 해결하기 위해 명확하게 정의된 일련의 절차나 규칙입니다."
ReAct기법
• ReAct(Reasoning + Acting) 기법은 문제를 해결하는 과정에서 생각(Reasoning)과 행동(Acting) 을 번갈아 가면서 문제를 단계적으로 해결하는 방법
• 복잡한 문제를 해결할 때 유용하며, 생각(추론)과 행동을 나누어 문제를 해결 ReAct 기법의 주요 단계
• Thought (생각): 현재 상황을 분석하고, 무엇을 해야 할지 생각
• Action (행동): 생각한 것을 바탕으로 행동을 함. 검색, 도구 사용, 특정 작업 수행 등이 포함
• Observation (관찰): 행동의 결과를 객관적으로 관찰하고, 다음 단계로 넘어갈지 또는 더 생각할지 결정
ex> 문제를 단계적으로 해결하기 위해 생각하고 행동합니다.
1. Thought: 상황을 분석합니다.
2. Action:
- Search[키워드]: 필요한 정보를 검색합니다.
- Finish: {"답변": <결론>}
3. Observation: 행동의 결과를 관찰합니다.
<예시>
오늘 저녁으로 무엇을 먹으면 좋을까요?
1-SET
Thought: 현재 집에 있는 재료를 파악해야 합니다.
Action: Search[집에 있는 재료 검색]
2-SET
Observation: 냉장고에 닭고기와 채소가 있습니다.
Thought: 이 재료로 만들 수 있는 요리를 생각해야 합니다.
Action: Search[닭고기와 채소로 만들 수 있는 요리]
3-SET
Observation: 닭고기 채소 볶음이 좋겠네요.
Finish: {"답변": "오늘 저녁으로 닭고기 채소 볶음을 만들어 먹으면 좋겠습니다."}
<과제>
오늘 무엇을 입을까요?
MRKL
• “Modular Reasoning, Knowledge, and Language"의 약자로 미라클이라고도 함
• ReAct의 기본 원칙을 더 발전시킨 것으로, 다양한 모듈(또는 도구)을 활용하여 문제를 해결하는 방법
• LLM이 여러 번의 생각(Reasoning)과 행동(Action)을 통해 점차적으로 정확한 답을 도출하고, 각 단계에서 필요한 도구를 선택하여 수행
ex> 문제를 단계적으로 해결하기 위해 생각하고 행동합니다. Thought: 상황을 분석합니다.
Action:
Search[키워드]: 필요한 정보를 검색합니다. Tool[도구]: 전문 도구를 사용하여 작업을 수행합니다. Finish: {"답변": <결론>}
Observation: 행동의 결과를 관찰합니다.
나는 아래와 같은 사용자 사전을 정의했어 “
사용자사전:
- 집에 있는 재료:
- 냉장고에 닭고기와 채소가 있습니다.
- 냉동실에 만두와 고구마가 있습니다.
- 찬장에 파스타 면과 토마토 소스가 있습니다.
- 날씨 정보:
- 오늘의 날씨는 맑고 25도입니다.
- 내일의 날씨는 비가 오고 20도입니다.
- 요리 추천:
- 닭고기와 채소: 닭고기 채소 볶음, 닭고기 샐러드
- 파스타 면과 토마토 소스: 토마토 파스타, 파스타 샐러드
감정프롬프트
• 감정적으로 말하기(예시: 이일은 아주아주 아주 중요한 거야!,정말정말정말)
• 중요성이나 긴급성을 강조하는 메시지를 받으면 성능이 평균 8% 높아짐