본문 바로가기

Graduation Project

프롬프트 엔지니어링

강의 영상: https://www.youtube.com/watch?v=P8yKg88xF_8
실습 코드: https://bit.ly/3W89UkV

 

프롬프트 엔지니어링

생성 AI 종류

  • text to Image
  • Text to Speech
  • Text to Text - chatGPT
  • Text to Video

 

chatGPT 학습 방법

  • GPT
    Generative Pre-trained Transformer(사전 훈련된 생성 변환기)
    단어들을 주고 다음에 나올 단어를 예측하는 방식
  • RLHF:
    사람이 직접 지시/답변 데이터 구축 후 학습 → 생성된 글에 순위 매기기 → 글의 순위를 통해 강화학습

 

chatGPT 사용법

  • ~역할로 ~을 해서 ~형태로 보여줘
    (예시)  카피라이터 역할로 광고를 만들어서 PDF 형식으로 보여줘
  • 문제 풀기

 

프롬프트의 정의

  • 과거 → 컴퓨터는 사람의 말을 이해하지 못하므로 사람이 프로그래밍 언어로 컴퓨터에게 명령문 입력
  • 현재 → 거대언어모델로부터 응답을 생성하기 위한 입력. 거대언어모델이 사람의 말을 이해할 수 있으므로 사람의 말로 프롬프트가 가능해졌다. 텍스트가 아니어도 가능하다.

 

프롬프트 엔지니어링?

  • 거대언어모델로부터 “원하는 응답”을 생성하기 위해 입력프롬프트를 만드는 행위.
  • 프롬프트의 미세한 조정에 따라 결과물이 큰 차이를 보인다.
    (아래 글을 요약해줘 vs 아래 글을 3문장으로 요약해줘. 각 문장은 1, 2, 3으로 시작해야해.)
  • 내가 원하는 품질의 응답을 얻으려면 거대언어모델이 잘 이해할 수 있는 정제된 언어로 구조화된 프롬프트를 구성해야 한다. 또한 원하는 결과가 나올 때까지 프롬프트를 재구생 해야 한다.
  • 구체적으로, 심플하고 명확하게, 절차적으로, 예시를 들어서 작성하는 것이 좋다
  • 프롬프트: 인공지능에게 입력하는 값
  • 프롬프팅: 프롬프트를 입력하는 일
  • 프롬프트 엔지니어링: 원하는 결과를 얻기 위해 좋은 프롬프트를 만드는 일
  • 프롬프트 엔지니어: 프롬프트 엔지니어링을 하는 사람/직업

 

프롬프트 최적화

  • Zero-shot prompts: 예시가 없는 프롬프트. 제대로된 응답을 얻기 어렵다
    (예시) 한국의 수도는 어디야?
  • Few-shot prompts: 몇개의 예시를 보여주며 질문. 예시를 통해 유추하여 성능이 좋아진다. 입력 길이가 길어져서 처리량이 많아진다
    (예시)  스페인의 수도는 마드리드고 영국의 수도는 런던이야. 한국의 수도는 어디야?
  • COT(chain-of-thought-prompt): 논리적으로 순서대로 설명. step-by-step 설명. 입력 길이가 길어져서 시간과 비용이 늘어난다.
  • self-consistency technique: 같은 프롬프트로 여러 결과를 만들고 좋은 결과를 선택.
  • Embeddings + vector databases: 벡터 데이터베이스를 활용.

 

Cost and latency

입력 + 출력의 길이가 길수록 비용이 커진다

 

 

프롬프트 엔지니어링으로 LLM 사용법 극대화하기

개발자를 위한 프롬프트 엔지니어링: https://www.youtube.com/watch?v=H4YK_7MAckk&t=6s

 

Base LLM vs Instruction Tuned LLM

  • Base LLM: 단순히 다음 단어 예측
  • Instruction Tuned LLM: LLM이 질문에 대해 잘 답변하도록 학습

Iterative: 아이디어 → 프롬프트 구성 → 결과 도출 → 문제 분석 (과정 반복)

 

 

하이퍼 파라미터 조절

하이퍼 파라미터: 생성 모델의 출력을 제어하거나 다양한 결과를 생성하는 기능. 답변의 랜덤성, 길이, 창의성을 조절하는 기능.

  • temperature(온도): 모델의 출력 확률 분포를 조절한다
    온도가 높을 수록 다양하고 창의적인 답변, 낮을수록 확실하고 일관성 있는 답변
  • max_token(최대 토큰 수): 답변으로 생성할 수 있는 최대 토큰 수 제한. 출력의 길이를 조절한다.
  • top_p, top_k: 토큰의 다양성을 조절하는 데 도움을 준다.
    • top_p: 출력 확률의 누적 합이 특정 임계값(0~1)을 초과하지 않도록 제한. 누적 확률이 확률 p에 다다르는 최소한의 단어 집합으로부터 샘플링
    • top_k: 확률 분포에서 가장 높은 k개의 후보 고려해 한 개 출력

 

역할 지정하기

  • system: chatGPT의 역할 부여
  • user: 사용자 질문 내용
  • assistent: 더 좋은 답변을 위한 추가적인 설명

 

프롬프트 엔지니어링의 원칙
- 명확하고 구체적인 프롬프트
- 모델이 생각할 시간을 갖도록 많은 예시 부여, 절차 설명
- 반복적인 프롬프트 업데이트 시도