대규모 언어 모델(LLM)을 제대로 활용하려면 프롬프트(prompt)를 얼마나 명확하고 효과적으로 작성하느냐가 관건입니다. 특히 허깅페이스(Hugging Face)의 Transformers 라이브러리나 Model Hub에서 제공하는 LLM을 사용할 때, 간단한 한 줄 명령어만으로도 강력한 결과를 얻을 수 있지만, 잘못된 프롬프트는 엉뚱한 답변을 야기하기도 합니다.
이 글에서는 Hugging Face LLM을 대상으로 프롬프트를 잘 작성하는 10가지 실전 전략을 제시합니다. 바로 코드 예제와 함께 따라 해 보세요.
프롬프트(prompt)는 대규모 언어 모델(LLM)이나 챗봇, AI 시스템에게 무엇을, 어떻게 수행할지를 지시하는 입력 텍스트입니다. 명확하고 효과적인 프롬프트 작성법을 익히면 AI로부터 원하는 정보를 보다 정확하게 얻을 수 있습니다.
프롬프트의 구성 요소
- 시스템 프롬프트(System Prompt)
- 모델의 동작 원리, 말투, 정보 활용 범위 등을 설정
- 예) “당신은 숙련된 번역가입니다. 전문 용어는 원어 그대로 유지하세요.”
- 사용자 프롬프트(User Prompt)
- 실제 사용자가 묻는 질문이나 요청
- 예) “아래 영어 문장을 한국어로 번역해줘: ‘Hello, world!’”
- 어시스턴트 프롬프트(Assistant Prompt)
- 모델이 이전에 응답한 내용(컨텍스트)을 포함
- 대화형 인터페이스에서 대화 유지에 사용
1. 역할과 스타일을 명시하라
AI가 어떤 ‘페르소나(성격)’로 답해야 할지 미리 알려주면 일관된 톤과 깊이를 유지할 수 있습니다.
- 모델의 ‘페르소나(성격)’를 설정
- 수행할 태스크(task)를 지정
- 출력 형식(format)을 고정
“당신은 친절한 데이터 사이언티스트입니다. 기술 용어는 쉽게 풀어서 설명하세요.”
2. 목적(태스크)을 구체적으로 지시하라
단순히 “분석해줘”보다 “Sales.csv 파일의 월별 매출 총합을 구한 뒤, 막대그래프로 시각화해줘”처럼 명확한 결과물을 요구하세요.
from transformers import pipeline
nlp = pipeline("text2text-generation", model="t5-small")
prompt = """
당신은 파이썬 개발자입니다.
다음 코드를 개선해 주석과 타입 힌트를 추가하세요:
```python
def add(a,b): return a+b
"""
print(nlp(prompt, max_length=100)[0]["generated_text"])
---
## 3. “예시→명령” 구조로 작성하라
모델이 원하는 형식을 이해시키려면, **입력 예시(input) → 출력 예시(output) → 실제 요청** 순으로 제시합니다.
```text
입력: “서울의 오늘 날씨 알려줘”
출력: “서울의 오늘 기온은 18℃, 맑음입니다.”
이와 같은 형식으로 “부산의 내일 날씨”를 알려줘.
4. 단계별(chain-of-thought) 요청하라
복잡한 결과물을 한 번에 묻는 대신, 단계별로 묻는 것이 정확도를 높입니다.
1) 주어진 문장에서 핵심 키워드를 추출하라.
2) 추출된 키워드를 기반으로 요약문을 생성하라.
5. 출력 형식(format)을 고정하라
모델이 JSON, CSV, 마크다운 표 등 특정 구조로 답하도록 출력 예시를 함께 지시합니다.
응답은 JSON 배열로, 각 객체에 {“name”:…, “age”:…} 형식으로 반환해 주세요.
6. 제약 조건을 명시하라
토큰 길이 제한, 불용어 사용 금지 등 부가 조건을 분명히 알려 오류를 줄입니다.
응답은 50단어 이내로, 전문 용어는 최대한 배제해 설명해 주세요.
7. 사전 정의된 변수·문맥(context)을 활용하라
파이썬 코드 안에서 pipeline()에 넘길 때, 컨텍스트(Context) 문자열을 미리 세팅해 재사용성을 높입니다.
from transformers import pipeline
system_prompt = "당신은 금융 분석가입니다."
user_prompt = "A, B, C 주식의 수익률을 비교하는 파이썬 코드를 작성해 줘."
generator = pipeline("text2text-generation", model="google/flan-t5-small")
print(generator(system_prompt + "\\n" + user_prompt)[0]["generated_text"])
8. 과잉 설명을 피하고 핵심만 요청하라
불필요한 문장으로 프롬프트가 장황해지면 모델이 핵심을 놓칠 수 있습니다. 가급적 짧고 간결하게 작성하세요.
9. 반복 검증·피드백 루프를 도입하라
한 번의 호출로 끝내지 말고, 모델 응답을 검토해 수정 요청을 반복하면 결과 품질을 높일 수 있습니다.
위 코드에서 X 부분이 잘못됐어. line 10~12를 수정해 줘.
10. 하이퍼파라미터 조절로 실험하라
허깅페이스 pipeline() 호출 시 temperature, top_k, max_length 등을 조절해 다양한 응답을 비교·선택하세요.
generator(prompt,
max_length=150,
temperature=0.7,
top_k=50)
프롬프트 엔지니어링은 경험과 실험을 통해 노하우를 쌓아야 합니다. 위 10가지 전략을 바탕으로 작고 빈번한 실험, 피드백 루프, 명확한 예시 제공을 습관화해 보세요. 여러분만의 최적화된 프롬프트를 완성해 보세요! AI와의 협업 생산성이 눈에 띄게 향상될 것입니다.
'AI > 이론' 카테고리의 다른 글
170. [AI] [LLM] Hugging Face: 구성 요소와 주요 기능 (0) | 2025.03.10 |
---|---|
169. [AI] [LLM] Hugging Face: AI 커뮤니티의 오픈소스 (0) | 2025.03.06 |
154. [AI] [Fine-Tuning] Transformer 모델을 활용한 감성 분석 (0) | 2025.02.19 |
153. [AI] [Fine-Tuning] Pipeline을 활용한 이미지 생성 (0) | 2025.02.18 |
137. [Python] [Machine Learning] : 계층적 군집 분석( Hierarchical Clustering) (0) | 2025.01.31 |