데일리 미션/Article

Article : 개발자를 위한 '프롬프트 엔지니어링' 시작하기

pipiiiiii 2024. 8. 5. 16:24

https://yozm.wishket.com/magazine/detail/2701/

 

개발자를 위한 ‘프롬프트 엔지니어링’ 시작하기 | 요즘IT

일반적으로 프롬프트는 ‘지시한다’, ‘말을 전한다’라는 뜻을 가지고 있습니다. LLM(Large Language Models)에서 프롬프트는 AI 모델에게 내리는 지시 사항 혹은 첫 대화의 물꼬를 뜻하는데요. 프롬

yozm.wishket.com

 

 

 

<아티클 내용 요약>

챗GPT가 처음 공개되었을 때 많은 사람들이 깜짝 놀랐다. 마치 채팅하듯 자연어로 질문하면 답을 제공해 주기 때문이다. 금방이라도 모든 검색을 다 대체할 수 있을 것 같았다. 하지만 틀린 답을 그럴싸하게 말하거나, 엉뚱한 답을 내놓기도 한다. 왜 그럴까?

 

여기엔 편향된 학습데이터, 과적합 같은 여러 이유가 있지만 물어보는 사람이 질문의 컨텍스트를 완벽하게 전달하지 못해서 발생하는 경우도 많다. 그렇다면 이러한 딴소리 현상을 방지하려면 어떻게 해야 할까? 그 실마리는 바로 프롬프트(Prompt)에 있다. 

 

일반적으로 프롬프트는 '지시한다', '말을 전한다'라는 뜻을 가지고 있다. LLM(Large Language Models)에서 프롬프트는 AI 모델에게 내리는 지시 사항 혹은 첫 대화의 물꼬를 뜻하는데, 프롬프트를 설계하는 기술을 '프롬프트 엔지니어링'(Prompt Engineering)이라고 한다. 프롬프트 엔지니어링은 AI 모델에게 특정 상황과 요구사항을 잘 지시하여, 기대하는 결과물을 만들게 하는 새로운 방식의 코딩으로 프롬프트다. 

 

 

1. 프롬프트 엔지니어링의 중요성

프롬프트 엔지니어링이 점점 더 중요해지는 이유가 뭘까?

첫째, 품질 일관성을 유지할 수 있다. 

일상에서 누군가에게 일을 부탁할 때, 애매하게 지시하면 기대한 결과물을 받기 어렵듯, AI 모델에게 상세하고 정확하게 지시해야 결과물을 기대한 품질로 받을 수 있다. 

 

다음은 보안/윤리적 이슈다. 

LLM은 그야말로 방대한 지식을 학습했고, 질문에 따라 그 대답이 변하곤 한다. AI의 윤리적 문제에 대한 논란은 늘 끊이지 않는다. 이러한 문제는 AI의 학습 단계에서 방어할 수 있지만 유해하거나 오해의 소지가 있는, 혹은 편향적인 콘텐츠를 생성하지 않도록 프롬프트로 제어할 수도 있다. 

 

마지막으로는 토큰(Token)의 경제성이다. 

토큰은 LLM이 인식하는 문자 데이터 단위를 말한다. 토큰 수에 따라 LLM이 얼마나 많은 컨텍스트를 이해하고 결과물을 만들어 낼 수 있는지가 좌지우지된다. 이 프롬프팅을 잘 세팅해 두면 적은 인풋으로도 더 유용한 결과물을 생성해 낼 수 있다. 

 

프롬프트 엔지니어링은 AI 모델의 잠재력을 극대화하고 원활한 사용자 경험을 보장하는 데 있어 중추적인 역할을 한다. LLM이 더 많은 서비스에 사용되면 사용될수록 중요성은 더 커지고 더 많이 주목받을 것이라 예상된다. 

 

 

2. 프롬프트 엔지니어링 4S 원칙

좋은 프롬프트 엔지니어링이란 어떤 것일까? 좋은 프롬프트를 짜기 위한 4가지 원칙은 아래와 같다. 

  1. Single : 하나의 질문 혹은 작업에 집중하라
  2. Specific : 명확하고 상세하게 지시하라
  3. Short : 간결하게 핵심을 전달하라.
  4. Surround : 주변 컨텍스트를 제공해서 질문의 상황을 잘 전달하라. 

비단 프롬프트 엔지니어링에서 뿐만 아니라 문제를 단순화하고 집중해, 경쾌하고 짧게 해결해 나가는 방법은 모든 문제 해결을 관통하는 원칙이다.

 

4S의 원칙대로 프롬프트를 작성하는 기준은 아래와 같다. 

  • 답변 방식을 확실하게 정해주기
    구체적인 형식을 정확하게 전달하면 원하는 결과를 얻을 확률이 높아진다. 

  • 구역을 확실히 잡아주기
    미리 구역을 잡아주면 엉뚱한 대답이 나오는 것을 방지할 수 있다. 환각이라고 불리는 생성형 AI의 '할루시네이션은' 정보의 범위를 만들어 방지할 수 있다. 

  • 다시 다시 그리고 다시 해보기 
    사람끼리의 대화에서 컨텍스트를 한 번에 다 전달한다는 것도 어렵고, 질문을 단번에 이해시키는 것도 어렵다. AI 모델 역시 마찬가지다. 결과물이 나오긴 했지만 내 맘에 안들 수 있다. 계속 AI와 티키타카하며 결과물을 세심하게 잡아나가는 것, 그것이 프롬프트 엔지니어링 같다.   

 

 

3. 반드시 알아둬야 할 프롬프팅 테크닉 

기존에는 ML 모델을 만들려면 모델을 학습시킬 데이터를 준비하고, 파라미터를 조정하고, 파인튜닝과 트레이닝이라는 학습 과정을 거쳐야 했다. 반면 LLM에서는 별도 데이터를 많이 제공하지 않고도, 약간의 정보를 프롬프트에 전달하는 것만으로 모델을 학습시킬 수 있다. 즉, 손쉽게 학습시켜 원하는 결과물을 뽑아낼 수 있게 된 것이다. 

 

이때 알아둬야 할 프롬프팅 기법은 아래와 같다. 

  • zero-shot prompting
    우리말로 제로샷 프롬프팅으로 부른다. 
    별다른 정보나 컨텍스트 전달 없이 지시를 내리는 방법이다. LLM의 위력을 느낄 수 있는 방법이라 할 수 있다. 

  • one-shot prompting
    우리말로는 원샷 프롬프팅으로 부른다. 
    기대하는 결과물에 대한 예시 하나를 제시해 컨텍스트를 넘겨주는 방법이다. 

  • few-shot promptng
    퓨샷 프롬프팅이라고 읽는다. 
    예시를 두 개 이상 전달해, 답변을 더 세밀하게 조정하고 답변의 일관성을 올려주는 기법이다. 

  • Chain of Thought(CoT)
    우리말로 생각의 사슬이라고 번역할 수 있다. 
    앞서 살펴보았던 것처럼, 추론에 있어서도 추론 방법의 예시를 전달하게 되면 더 좋은 응답을 받아 볼 수 있다. 

  • zero-shot CoT
    한 단계씩 생각해 보라고 지시하는 기법이다. 
    사람도 한 번에 모든 문제를 풀려고 하면 중간에 꼬이기도 하는데, AI도 마찬가지다. 하나씩 실타래를 풀어가듯 문제를 풀다 보면 정답에 가까워질 수 있다. 

  • Tree of Thought(ToT)
    사고의 트리라고도 불린다. 
    문제 중심에서 시작해 연관된 여러 아이디어를 나뭇가지처럼 확장해 나가는 방법이다. 이를 통해 문제를 다방면으로 바라보고, 체계적으로 분석해 다양한 가능성 탐색을 할 수 있다. 

    AI 모데에게 가상의 전문가들을 세팅하고, 각 관점에서 문제를 풀어 그 안에서 답을 채택하도록 하면 여러 접근으로 추론해 나간다. 
  • ReAct
    ReAct는 Reason과 Act, 즉 원인을 분석하고 행동하는 방법이다. 
    실행 계획을 유도하고 추적해서 작업별로 실행할 액션을 선택하고 실행하는 방법이다. 

 

 

 

 

<알게 된 개념>

챗GPT를 사용하면서 내가 사용한 기법도 있지만 그 외에 더 다양하고 정확하게 원하는 답을 얻을 수 있는 프롬프트 방식이 있는 것을 배울 수 있었다.

 

또한, 프롬프트 엔지니어링이 무엇인지 얼마나 중요한지에 대해서도 알게 되어 내가 모르는 직업이 또 있구나를 깨닫게 된 아티클이다. 

 

AI와 관련된 아티클은 볼 때마다 새롭고 신기한 사실들과 방식들이 많은 것 같다는 것을 이번 아티클을 통해서 또 한 번 생각해 볼 수 있었다.