우잉's Development

[LLM 기본] 프롬프트 엔지니어링 기본 본문

Deep learning/LLM

[LLM 기본] 프롬프트 엔지니어링 기본

우잉이 2023. 9. 5. 15:50
728x90
반응형

자연어 처리 태스크 TOP 10

  1. Language Translation : 한 언어에서 다른 언어로 텍스트를 번역하는 작업 
  2. Style Translation : 텍스트의 스타일을 다른 스타일로 변경하는 작업
  3. Editing and Rewriting : 텍스트의 내용을 명확하게 하거나 의도를 더 잘 전달하도록 문장 또는 문서를 수정하거나 다시 작성하는 작업
  4. Summarization : 긴 텍스트를 핵심내용을 포함하는 짧은 텍스트로 축소하는 작업
  5. Named Entity Recognition : 텍스트에서 특정 정보(사람, 장소, 조직, 날짜 등)를 식별하는 작업
  6. Sentiment Recognition :  긍정적, 부정적, 중립적 등 텍스트의 다양한 감정상태를 판단하는 작업
  7. Document classification : 텍스트 문서를 사전 정의된 카테고리 또는 클래스로 분류하는 작업
  8. Topic Modeling : 문서 집합에서 주제를 발견하고 각 문서에 주제를 할당하는 작업
  9. Similarity Evaluation : 두 개의 텍스트 사이의 유사성을 측정하는 작업
  10. Question Answering : 주어진 텍스트에서 질문에 대한 정보를 찾아 답변하는 작업

액팅 & 포맷팅

  • Expert Prompting
    - LLM에게 전문가로서 응답하도록 요청하는 방법
    - 배경 지식을 암시적으로 이해하고 답변함으로써 성능이 크게 향상됨
    - LLM에게 프롬프트/질문과 관련된 특정분야의 전문가를 찾아달라고 요청하고, 제시받은 전문가인 것처럼 질문에 응답하도록 하여 도메인이 정해지지 않은 서비스에도 제너럴하게 활용 할 수 있음.
    -논란의 여지가 있었으나 MIT수학 및 EECS커리큘럼 탐색에 매우 뛰어난 성능을 얻었다고 함.
  • Formating
    - 출력 포맷 지정 :  기본적으로 사용하게 되는 Chat 모델의 경우 기본적으로 장황하게 설명하므로, 결과값으로 자동화하는 등의 목적으로 활용하려면 출력 포맷을 정확하게 지정해 줄 필요가 있음.
    - 일반 리스트 : 목록 앞에 '-'를 표시함. 순서가 있는 리스트는 앞에 번호를 붙여줌.
    - key-value Pair :  key와 value형식으로 표현 ex) 이름 : John / 나이 :30
    - 테이블
    - 마크다운 : 복잡한 HTML태그 대신 텍스트를 간단한 형식으로 구성해서, 이를쉽게 HTML로 변환할 수 있도록 해주는 텍스트 작성 규칙 -> 매우 간편
    - YAML : 데이터 직렬화 언어로, 설정 파일, 데이터 교환, 로딩 데이터등에 사용 
                   기계가 읽을 수 있도록 작성된 형식 중에서는 인간이 읽기 쉬운 형식중 하나여서 간단한 데이터를 표현하는
                   데 자수 사용됨.
    - JSON : 구조화된 데이터를 표현하는데 가장 많이 사용되는 데이터 포맷으로, XML보다 형식이 간단하고 JavaScript
                   에서 기본적으로 사용할 수 있어, 프로그래밍 언어 혹은 시스템 간에 데이터를 교환하는 데에 준 표준처럼 사
                   용되고 있음. 

프롬프트 체이닝

: 일련의 프롬프트와 그에 다른 응답을 순서대로 연결하여 하나의 지속적인 대화나 여러 하위 태스크로 이루어진 복잡한 태스크를 수행하는 기법 
- Self-Consistency, Selection-Inference, Least-to-Most, ReAct등 고수준의 프롬프트 엔지니어링은 거의 모두 프롬프트 체이닝을 사용
1. 단순 프롬프트 연결 (생각하고, 결론내기)

2. 이전 결과에 따른 분기 처리
3. JSON포맷을 이용한 결과 내 유사 체이닝 효과주기

 

좋은 프롬프트를 만들려면

  1. 지시문을 명확하게 만든다.
  2. 적절한 예시를 제공한다.
  3. 모델에게 생각할 시간을 준다
  4. 작업을 하위 작업으로 분해한다.
  5. 적절한 컨텍스트를 제공한다.
  6. 프롬프트 엔지니어링 기법이 작동하지 않을 수 있다.
  7. 프롬프트를 구조화하여 작성한다.

성공하지 않아도 아래와 같은 방법을 사용

  1. 지시문을 반복적으로 사용해본다.
  2. 지시문이나 컨텍스트 위치를 바꿔본다.
  3. 지시문의 단어를 다른 단어로 바꿔본다.

반복적으로 개선한느 전략이 필요하고 광범위한 시행착오가 있더라도 포기하지 않는 것이 중요하다.

728x90
반응형
Comments