관리 메뉴

The Nirsa Way

[LLM] 입문자를 위한 프롬프트 엔지니어링 개념과 3대 원칙 (Role, Instruction, Few-shot) 본문

AI Engineering/LLM

[LLM] 입문자를 위한 프롬프트 엔지니어링 개념과 3대 원칙 (Role, Instruction, Few-shot)

KoreaNirsa 2025. 9. 12. 21:54
반응형

 

[LLM] 입문자를 위한 프롬프트 엔지니어링 개념과 3대 원칙 (Role, Instruction, Few-shot)

프롬프트 엔지니어링은 AI 모델이 원하는 방식으로 응답할 수 있도록 프롬프트를 설계, 최적화 하는 과정입니다. LLM은 기본적으로 입력된 프롬프트를 기반으로 다음 토큰을 예측하기 때문에 프롬프트를 잘 작성하면 LLM 모델의 답변 품질을 크게 올릴 수 있습니다.

만약 모호한 프롬프트를 주면 예상과 다른 답변이 나올 확률이 그만큼 높으며 AI 활용을 하기 위해서는 명확하고 구조화된 프롬프트를 작성하는 능력이 필요합니다. 이러한 프롬프트 설계 능력을 통해 각 분야에 AI를 활용했을 때 증가하는 생산성은 크게 차이가 나게 됩니다.

보통 GPT와 같은 AI 플랫폼을 사용할 때 "잘 질문해야 좋은 답변을 얻는다"가 프롬프트 엔지니어링에 해당하는 개념인데, 잘 질문하기 위해서는 아래의 3가지 원칙을 따라 작성하는 습관이 필요하며 가장 기본적인 틀이기도 합니다.

  1. 역할 부여(Role) : 모델에게 특정 역할을 주어 답변을 유도하여 답변의 톤과 관점 제어
  2. 명확한 지시(Instruction) : 원하는 출력 형태와 조건을 구체적으로 전달
  3. 예시 제공(Few-shot) : 몇 가지 샘플을 포함하여 전달하여 원하는 답변 스타일을 학습하도록 유도

이제 Role - Instruction - Few-shot(이하 RIF)을 지키지 않고 단순하게 질문한 했을 경우와 RIF를 지켰을 경우 어떠한 답변의 차이가 있는지 살펴보도록 하겠습니다. 아래의 실험은 GPT에서 로그아웃 후 진행하였습니다.

 

RIF를 지키지 않고 단순하게 질문만 했을 경우 (GPT)

간단하게 질문만 한 경우입니다.

자바 ArrayList와 LinkedList를 비교해.

 

RIF를 지키지 않고 단순하게 질문만 했을 경우 (답변 1-1)
RIF를 지키지 않고 단순하게 질문만 했을 경우 (답변 1-2)
RIF를 지키지 않고 단순하게 질문만 했을 경우 (답변 1-3)

 

RIF를 지켜서 질문한 경우 (GPT)

만약 강사가 학생들에게 ArrayList와 LinkedList의 차이를 설명하기 위해 AI를 활용하여 내용을 정리하고자 한다면 아래와 같은 프롬프트를 작성할 수 있습니다.

[Role]
너는 자바를 처음 입문하는 학생들에게 강의를 하는 전문 강사야.  
개발 경력이 10년 이상인 시니어 풀스택 개발자이면서 강의 경력이 10년 이상인 강사로
초보자가 이해하기 쉽게 설명하는 데 능숙해.

[Instruction]
"ArrayList"와 "LinkedList"의 차이를 표 형식으로 설명하고
마지막에 어떤 상황에서 어떤 것을 선택하여 사용해야 하는지 간단히 정리해줘.  
- 설명은 초보 학생이 이해할 수 있는 간단한 언어로 작성하고
  필요한 경우 간단한 코드 예제나 비유를 포함해.  
- 표에는 최소 다음 항목을 포함하되 필요하다면 
  추가 항목(예: 삽입/삭제 성능, 메모리 사용량)을 포함해 
  - 메모리 구조  
  - 접근 속도  
  - 삽입/삭제 속도  
- 잘못된 내용을 전달하지 않도록 답변 작성 전 공식 문서(예: Oracle Java 문서) 또는 
  신뢰할 수 있는 자료를 참조하여 3번 검증해.  
- 답변은 한국어로 작성하고, 500~700단어 내로 유지해.  
- 실제 개발 경험에서 나온 사례나 비유를 활용하여 학생들이 개념을 쉽게 이해하도록 도와줘.

[Free-shot]
예시 출력은 아래와 같아.

| 비교항목       | ArrayList         | LinkedList        |
|----------------|-------------------|------------------|
| 메모리 구조    |        ...        |        ...        |
| 접근 속도      |        ...        |        ...        |
| 삽입/삭제 속도 |        ...        |        ...        |

위 예시를 참고하여 ArrayList와 LinkedList 비교를 진행해.

 

RIF를 지켜서 질문한 경우 (답변 2-1)
RIF를 지켜서 질문한 경우 (답변 2-2)
RIF를 지켜서 질문한 경우 (답변 2-3)


마무리

단순 질문을 했을 경우 기본적인 개념 설명은 간략하게 답변을 받았으나 깊이와 구조가 부족한 느낌이 강하며 RIF를 지켜서 질문했을 경우 조금 더 자세한 설명을 받았습니다.

ArrayList와 LinkedList의 경우 인터넷에 정보가 워낙 많다보니 큰 차이로 안보일 수 있지만, 이러한 프롬프트를 작성하는 능력을 키우다 보면 원하는 정보를 좀 더 자세히 얻고 특정 상황에 주어진 작업을 할 때 똑같은 AI를 활용하더라도 더 좋은 품질의 답변을 얻을 수 있습니다.

이번 포스팅에서 LLM을 활용할 때 가장 기본적이면서도 중요한 프롬프트 엔지니어링에 대해 간단히 알아보았는데, 프롬프트를 설계하는 방식에 따라 답변의 질과 활용도가 크게 달라질 수 있음을 알아야 합니다.

"AI에게 질문을 잘 하자 = 프롬프트 엔지니어링"은 크게 다르지 않지만 급격히 성장하는 AI의 흐름을 따라 활용 능력을 키우는 것은 중요하다고 생각합니다. AI를 활용할 때 어떠한 역할을 맡기고, 어떠한 형식의 답변을 원하며, 어떠한 예시 샘플을 주어 답변을 얻을것인지에 대해 고민하며 AI에게 질문한다면 같은 것을 사용하더라도 더 가치있는 답변을 얻을 수 있습니다.

이후 포스팅에서는 프롬프트 엔지니어링을 위한 세부 기법을 더 알아보도록 하겠습니다.

반응형