반응형
의도를 분류하기 위한 순차적으로 구조 설계를 한다. LLM이 의도를 파악할 수 있도록 구체적으로 프롬프트를 작성한다. 프롬프트에는 다음의 내용이 포함되어 있어야 한다.
시스템 역할 정의 → 컨텍스트 제공 → 작업 명세 → 출력 형식 → 예시문 → 제약사항
의도 분류용 프롬프트
당신은 지도 애플리케이션의 사용자 의도를 분석하는 전문가입니다.
## 컨텍스트
- 사용자 위치: {user_location}
- 현재 시간: {current_time}
- 이전 검색 이력: {recent_searches}
## 작업
사용자 입력에서 다음 의도를 분류하세요:
- ROUTING: 경로 찾기, 길안내 요청
- SEARCH: 특정 장소나 시설 검색
- ANALYSIS: 지역 분석, 통계 정보 요청
- RECOMMENDATION: 추천 요청
## 출력 형식
{
"intent": "의도_유형",
"confidence": 0.0-1.0,
"reasoning": "판단 근거",
"ambiguity": "모호한 경우 대안 의도들"
}
## 예시
입력: "강남역에서 집까지 가는 길"
출력: {"intent": "ROUTING", "confidence": 0.95, "reasoning": "명확한 출발지와 목적지가 있는 경로 요청"}
입력: "여기 근처 맛집"
출력: {"intent": "SEARCH", "confidence": 0.85, "reasoning": "위치 기반 음식점 검색 요청"}
## 입력
"{user_input}"
엔티티 추출용 프롬프트
지리공간 정보 추출 전문가로서 텍스트에서 위치 관련 정보를 정확히 추출하세요.
## 추출할 엔티티 유형
- LOCATION: 역명, 건물명, 주소, 랜드마크
- CATEGORY: 업종, 시설 유형 (카페, 맛집, 병원 등)
- DISTANCE: 거리 표현 (도보 5분, 500m, 근처 등)
- TRANSPORTATION: 교통수단 (지하철, 버스, 도보, 자동차)
- TIME: 시간 관련 표현 (지금, 오후 3시, 주말)
## 정규화 규칙
- "근처", "주변" → 500m 반경
- "도보 X분" → X * 80m (평균 보행속도 고려)
- 지하철역명에서 "역" 제거하여 정규화
## 출력 형식
{
"entities": [
{
"type": "LOCATION",
"value": "추출된 원문",
"normalized": "정규화된 값",
"confidence": 0.9,
"position": [시작위치, 끝위치]
}
],
"relationships": [
{
"entity1": "강남역",
"entity2": "카페",
"relation": "NEAR",
"confidence": 0.8
}
]
}
입력: "{user_input}"
복합 쿼리 처리용 프롬프트
복잡한 지리공간 쿼리를 구조화된 검색 조건으로 변환하는 전문가입니다.
## 쿼리 분해 전략
1. 주요 조건과 부차적 조건 구분
2. 공간적 관계 파악 (근처, 안에, 사이 등)
3. 우선순위 설정 (필수 vs 선택사항)
## 예시 변환
입력: "아이와 함께 가기 좋은 주차 가능한 강남 근처 실내 놀이터"
출력:
{
"primary_conditions": {
"category": "실내놀이터",
"location": "강남",
"radius": 2000
},
"filters": [
{"attribute": "parking", "required": true},
{"attribute": "kid_friendly", "required": true}
],
"preferences": [
{"attribute": "indoor", "weight": 0.9},
{"attribute": "family_friendly", "weight": 0.8}
],
"search_strategy": "multi_criteria_weighted"
}
컨텍스트인식 프롬프팅
동적 컨텍스트 주입
# 의사코드
def build_context_aware_prompt(user_input, user_profile):
context = {
"time_context": get_time_context(), # "점심시간", "출근시간" 등
"location_context": get_user_location_context(),
"history_context": get_search_history_context(user_profile),
"preference_context": get_user_preferences(user_profile)
}
return f"""
## 사용자 컨텍스트
- 현재 상황: {context['time_context']}
- 주요 활동 지역: {context['location_context']}
- 최근 관심사: {context['history_context']}
- 선호도: {context['preference_context']}
위 컨텍스트를 고려하여 다음 요청을 처리하세요:
"{user_input}"
"""
반응형
'Dev Stories > AI|ML(인공지능|머신러닝)' 카테고리의 다른 글
LLM을 활용한 자연어 처리 파이프라인: 시나리오1 (0) | 2025.09.17 |
---|---|
최초 선택과 옵션 보정으로 LLM 결과 정확도 높이기 (0) | 2025.09.16 |
다중 의도 처리 (Multi-intent Handling) (0) | 2025.09.03 |
가장 많이 사용되는 임베딩(Embedding) 모델 (0) | 2025.07.07 |
[AI] LLM 모델의 평가 및 검증 (0) | 2025.07.07 |