ChatGPT prompt engineering

freshness·2024년 5월 8일
post-thumbnail
  1. ChatGPT에 잘 물어보는 방법을 알려달라고 역으로 요청하는게 효율이 좋다

  2. GPT-engineer 라이브러리

  3. 입력과 출력을 명확하게 정의해야 한다.

    1. 입력 : 문장, (키워드)
    2. 출력 : 요약된 문장(2~3문단 이내)
  4. ROLL(역할) / TASK(문제) / FORMAT(출력방식) 을 정의해서 사용하는 챗봇 생성

  5. 프롬프트는 자세하게 할 수록 좋다.(미세 조정에 따라 결과물의 차이가 큼)

  6. 프롬프트 엔지니어링 잘 하는 방법

    1. 구체적으로
    2. 심플하고 명확하게
    3. 절차적으로
    4. 예시를 들어서
  7. 프롬프트 최적화

    1. Zero-shot → Few-shot prompt
      1. Zero-shot은 성능을 기대하기 어렵다.
      2. 예시를 들어주면 좋은 성능을 기대할 수 있다.
      3. 입력 길이가 길어지는 만큼 더 많은 비용과 시간이 걸릴 수 있다.
      4. 질문 → 예시1 → 예시2 → 원하는 출력
      5. 이런 방식으로 Few-shot을 좀 더 구체화시켜 GPT에 입력할 수 있다.
    2. COT(Chain-Of-Thought) prompt
      1. 논리적 순서대로(step by step)
    3. self-consistency technique
      1. 같은 프롬프트로 여러 결과를 만들고 좋은 결과 선택
  8. 최소한 Few-shot 정도의 절차를 가져야 원하는 결과를 확보할 수 있을 것

  9. 벡터 DB를 사용해 내부 정보를 등록해 놓고 기록을 비교해가며 답을 가져올 수 있음

  10. Input과 Output의 합이 길면 길수록 비용과 시간이 증가한다.

  11. 반복되는 프롬프트 개발

    1. 프롬프트 가이드라인
      1. 명확하고 특징적
      2. 원하는 출력이 안나왔을 때 분석
      3. 아이디어와 프롬프트를 정리
      4. 반복
    2. 반복적인 프로세스
      1. 뭔가 시도한다.
      2. 원하는 대로 결과가 안나오면 분석한다.
      3. 지시를 명확히하고 생각할 시간을 갖는다.
      4. 프롬프트와 예제를 정리한다.
  12. 하이퍼파라미터 조정

    1. temperature
      1. 모델의 출력 확률 분포
      2. 높을 수록 무작위적이고 창의적
      3. 낮을수록 확인있고 일관적
    2. max_tokens
      1. ChatGPT의 답변의 최대 토큰을 제어
    3. top_p || top_k
      1. 매개변수 토큰의 다양성 조절
      2. top_p는 출력확률의 누적 합이 0~1사이를 초과하지 않도록 제한
      3. top_k는 확률 분포에서 가장 높은 K개의 후보만 고려
  13. 역할 지정

    1. Role을 통해 system과 user, assistant를 만들어 활용할 수 있다.
    2. System : 역할 정의
    3. Assistant : Chat 모델
    4. User : 사람
  14. 프롬프트 엔지니어링 원칙

    1. 명확하고 구체적인 프롬프트
    2. 모델이 생각할 시간을 갖도록 반복적인 프롬프트 업데이트 시도
    3. 능력 : 요약, 추론, 변형, 확장, 챗봇

0개의 댓글