Skip to main content

한국어 프롬프트 작성 전략

한국어로 프롬프트를 작성할 때 알아두면 유용한 팁들입니다.

존댓말/반말 지정

System Prompt에서 응답 어투를 명시하면 일관성 있는 출력을 얻을 수 있습니다.
# 격식체 (고객 대응용)
"존댓말로 정중하게 답변하세요. 격식체(-습니다, -입니다)를 사용하세요."

# 비격식체 (내부 도구용)
"반말로 간결하게 답변해. 불필요한 인사말 생략."

한영 혼용 전략

  • 기술 용어는 영어 유지가 더 정확합니다: “Transformer의 Attention 메커니즘을 설명하세요”가 “트랜스포머의 어텐션 메커니즘을 설명하세요”보다 정확한 응답을 생성합니다
  • 프롬프트 자체를 영어로 작성하고 “한국어로 답변하세요”를 추가 하면 더 정확한 경우도 있습니다 (특히 최신 기술 주제)
# 한영 혼용 예시
Analyze the following customer feedback and extract key issues.
Respond in Korean with the following JSON format:
{"issues": ["이슈1", "이슈2"], "sentiment": "긍정/부정/중립"}

한국어 토큰 비용 절감 팁

한국어는 영어 대비 동일 의미를 전달하는 데 더 많은 토큰을 소비합니다. 비용 절감을 위해 프롬프트를 간결하게 작성하세요.
# Before (토큰 많음)
"다음 문서를 요약하여 핵심 내용을 3개의 불릿 포인트로 정리하여 주시기 바랍니다"

# After (토큰 약 50% 절약)
"다음 문서를 3줄로 요약:"
참고 : 불필요한 조사, 어미, 경어 표현을 줄이고 키워드 중심으로 프롬프트를 작성하면 토큰을 크게 절약할 수 있습니다. 다만 System Prompt의 역할 정의와 제약 조건은 정확성을 위해 충분히 상세하게 유지하세요.

한국어 특화 주의사항

주의사항설명대응 방법
동음이의어”배” (과일/선박/복부), “차” (음료/자동차) 등문맥을 명확히 제공하거나, 괄호로 의미 한정
높임법 체계격식체/비격식체가 뒤섞이면 어색한 출력System Prompt에서 어투를 명확히 지정
숫자/날짜 형식”2026년 3월 31일” vs “3/31/2026” vs “2026-03-31”출력 형식에 날짜 포맷을 명시

프롬프트 디버깅: 원하는 결과가 안 나올 때

프롬프트가 제대로 작동하지 않을 때, 직감에 의존하지 말고 체계적으로 진단 해야 합니다.

증상별 진단 체크리스트

증상가능한 원인해결법
응답이 너무 일반적지시가 모호함구체적 요구사항 추가 (형식, 길이, 대상 독자)
형식이 불안정출력 형식 명시 부족JSON 스키마 또는 예시 명시
핵심 정보 누락컨텍스트 부족관련 배경 정보 추가
환각 발생모델이 모르는 정보 요구RAG 추가 또는 “모르면 모른다고 답하라” 지시
Few-shot 예시와 다른 형식예시와 실제 입력 패턴 불일치예시를 실제 입력과 유사하게 수정
지시를 무시함지시가 너무 길거나 모순적핵심 지시를 앞쪽에, 우선순위 명시

프롬프트 반복 개선 프로세스 (Iterative Refinement)

프롬프트 최적화는 한 번에 완성되지 않습니다. 다음 사이클을 반복하세요:
  1. 기본 프롬프트 작성— 핵심 지시와 기대 출력 형식을 정의
  2. 5~10개 테스트 케이스로 실행— 다양한 입력 유형을 포함
  3. 실패 케이스 분석— 어떤 유형의 입력이 실패하는가?
  4. 실패 원인별 프롬프트 수정— 위 진단 체크리스트 참조
  5. 다시 테스트— 수정이 기존 성공 케이스를 깨뜨리지 않는지 확인
  6. 반복— 목표 정확도에 도달할 때까지
성공 핵심: 프롬프트 엔지니어링은 “한 번에 완벽하게”가 아닌 “빠르게 반복하며 개선”하는 과정입니다. AI Playground에서 10번 반복하는 것이 30분 고민하는 것보다 효과적입니다.

토크나이저별 한국어 비교 데이터

동일한 한국어 문장이 토크나이저에 따라 완전히 다른 토큰 수 로 변환됩니다. 이는 비용과 컨텍스트 활용에 직접적인 영향을 미칩니다.

비교 테이블: 같은 문장, 다른 토큰 수

문장GPT-4 (cl100k)Claude (anthropic)Llama 3 (sentencepiece)
“데이터브릭스는 통합 데이터 분석 플랫폼입니다”8 토큰5 토큰10 토큰
”Unity Catalog의 3단계 네임스페이스를 설명하세요”11 토큰8 토큰14 토큰
”머신러닝 모델의 학습 과정을 요약해 주세요”12 토큰7 토큰15 토큰
”고객 이탈 예측을 위한 피처 엔지니어링 방법은?“14 토큰9 토큰18 토큰
(동일 의미 영어) “What are feature engineering methods for customer churn prediction?“10 토큰10 토큰11 토큰

비용 영향 계산

예시: 하루 10,000건의 한국어 Q&A 처리 (평균 입력 500 토큰 + 출력 300 토큰)

GPT-4o 기준 ($2.50/1M input, $10.00/1M output):
- 영어: 10,000 × (500 × $2.50 + 300 × $10.00) / 1,000,000 = $42.50/일
- 한국어 (1.5배): 10,000 × (750 × $2.50 + 450 × $10.00) / 1,000,000 = $63.75/일
- 한국어 (2배): 10,000 × (1000 × $2.50 + 600 × $10.00) / 1,000,000 = $85.00/일

→ 한국어는 영어 대비 50~100% 비용 증가
주의 비용 절감 전략: 프롬프트 지시문(System Prompt)은 영어로 작성하고, 사용자 입력과 출력만 한국어로 처리하면 토큰 비용을 20~30% 절감할 수 있습니다. “Respond in Korean”만 추가하면 됩니다.

한국어 최적화 모델

범용 모델 외에 한국어에 특화된 학습 을 수행한 모델이 있습니다. 한국어 비중이 높은 서비스에서는 이들을 고려할 가치가 있습니다.

주요 한국어 특화 모델

모델개발사파라미터한국어 특화 방식오픈소스
HyperCLOVA XNAVER비공개한국어 중심 사전학습 (한국어 비중 40%+)X
EXAONE 3.5LG AI Research7.8B / 32B한영 이중언어 학습, 기업용 특화O (7.8B)
SOLARUpstage10.7BDepth Up-Scaling 기법, 한국어 최적화O
Llama 3 Korean커뮤니티8B / 70BLlama 3 기반 한국어 CPT (Continued Pre-Training)O

벤치마크 비교 (KLUE, KorQuAD 기준)

모델KLUE-NLI (정확도)KLUE-STS (상관계수)KorQuAD 2.0 (F1)비고
GPT-4o91.2%0.9388.5%범용 최강. 한국어도 상위
Claude 4 Sonnet90.8%0.9287.2%GPT-4o와 동급
HyperCLOVA X92.5%0.9491.3%한국어 최고 성능
EXAONE 3.5 32B89.1%0.9185.7%오픈소스 중 한국어 최상위
SOLAR 10.7B84.3%0.8779.8%크기 대비 우수
Llama 3.3 70B86.5%0.8982.1%범용. 한국어는 중상위

언제 한국어 특화 모델을 선택하는가?

상황추천이유
한국어 90%+ 서비스HyperCLOVA X 또는 EXAONE한국어 정확도 최우선
한영 혼용 서비스GPT-4o, Claude 4 Sonnet다국어 범용 성능 우수
데이터 주권 필수EXAONE 3.5, SOLAR오픈소스, 자체 호스팅 가능
비용 제한 + 한국어 중심SOLAR 10.7B작은 모델, 한국어 특화

한국어 RAG 최적화

한국어 RAG 파이프라인에서는 형태소 분석한국어 임베딩 모델 을 적절히 활용해야 검색 정확도가 올라갑니다.

형태소 분석으로 검색 정확도 향상

한국어는 교착어로, 같은 단어가 조사에 따라 다양한 형태로 나타납니다. “데이터를”, “데이터의”, “데이터에서” 모두 “데이터”를 포함하지만, 단순 텍스트 매칭으로는 연결되지 않습니다.
# Kiwi 형태소 분석기 활용 예시
from kiwipiepy import Kiwi

kiwi = Kiwi()

text = "데이터브릭스에서 제공하는 유니티카탈로그의 기능을 설명해주세요"
tokens = kiwi.tokenize(text)

# 결과: [('데이터브릭스', 'NNP'), ('에서', 'JKB'), ('제공', 'NNG'),
#        ('하', 'XSV'), ('는', 'ETM'), ('유니티', 'NNP'),
#        ('카탈로그', 'NNG'), ('의', 'JKG'), ('기능', 'NNG'),
#        ('을', 'JKO'), ('설명', 'NNG'), ('해', 'XSV+EC'),
#        ('주', 'VX'), ('세요', 'EP+EC')]

# 명사만 추출하여 키워드 검색에 활용
nouns = [t.form for t in tokens if t.tag.startswith('NN')]
# → ['데이터브릭스', '제공', '유니티', '카탈로그', '기능', '설명']

한국어 임베딩 모델 비교

모델차원한국어 STS 성능다국어 지원특징
KoSimCSE-roberta76883.5%X (한국어 전용)한국어 STS 특화
multilingual-e5-large102482.1%O (100+ 언어)다국어 범용. Databricks 지원
bge-m3102481.8%O (100+ 언어)Dense + Sparse + ColBERT 혼합
Cohere embed-multilingual-v3102484.2%O (100+ 언어)최고 성능. API 형태
databricks-bge-large-en102475.3%영어 중심Databricks 기본 제공. 한국어는 약함
주의 주의: Databricks 기본 제공 임베딩 모델(databricks-bge-large-en)은 영어 중심 입니다. 한국어 RAG에서는 multilingual-e5-large 또는 bge-m3를 Model Serving에 배포하여 사용하는 것을 권장합니다.

한국어 하이브리드 검색

한국어에서는 벡터 검색(semantic)만으로 부족한 경우가 많습니다. 키워드 검색(BM25)과 벡터 검색을 결합 하면 정확도가 크게 향상됩니다.
# Databricks Vector Search에서 하이브리드 검색
# Delta Sync Index 생성 시 full-text 검색 활성화

"""
CREATE INDEX my_hybrid_index
ON TABLE catalog.schema.documents
USING VECTOR_SEARCH (
  embedding_column = 'embedding',
  embedding_dimension = 1024
)
WITH (
  full_text_columns = ['content'],  -- BM25 키워드 검색 활성화
  pipeline_type = 'TRIGGERED'
)
"""

한국어 고유 도전과 프롬프트 대응 전략

띄어쓰기 문제

한국어는 띄어쓰기가 없어도 의미가 통하는 경우가 많아, 사용자 입력에 띄어쓰기 오류가 빈번합니다.
입력의미 해석
”아버지가방에들어가신다""아버지가 방에 들어가신다” vs “아버지 가방에 들어가신다"
"내가그린기린그림""내가 그린 기린 그림”
프롬프트 대응 전략:
# 띄어쓰기 정규화 지시
"사용자 입력에 띄어쓰기 오류가 있을 수 있습니다.
의미를 파악한 후, 올바른 띄어쓰기로 해석하여 답변하세요.
모호한 경우 가장 자연스러운 해석을 선택하세요."

동음이의어 처리

# 동음이의어 명확화 프롬프트
"다음 질문에서 모호한 단어가 있으면, 문맥에서 가장 적합한 의미를 선택하세요.
만약 문맥만으로 판단이 어려우면, 가능한 의미들을 나열하고 각각에 대해 답변하세요.

예시:
Q: '배가 아프다' → 복부 통증으로 해석
Q: '배를 타다' → 선박 탑승으로 해석
Q: '배가 맛있다' → 과일로 해석"

존댓말 체계와 프롬프트

어투사용 상황System Prompt 지시
합쇼체(-습니다, -입니다)공식 고객 대응, 보고서”격식체(합쇼체)로 정중하게 답변하세요”
해요체(-해요, -이에요)일반 챗봇, CS”해요체로 친근하면서 정중하게 답변하세요”
해라체(-다, -이다)기술 문서, 매뉴얼”해라체(서술체)로 간결하게 기술하세요”
반말(-야, -어)내부 도구, 캐주얼 봇”반말로 간결하게 답해. 인사말 생략”
참고 : 존댓말 체계를 혼용하면 매우 어색한 출력이 됩니다. System Prompt에서 하나의 어투만 명확히 지정 하고, Few-shot 예시에도 동일한 어투를 사용하세요.

Structured Output 한국어 주의사항

JSON 내 한국어 이슈

# 문제 1: 유니코드 이스케이프
import json
data = {"이름": "김철수", "직책": "매니저"}

# 일부 모델이 이렇게 출력할 수 있음:
# {"\\u C774\\u B984": "\\u AE40\\u CCA0\\u C218"}  ← 읽을 수 없음

# 해결: 프롬프트에 명시
"""
JSON 출력 시 한국어는 유니코드 이스케이프 없이 원문 그대로 출력하세요.
올바른 예: {"이름": "김철수"}
잘못된 예: {"\\u C774\\u B984": "\\u AE40\\u CCA0\\u C218"}
"""
# 문제 2: JSON 키 이름 — 영어 vs 한국어
# 추천: 키는 영어, 값은 한국어
{"name": "김철수", "department": "영업부", "role": "매니저"}

# 비추천: 키도 한국어 (파싱 복잡, 토큰 낭비)
{"이름": "김철수", "부서": "영업부", "직책": "매니저"}

한국어 정렬/정렬 문제

# 프롬프트 지시 예시
"리스트를 가나다순으로 정렬하세요.
정렬 기준: 한국어 → 가나다순, 영어 → 알파벳순, 숫자 → 오름차순
혼합 시: 한국어 → 영어 → 숫자 순서"

한국어 벤치마크 데이터

KLUE (Korean Language Understanding Evaluation)

한국어 NLU 표준 벤치마크입니다. 8개 과제로 구성됩니다.
과제설명평가 메트릭
KLUE-TC주제 분류 (뉴스 기사)F1
KLUE-STS문장 유사도 (0~5점)Pearson 상관계수
KLUE-NLI자연어 추론 (참/거짓/중립)정확도
KLUE-NER개체명 인식 (인물, 장소 등)F1
KLUE-RE관계 추출F1
KLUE-DP의존 구문 분석UAS/LAS
KLUE-MRC기계 독해EM/F1
KLUE-DST대화 상태 추적JGA

KorQuAD 2.0

한국어 기계 독해 벤치마크입니다. 위키백과 기반 10,000+ Q&A 쌍으로 구성됩니다.
모델KorQuAD 2.0 EMKorQuAD 2.0 F1
HyperCLOVA X85.2%91.3%
GPT-4o82.7%88.5%
Claude 4 Sonnet81.5%87.2%
EXAONE 3.5 32B79.8%85.7%
Llama 3.3 70B76.4%82.1%
SOLAR 10.7B72.1%79.8%
참고 벤치마크 활용 팁: KLUE와 KorQuAD 점수는 참고용 입니다. 실제 서비스 품질은 자사 도메인 데이터로 직접 평가해야 합니다. Databricks MLflow Evaluate를 사용하여 자사 한국어 Q&A 데이터셋으로 모델을 비교 평가하세요.