프롬프트 구성 요소 사용법
•
프롬프트는 LLM(대형 언어 모델)과의 인터랙션에서 사용자의 의도와 맥락을 명확히 전달하는 핵심 도구다.
•
다음은 프롬프트 구성 요소를 체계적으로 정리하고, 각 요소를 왜 사용해야 하는지, 언제 사용하면 좋은지, 그리고 어떻게 개선할 수 있는지에 대한 상세한 가이드다.
•
특히 데이터 분석, 머신러닝, 딥러닝, 소프트웨어 개발 등과 같이 전문적이고 복잡한 영역에서 모델에게 원하는 답변을 얻기 위해서는 프롬프트 내부에 포함되는 구성 요소들이 중요한 역할을 한다.
•
글의 목적
◦
구성 요소들을 체계적으로 이해하면, 사용자는 더 완성도 높은 프롬프트를 설계할 수 있고, 이를 통해 LLM 응답의 품질을 높일 수 있다.
◦
가능한 한 풍부한 컨텍스트와 예제를 담아내어, 독자가 이 글을 보고 프롬프트 제작에 대한 감각을 기를 수 있도록 한다.
•
각 요소를 필수(Required), 권장(Recommended)으로 나누고, 왜 필요한지, 어떤 상황에서 사용하면 좋은지, 그리고 어떻게 작성하면 되는지를 상세히 다루며, 이해를 돕기 위해 As-Is/To-Be 예제를 제시한다.
•
이해를 돕기 위해 해당 글은 프롬프트를 한국어로 작성하였으며, 좀 더 좋은 결과를 원한다면 영문 프롬프트로 작성하는 것을 추천한다.
Prompt 구성요소(Component)의 형태
•
필자는 Prompt 구성요소(Component)의 형태를 아래 두 가지로 정의한다.
1.
SPCF(Soft Prompt Component Form)
2.
HPCF(Hard Prompt Component Form)
•
이렇게 두 가지로 분리를 하는 이유는 프롬프트 설계의 유연성과 고정성을 적절히 조화시켜 다양한 요구를 충족시키기 위함이다.
SPCF(Soft Prompt Component Form)
•
Input을 받아 유동적으로 변할 수 있는 프롬프트 요소 형태
•
고려해야 할 경우
◦
사용자 맞춤형 데이터 반영
▪
다양한 사용자나 상황에 따라 정보를 실시간으로 제공해야 하는 경우, SPCF를 통해 동적인 데이터 입력이 가능하다.
▪
예: 사용자의 이름, 운영 체제 정보, 현재 작업 디렉토리 등은 실행 환경에 따라 매번 달라질 수 있으므로 유동적인 처리가 필요하다.
◦
재사용성 및 확장성
▪
SPCF는 특정 데이터만 변경하여 동일한 구조의 프롬프트를 다양한 상황에 재사용할 수 있다.
▪
예를 들어, 코드 주석 템플릿이나 다국어 번역 작업에서 같은 프롬프트 구조로 여러 언어에 대응할 수 있다.
◦
실시간 데이터 활용
▪
API 호출, 파일 입력 등 외부 데이터가 필요할 때 SPCF를 통해 동적으로 내용을 구성할 수 있다.
▪
예: 사용자가 입력한 검색어를 기반으로 특정 결과를 출력하는 프롬프트.
•
주로 다음과 같이 {} 기호를 사용하여 해당 요소를 입력을 받게 된다.
# User Information
Name: {username}
Role: {user_role}
Preferred Output: {output_format}
# Example:
Input: "{user_input}"
Output:
- Summary: {summary}
- Key Insights: {key_insights}
Python
복사
HPCF(Hard Prompt Component Form)
•
유동적이지 않으며 고정된 프롬프트 요소 형태
•
고려해야 할 경우
◦
일관성 유지
▪
고정된 내용은 항상 동일한 결과를 보장하므로, 신뢰성과 일관성이 중요한 상황에서 효과적이다.
▪
예: 모델의 역할 정의, 특정 문구(페르소나 설정 등)는 고정적으로 유지되어야 함.
◦
보안 및 통제
▪
고정된 요소는 사용자가 임의로 수정할 수 없으므로, 의도하지 않은 결과나 오작동을 방지할 수 있다.
▪
예: "모든 출력은 명령문 형태여야 한다"는 조건을 강제할 경우.
◦
명확한 지침 제공
▪
LLM이 수행할 작업의 범위나 톤 등을 명확히 정의할 수 있다. 이러한 정의는 고정된 형태로 제공되면 의도와 다른 응답을 방지할 수 있다.
▪
예: "절대 민감한 정보를 포함하지 마라"와 같은 명령은 변경되지 않아야 한다.
•
별도로 입력을 받지 않으며 사용자가 변경할 수 없다.
You are a data analyst with expertise in generating actionable insights from datasets. Your task is to analyze the provided data and summarize the following:
1. Key trends
2. Anomalies
3. Suggestions for improvement
Remember to provide concise, structured answers.
Plain Text
복사
두 가지 형태로 분리해야 하는 이유
•
SPCF와 HPCF를 구분하여 사용하는 것은 프롬프트 설계의 유연성과 안정성을 동시에 만족시키는 전략이다.
•
SPCF를 통해 사용자가 원하는 특정 정보와 데이터 입력을 반영할 수 있고, HPCF를 통해 일관된 규칙과 기준을 유지할 수 있다.
•
이러한 방식은 LLM 프롬프트의 효율성을 극대화하며, 다양한 사용자 시나리오와 요구사항을 충족시킬 수 있다.
•
유연성과 고정성의 조화
◦
SPCF는 사용자의 상황과 요구사항에 따라 동적으로 정보를 제공할 수 있고, HPCF는 변하지 않는 기준을 제공하여 안정성을 유지한다.
◦
이 두 가지 요소를 조합하면 사용자 경험의 유연성과 신뢰성을 동시에 확보할 수 있다.
•
다양한 시나리오 대응
◦
SPCF는 다변화된 데이터 입력이나 상황별 커스터마이징이 필요한 경우에 적합하고, HPCF는 변하지 않는 작업 환경 또는 규칙을 정의하는 데 적합하다.
◦
이를 통해 다양한 사용자 요구사항에 효과적으로 대응할 수 있다.
•
재사용성과 유지보수성 강화
◦
SPCF와 HPCF를 분리하면 프롬프트의 가독성과 유지보수성이 증가한다.
◦
고정된 부분은 수정할 필요가 없고, 동적으로 입력되는 부분만 업데이트하면 되므로 관리가 용이하다.
•
모델 응답 품질 향상
◦
SPCF와 HPCF의 구분은 모델이 동적으로 입력되는 데이터와 고정된 규칙을 명확히 이해하도록 돕는다.
◦
결과적으로 더 정교하고 목적에 부합하는 응답을 생성할 수 있다.
필수 요소
명령(지시문: Command)
•
LLM에게 무엇을 해야 하는지 구체적으로 정의함으로써, 모델이 불분명한 상황에서 방황하지 않고 명확히 질문의 요구를 파악하도록 한다.
•
언제든지 LLM에게 특정 작업을 시키고자 할 때 필수적으로 포함한다.
작성 방법
•
짧고 명확한 지시문을 사용한다.
•
동사+목표 형태로 표현한다.
•
명확하고 간결하게, "…를 ~해라" 형태로 지시
•
단호하고 명확하게, 모호한 표현 없이 작성한다.
"다음 질문에 대한 요약을 제공하라"
"주어진 텍스트를 분석하여 감정 상태를 판단하라"
•
예제
◦
As-Is:
데이터 분석해줘.
Plain Text
복사
◦
To-Be:
주어진 CSV 데이터에서 각 변수의 분포를 분석하고, 평균과 표준편차를 포함한 간략 통계 요약을 산출한 뒤, 이를 이해하기 쉬운 시각화 그래프로 나타내라.
Plain Text
복사
맥락(Context)
•
모델이 문제의 배경, 상황, 전제 조건을 이해해야 정확한 답변을 낼 수 있다.
•
맥락이 없으면 모델은 너무 일반적이거나 관련 없는 답변을 할 확률이 높다.
•
모델이 답변을 도출할 때 참고해야 할 상황이나 배경 정보를 제공하여, 불필요한 오해나 생략을 방지한다.
•
특정 산업 도메인, 문서의 일부, 사용자 위치 정보, 시대적 배경 등이 필요한 모든 경우에 사용한다.
작성 방법
•
관련 정보(텍스트, 대화 히스토리, 참고 자료 요약 등)를 길고 상세하게 삽입한다.
•
상황을 구체적으로 설정해라.
•
어떤 배경인지, 어떤 조건이나 규칙이 있는지, 최종적으로 어떤 결과물이 나와야 하는지를 자세히 설명해라.
•
"아래는 이전 대화의 일부이다:", "다음은 참고할 자료이다:" 등의 형태로 정보 제공
•
예제
◦
As-Is:
위 이야기에서 주인공의 성격을 설명하라
Plain Text
복사
◦
To-Be:
다음은 주인공 관련 서사다:
"주인공인 김영수는 1980년대 농촌 마을에서 태어나, 어릴 적부터 호기심 많은 성격으로 주변 사람들을 돕기를 좋아했다. 그는 성장하면서 마을 도서관에 있는 책을 탐독하며 지식을 축적했고, 이러한 배경으로 인해 그는 언제나 새로운 정보를 배우고자 하는 열망이 컸다."
위 서사에서 주인공의 성격을 설명하라
Arduino
복사
권장 요소
•
권장요소는 2가지로 구분이 된다.
•
보통 해당 요소들은 입력 데이터가 되거나, 출력 지시자가 된다.
입력 데이터 (Input Data)
•
AI가 작업을 수행하며 분석하거나 참조할 데이터를 뜻함.
출력 지시자 (Output Directives)
•
프롬프트에서 요구하는 결과물의 형태를 지정
목적(Goal)
•
이 프롬프트를 통해 최종적으로 얻고자 하는 바를 명확히 제시한다.
•
모델이 핵심 목표를 인식하면 불필요한 내용 제시를 줄이고 집중도가 높아진다.
•
특정 의사결정을 위한 핵심 정보만 뽑아내기 등
작성 방법
•
“최종 목표는 …를 식별하는 것이다.”와 같이 LLM이 집중해야하는 확실한 목표 명시
•
예제
◦
As-Is:
데이터 설명해줘.
Plain Text
복사
◦
To-Be:
최종 목표: 이 데이터셋에서 고객 이탈을 예측하는 데 필요한 3가지 핵심 특징을 식별하는 것이다. 이를 위해 데이터를 분석하고 핵심 특징만 나열해줘.
Arduino
복사
페르소나(Persona)
•
모델이 특정 역할(예: 교수, 엔지니어, 마케터 등)을 수행하거나 특정 말투, 사고 방식을 모방하도록 하여 응답에 일관성을 부여한다.
•
특정 분야 전문가처럼 말하도록 만들거나, 사용자 경험을 향상시키기 위해 캐릭터 설정이 필요할 때, 특정 시각(어투, 직책)을 갖추고 답변하도록 할 때 활용한다.
•
해당 문제를 가장 잘 해결할 수 있을 만한 사람이 누구인지 가정하고, 그 역할을 맡아서 대화하라고 하면 좋다.
•
페르소나가 구체적일수록 전문영역에 가까운 답을 제공한다.
작성 방법
•
"너는 이제부터 데이터 사이언티스트다. 항상 통계 용어를 사용하며, 설명 시 그래프 분석을 들어 제공하라."와 같이 역할과 특징을 명확히 제시한다.
•
예제
◦
As-Is:
머신러닝 모델을 어떻게 만들지 설명해봐.
Plain Text
복사
◦
To-Be:
너는 숙련된 머신러닝 엔지니어이며, 초급 분석가를 교육하는 상황이라고 가정하라. 이때 머신러닝 모델을 설계하고 구현하는 전 과정을 단계별로 설명하라.
Arduino
복사
예시(Example)
•
모델에게 원하는 출력 형태, 톤, 난이도를 직접 보여주어 모델이 답변 스타일을 학습하도록 유도한다.
•
특정 형식이나 답변 스타일, 난이도, 깊이 있는 분석을 필요로 할 때 참고사례를 제공한다.
•
모델이 예시 패턴을 부분 학습해 유사한 형태로 답변을 만들기 쉽게 한다.
•
모델이 어떤 유형의 답변을 원하는지 미리 보여주어 답변 품질을 높일 수 있다.
작성 방법
•
원하던 이상적인 질의응답 예시를 첨부하고, 그에 맞춘 형식을 이어받게 한다.
•
예제
◦
As-Is:
요약해줘.
Plain Text
복사
◦
To-Be:
아래는 예시 출력 형태다:
예시)
- 핵심 포인트: …
- 분석 내용: …
위 예시 형태를 참고하여 현재 텍스트를 요약해줘.
Arduino
복사
형식(Format)
•
표 형식으로 정리해달라거나, 마크다운으로 작성하라고 하거나, 아웃라인을 주면서 어떤 식으로 구성하라고 말해주는 것
•
결과물의 출력 양식(표, 목록, 마크다운 등)을 지정하면 모델의 답변 활용성이 높아진다.
◦
후처리나 다른 시스템과의 연계에 용이하게 만든다.
•
결과물의 형식이나 분량, 내용 구성을 미리 지정해주면 좋다.
•
작성된 답변을 다른 툴로 넘겨서 시각화하거나 분석할 때, 명확한 형식이 필요할 때 쓴다.
•
깔끔하고 구조화된 결과물을 원할 때, 예를 들어 보고서, 코드, 테이블 형식 필요 시. 사용한다.
작성 방법
•
"출력 결과를 JSON 형식으로 제공하라" 등 명확히 데이터 포맷을 지정한다.
•
예제
◦
As-Is:
내용을 정리해서 출력해줘.
Plain Text
복사
◦
To-Be:
다음 JSON 형식으로 출력을 제공해줘:
{
'summary': '...',
'details': '...'
}
Arduino
복사
어조(Tone)
•
응답의 전반적 분위기나 감정적 색채를 결정해 독자가 더 친근하게 느끼거나, 전문성을 강화할 수 있다.
•
답변 스타일(공손, 전문적, 간결)을 지정하면 의도에 맞는 응답 분위기 조절 가능.
•
특정 상황에서 따뜻한 응원, 권위있는 설명, 재미있는 말투 등 독자에게 풍부한 사용자 경험을 전달하고자 할 때 활용한다.
•
교육용, 보고용, 기술 자료용 등으로 답변 톤을 맞출 때 사용
작성 방법
•
'상세하게', '친근한 말투로' 같은 형용사를 사용하거나, 어떤 예시 텍스트를 제시하고 해당 어조를 따라하라고 하면 된다.
•
"부드럽고 격려하는 톤으로 답하라" 또는 "공식적이고 딱딱한 어조를 유지하라"와 같이 명확한 분위기를 지정한다.
•
예제
◦
As-Is:
분석 결과 말해줘.
Plain Text
복사
◦
To-Be:
비즈니스 임원에게 보고하는 상황을 가정하고, 공손하면서도 전문적인 톤으로 분석 결과를 요약하라
Arduino
복사
제약조건(Constraints) | 면책 조항(Disclaimer)
•
모델이 답변 시 무시하면 안 되는 조건이나 금지사항을 제시해 부적절한 응답을 예방한다.
•
답변 범위를 기술적으로 제약하거나 특화할 수 있다.
◦
답변 길이, 사용 단어, 참조 범위 등을 제한한다.
◦
모델이 특정 툴, 라이브러리, API, 데이터 소스, 버전 제한 등을 준수해야 할 때 필요하다.
◦
민감 정보, 비속어 사용 금지 등 제한해야 할 요소가 있을 때.
◦
정보의 법적, 윤리적 책임 범위를 미리 제한하거나, 모델 답변의 신뢰성 한계를 독자에게 알리는 경우에 사용한다.
•
불필요한 정보 과잉을 막고 답변 품질을 일정 수준 이상 유지한다.
"이 모델은 Python 3.8 환경에서만 동작하며, NumPy 라이브러리 사용이 가능하다"와 같은 상황에서 해당 프롬프트를 통해 모델이 가정한 기술적 배경을 알 수 있다.
작성 방법
•
‘200자 이하로 요약’, ‘3개의 bullet point만 사용’와 같이 명확히 제약 조건을 제시한다.
•
예제
◦
As-Is:
파이썬을 사용해서 해당 내용을 분석해줘.
Plain Text
복사
◦
To-Be:
너는 Python 3.8 환경에서 작동하며, pandas와 scikit-learn 라이브러리를 사용할 수 있다. 이 라이브러리들만 사용해서, 주어진 CSV 데이터로부터 통계 요약을 도출하라.
Arduino
복사
개인 식별 정보는 일절 언급하지 말고, 오픈소스 라이선스 범위를 준수하는 예시 코드만 제시하라.
Plain Text
복사
기대 출력(Expected Output)
•
위에 설명한 제약 조건이 제약을 거는 거였다면, 기대 출력은 오히려 기대치를 설명하여 모델이 답변의 범위와 심도를 정확하게 파악하게 한다.
•
답변 길이, 세부 정도, 정보량을 미리 정하고 싶을 때 사용한다.
작성 방법
•
“최소 3문단으로 작성하되, 각 문단마다 구체적인 예시를 포함하라.”와 같이 최소 범위를 지정해준다.
•
최소 요구 사항을 반영하여 LLM에게 MUST 행위를 이해하도록 돕는다.
•
예제
◦
As-Is:
결과 알려줘.
Plain Text
복사
◦
To-Be:
최소 200단어로 자세한 해설을 하고, 코드 예시도 1개 이상 포함하라.
Arduino
복사