프롬프트와 프롬프트 엔지니어링
Last updated
Last updated
지난 장에서는 LLM이란 무엇인지. LLM의 특징이 무엇인지 알아보았습니다. 이번 장에서는 LLM과 소통하기 위한 프롬프트의 개념과 프롬프트를 설계하기위한 방법론들에 대하여 알아보도록 하겠습니다.
프롬프트는 LLM모델과 유저간의 대화를 하는 창입니다. 유저는 프롬프트를 통해 AI모델과 대화를 하고 원하는 응답결과를 반환받습니다.
다만, 내가 작성하는 프롬프트의 설계방법에 따라 같은 내용을 질문하더라도 훨씬 높은 퀄리티의 응답결과를 얻어 낼 수 있습니다. 이번 장에서는 효율적인 응답결과를 얻어내기 위한 프롬프트 설계 방법과, 이론들에 대해서 배워보도록 하겠습니다.
프롬프트의 기본요소를 사용하는 것 만으로도 프롬프트의 퀄리티를 높일 수 있음.
최신 버전의 모델을 사용한다.
최신 모델일수록 이전 버전의 모델에 비해 더 많은 양의 데이터를 학습한 것
단, 모델의 응답속도와 가격을 비교하여 합리적인 모델을 선택하는 것도 중요
모델이 해야할 내용을 명확하게 지시하자.
한국어를 사용하여 프롬프트를 작성할 때는 여러 의미로 해석될 수 있는 단어사용을 지양 한다.
쓰다 X 작성해 O
적다 X 나열해 O
단문 중심의 간결한 문장 사용
LLM은 문장이 길고 복잡할 수록 핵심을 파악하지 못한다. 따라서 최대한 짧고 간결한 문장을 사용하는게 효과적이다.
질문하고자 하는 내용이 3가지가 있다면 이를 한번에 물어보지 말고, 한번에 1가지만 물어보는 것을 권장.(사람도 답변하기 힘들게 물어보지 말것)
하지말아야할것 보다 해야할 것을 지시한다.
'xxx는 하지마세요'와 같은 부정적 키워드 보단 'xx 하세요'와 같은 긍정적 키워드를 사용
LLM은 부정정키워드도 때론 강조하여 표시할 때가 있음.
LLM이 해석하기 쉬운 구조로 만들기
Markdown, 파이썬 , xml tag를 활용하여 구조화
프롬프트의 기본 요소를 포함하여 GPT에게 LLM의 특징에 대하여 질문하는 프롬프트를 설계하시오.
조건 3) 응답데이터는 Table형식의 데이터로 응답 받을 것 EX) 표형식 데이터 | 특징 | 내용 | |------------------------------------------------| | 특징1 | 내용 | | 특징n | 내용 |
Prompt + Engineering의 합성어로 직역하면 프롬프트 공학, 프롬프트 제조 과정을 의미
프롬프트 엔지니어링이란 LLM모델을 통해 원하는 답변을 얻을 수 있도록 프롬프트를 최적화 하여 설계하는 기술을 의미합니다.
GPT와 같은 LLM을 사용했을 때 부정확한 답변을 응답 받는경우가 종종 있으셨을 겁니다. 이는 LLM이 학습한 데이터의 문제일 수도 있지만 대부분의 경우는 사용자의 요청내용(Prompt)이 응답데이터를 얻기에 부정확 했기 때문입니다.
제대로 설계되지 않은 프롬프트는 LLM에게 혼동을 초래하고 잘못된 응답을 반환할 가능성이 높습니다. 이를 방지하기 위해서는 적절히 설계된 프롬프트가 필요하고 이를 위해선 프롬프트 엔지니어링 기술이 필요합니다. 프롬프트 엔지니어링을 활용하면 다음과 같은 장점이 있습니다.
LLM모델의 성능을 극대화하고, 출력 결과물을 제어하여 사용자에게 높은 만족도를 부여할 수 있다
LLM이 문맥의 패턴을 더욱 정확하게 이해하여 환각현상 및 편향을 줄이고 관련성 높은 응답결과를 받을 수 있다.
효율적인 템플릿 설계로 모델비를 절약할 수 있음
수학과 같은 LLM이 못하는 기능을 강화할 수 있음.
프롬프트를 정교하게 설계하는 기술을 전문적으로 다루는 직종을 프롬프트 엔지니어라고 부릅니다. 최근 국내에서도 프롬프트 엔지니어를 채용하는 회사가 증가하는 추세입니다. 프롬프트 엔지니어가 맡게될 업무는 다음과 같습니다.
프롬프트 엔지니어를 끝으로 흐름에 대한 마무리가 애매함. 프롬프트 엔지니어링의 중요성을 좀더 강조할것.
응답출력 XML, JSON형식으로 받기 실행 가능하도록 소스코드 추가
조건 1 ) 문맥은 1장을 참고하여 작성할것
조건 2) 입력데이터는 1장 LLM의 이해에서를 이용하여 작성할 것.