가수면
프롬프트 엔지니어링 본문
LLM 기본 원리
몇 개의 단어가 차례로 모인 것을 문장이라고 한다.
이 특성대로 다음에 올 단어들 중 가장 확률이 높은 단어를 선택하는 방식을 통해 차례대로 단어를 배치함 (다음 단어가 무엇인지 추측)
자동 완성 기능과 유사한 방식이다. (lang을 검색하면 chain이 자동 완성 목록에 뜨는 식)
프롬프트의 구성 요소
1. 명령어
어떤 작업을 수행해야하는지
ex) 번역
2. context
AI 모델이 작업을 더 잘 이해하고 더 정확한 응답을 생성하는 데 도움이 되는 추가 정보
context 제공를 통해 ai 결과값(성능)을 크게 향상시킬 수 있음
ex) 대화 상황, 맥락 등
3. 입력 데이터
AI 모델이 처리해야할 정보
ex) 번역해야할 문장
4. 출력 표시기
기대하는 응답 형태
명령어에 포함되어 있는 경우도 있음
ex) 출력 포맷 지정
프롬프트 팁
좋은 프롬프트를 작성하기 위한 요소
1. Context 제공
2. 모호하지 않은 명확한 작업을 설정
달성해야할 구체적인 목표, 목적 설정이 중요함 (구체성)
3. 반복을 통한 개선
결과물을 테스트하고 평가하는 작업을 무한 반복
각 반복은 이전 반복의 출력에 의존해야하며, 이 출력을 통해 프롬프트를 정제하고 개선해야한다.
※ 여러 참고 예시 프롬프트들
https://smith.langchain.com/hub
프롬프트 종류
Zero Shot 프롬프트
기본 지식을 활용하는 프롬프트
추가 학습 데이터, 예시 등을 주지 않고 작업을 수행하도록 모델에게 지시
단점 - 원하는 것과 정확히 일치하는 정보를 얻을 확률이 떨어짐
Few Shot 프롬프트
AI 모델에게 특정 작업이나 개념에 대해 몇 가지 예(Shot)를 프롬프트, 지침과 함께 제시하는 방식
주어진 작업에 대해 활용 가능한 데이터가 적은 경우 유용
파인 튜닝을 통해 기존 모델을 미세 조정하는 데 사용할 수 있음
One Shot 프롬프트
한 가지 예만 제공하는 경우
생각의 사슬 프롬프팅
LLM의 추론 능력을 개선하기 위한 프롬프팅. 여러 단계가 필요한 문제를 단계별로 분해하도록 하여 복잡한 추론 문제를 해결하도록 함
LLM 모델이 보다 인간적인 방식으로 문제 해결에 접근할 수 있게 유도하는 방식
예시) 문제를 여러 추론 단계들로 세분화
- Zero Shot 프롬프트 사용한 케이스 -
Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?
A: The answer is 9
Q: John takes care of 10 dogs. Each dog takes .5 hours a day to walk and take care of their business. How many hours a week does he spend taking care of dogs?
A:
답변
The answer is 50. 틀린 답변
- One Shot 프롬프트를 사용해 생각의 사슬 프롬프팅한 케이스 -
Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?
A: Shawn started with 5 toys. If he got 2 toys each from his mom and dad, then that is 4 more toys. 5 + 4 = 9. The answer is 9.
Q: John takes care of 10 dogs. Each dog takes .5 hours a day to walk and take care of their business. How many hours a week does he spend taking care of dogs?
A:
답변
John takes care of 10 dogs. Each dog takes .5 hours a day to walk and take care of their business. So that is 10 x .5 = 5 hours a day. 5 hours a day x 7 days a week = 35 hours a week. The answer is 35 hours a week. 정답
LLM 모델이 복잡한 문제를 각기 해결될 수 있는 중간 단계로 나눌 수 있기 때문에 정확한 답변이 가능하다..
'단계별로 생각해보자'와 같은 내용을 추가하면 Zero Shot 프롬프트를 사용해 생각의 사슬 프롬프팅도 가능하다. 이 경우 모델에 창의적인 자유를 부여할 수 있다.
ReAct(Reason-Act) 프롬프트 엔지니어링
외부 소스를 통해 생각의 사슬처럼 추론이 가능하다면, LLM이 자체적으로 작업을 생성(추론)하고 그에 따라 계획을 업데이트하고 외부 소스에서 추가 정보를 얻기 위해 단계를 실행하는 능력을 결합할 수 있다.
'Python > LLM' 카테고리의 다른 글
토큰 한도 처리 전략 (4) | 2024.07.22 |
---|---|
Agent 구현 (0) | 2024.07.17 |
Vector Db, Embedding (0) | 2024.07.07 |
[기본] LangChain (0) | 2024.06.30 |