안녕하세요.
오늘의 컨텐츠는 프롬프트 엔지니어링 입니다.
생성형 AI & LLM 등 나오면서 프롬프트와 프롬프트 엔지니어링에 대한 내용이 많이 이야기 됩니다.
오늘은 프롬프트 작성과 프롬프트 엔지니어링에 대해서 간단히 정리해 보겠습니다.
[프롬프트]
프롬프트는 대규모 언어 모델이라고 불리는 LLM 에서 응답을 생성하거나 작업을 완료하기 위한 가이드 입니다.
이 프롬프트를 작성하는 방식에 따라 모델이 반환하는 답변의 정확성과 형식이 변화 합니다.
즉, "프롬프트 엔지니어링"은
인공 지능(AI) 모델에게 원하는 결과를 얻기 위해 프롬프트를 효과적으로 작성하고 조정하는 과정을 말합니다.
그리고 프롬프트 작성을 위해서는 아래와 같은 기본적인 사항이 있습니다.
프롬프트 작성......
- 원하는 답변을 제공가능한 적절한 모델의 선택
- 모델에 따른 프롬프트 작성 규칙의 이해
- 반복적인 프롬프트 엔지니어링을 통해서 원하는 결과를 도출
- 간단한 제로샷 프롬프트에서 시작, 그리고 지속적인 수정 작업을 거치며 답변의 정확도 보정
- 제로샷 이후 몇가지 예시를 추가하면서 답변의 정확도 및 형태 정의
- 프롬프트의 컨텍스트와 예시를 조정 후 만족스럼 답변이 되지 않을때, 모델에 대한 미세조정 진행
[프롬프트 작성을 위한 형식 정의]
원하는 답변을 위해서는 프롬프트의 작성이 필요하며, 즉 전달하고자 하는 "질문" 외의 "사전정보"를 프롬프트에 포함하고 있어야 합니다.
이런 작성의 예시 2가지를 보겠습니다.
첫번째, 질문과 컨테스트 그리고 답변에 대한 출력 형식을 지정한 경우,
이러한 구성 요소가 모두 필요하지는 않지만 이런 작업을 통해서 답변을 제공시 어떤 배경과 정보를 가지고 답변을 제공하라는 지시가 가능합니다.
Question :
Context :
Answer :
두번째, 별도의 맥락 구성 없이 질문과 답변에 대한 프롬프트 정의가 되는 경우
이 경우는 따로 사전 정의한 내용이 없으므로 순전히 질문에 따라 답변의 제공 방식이 결정됩니다.
Q:
A:
이제 좀더 자세히 프롬프트 작성의 요소를 보면, 프롬프트 내에는 2가지 Content(문맥)와 Instruction(지침) 이 있습니다.
둘다 원하는 답변을 제공 받기위한 방법입니다.
Content
모델에게 제공되는 정보의 배경이나 전체 상황을 의미합니다.
이것은 주어진 상황에 대한 추가적인 문맥을 제공하여 모델이 더 정확하고 의미 있는 응답을 생성하도록 도와줍니다.
이전의 대화 내용에 대한 이해, 답변을 위한 상황 설명, 외부 정보 및 설명, 사용자 목적 및 의도, 특정 도메인 지식등이 이에 활용 됩니다.
Instruction
모델에게 특정 작업을 수행하거나 원하는 방향으로 응답을 생성하도록 명시적으로 지시하는 부분을 말합니다. Instruction은 모델의 행동을 조절하고 원하는 결과를 얻기 위해 중요한 역할을 합니다.
따라서 Instruction 작성시에는 명확한 명령문으로 간결하게, 그리고 원하는 형식을 명시해야 합니다.
[프롬프트 샘플]
아래 예시는 나에게 있는 메일 중에 중요도가 높은 3개의 메일을 요청하는 프롬프트 샘플입니다.
Instruction 모델에게 중요도가 높은 이메일의 제목을 나열하도록 지시
Context 이메일 중 중요도가 높은 이메일을 찾는 작업을 요청하는 사용자의 의도를 제공
Instruction이 포함된 프롬프트:
"받은 이메일 중에서 중요도가 높은 상위 3개의 이메일을 찾아서 제목을 나열해주세요."
Context:
- 사용자: "제 이메일에 대해 중요한 것들을 찾아서 알려주세요."
[원하는 것에 프롬프트를 집중]
추가로 프롬프트 작성시에 중요한것은 무엇을 요청하는 가 입니다.
즉, 무엇을 하지 않길 원한다는 내용 보다는 명확하게 무엇을 해주길 원하는 것에 집중해야 합니다.
만약 아래의 2개의 프롬프트가 있다면 첫번째가 좀더 효율적인 프롬프트 입니다.
- 15세 어린이에게 LLM 개념을 3~5문장으로 설명해주세요.
- LLM 에 대해 설명해보세요. 짧고 너무 복잡한 언어를 사용하지 마십시오.
[프롬프트 조정 후 모델 미세조정]
이러한 프롬프트 작성 과정을 통해서 답변을 만들때 최종적으로는 모델에 대한 미세조정이 필요할수 있습니다.
일반적으로 모델의 미세조정은 크게 3가지 변수가 존재하며 이를 통해 답변을 조정합니다.
temperature
온도가 낮을수록 결과가 더 현실적입니다. 온도가 낮다는 것은 항상 다음 토큰이 선택된다는 의미입니다. 사실 기반 질문 답변의 경우 온도를 0과 같이 낮은 값으로 설정하는 것이 좋습니다.
top_p
이 매개변수는 일관성과 다양성의 균형을 유지하는 텍스트를 생성하는 기술인 핵 샘플링을 제어합니다.일반적으로 0과 1 사이의 값으로 설정합니다. 모델이 사실적인 답변을 생성하도록 하려면 top_p를 0과 같은 낮은 값으로 설정합니다.
반복 페널티(Repetition Penalty):
반복 페널티는 모델의 출력에서 반복되는 내용을 줄이는 역할을 합니다. 높은 값은 반복을 최소화하고 다양성을 증가시키며, 낮은 값은 반복을 허용합니다.
Stop Sequence:
출력을 제어하기 위해 중단 시퀀스를 사용할 수 있습니다. 예를 들어, 특정 문장을 만나면 그 이후의 출력을 무시하거나 중단할 수 있습니다.
너무 글이 길어지네요... 두서도 없고... 마칩니다.
'IT&컴퓨터 > IT 인터넷' 카테고리의 다른 글
csv to json ( any convert ), csv 변환 (0) | 2024.01.20 |
---|---|
watsonx.ai python 이용해보기, watsonx.ai 를 이용한 ChatGPT (1) | 2023.10.27 |
huggingface 사용법 -챗 만들기(space 만들기), 초간단 샘플 LLM 만들기 / Using Huggingface - Create Chat (Create Space), Create Ultra-Simple Sample LLM (0) | 2023.10.16 |
IBM Watsonx Assistant 사용자 가이드 (0) | 2023.10.12 |
챗GPT 소설쓰기, chatgpt novel (Starcraft universe) (1) | 2023.10.06 |