-
ChatGPT에 잘 물어보는 방법을 알려달라고 역으로 요청하는게 효율이 좋다
-
GPT-engineer 라이브러리
-
입력과 출력을 명확하게 정의해야 한다.
- 입력 : 문장, (키워드)
- 출력 : 요약된 문장(2~3문단 이내)
-
ROLL(역할) / TASK(문제) / FORMAT(출력방식) 을 정의해서 사용하는 챗봇 생성
-
프롬프트는 자세하게 할 수록 좋다.(미세 조정에 따라 결과물의 차이가 큼)
-
프롬프트 엔지니어링 잘 하는 방법
- 구체적으로
- 심플하고 명확하게
- 절차적으로
- 예시를 들어서
-
프롬프트 최적화
- Zero-shot → Few-shot prompt
- Zero-shot은 성능을 기대하기 어렵다.
- 예시를 들어주면 좋은 성능을 기대할 수 있다.
- 입력 길이가 길어지는 만큼 더 많은 비용과 시간이 걸릴 수 있다.
- 질문 → 예시1 → 예시2 → 원하는 출력
- 이런 방식으로 Few-shot을 좀 더 구체화시켜 GPT에 입력할 수 있다.
- COT(Chain-Of-Thought) prompt
- 논리적 순서대로(step by step)
- self-consistency technique
- 같은 프롬프트로 여러 결과를 만들고 좋은 결과 선택
-
최소한 Few-shot 정도의 절차를 가져야 원하는 결과를 확보할 수 있을 것
-
벡터 DB를 사용해 내부 정보를 등록해 놓고 기록을 비교해가며 답을 가져올 수 있음
-
Input과 Output의 합이 길면 길수록 비용과 시간이 증가한다.
-
반복되는 프롬프트 개발
- 프롬프트 가이드라인
- 명확하고 특징적
- 원하는 출력이 안나왔을 때 분석
- 아이디어와 프롬프트를 정리
- 반복
- 반복적인 프로세스
- 뭔가 시도한다.
- 원하는 대로 결과가 안나오면 분석한다.
- 지시를 명확히하고 생각할 시간을 갖는다.
- 프롬프트와 예제를 정리한다.
-
하이퍼파라미터 조정
- temperature
- 모델의 출력 확률 분포
- 높을 수록 무작위적이고 창의적
- 낮을수록 확인있고 일관적
- max_tokens
- ChatGPT의 답변의 최대 토큰을 제어
- top_p || top_k
- 매개변수 토큰의 다양성 조절
- top_p는 출력확률의 누적 합이 0~1사이를 초과하지 않도록 제한
- top_k는 확률 분포에서 가장 높은 K개의 후보만 고려
-
역할 지정
- Role을 통해 system과 user, assistant를 만들어 활용할 수 있다.
- System : 역할 정의
- Assistant : Chat 모델
- User : 사람
-
프롬프트 엔지니어링 원칙
- 명확하고 구체적인 프롬프트
- 모델이 생각할 시간을 갖도록 반복적인 프롬프트 업데이트 시도
- 능력 : 요약, 추론, 변형, 확장, 챗봇