LLM을 활용한 언어 이해 (Language Understanding) 모델 구축
요약
LLM을 활용하여 비정형 고객 지원 메시지에서 의도, 엔티티, 감성을 추출하는 프로덕션급 NLU 파이프라인 구축 방법을 소개합니다. Oxlo.ai API와 OpenAI SDK를 사용하여 비용 효율적이고 확장 가능한 배치 처리 시스템을 구현하는 과정을 다룹니다.
핵심 포인트
- LLM을 활용해 기존 키워드 기반 규칙을 대체하는 구조화된 NLU 구축
- JSON 모드를 활용하여 의도, 엔티티, 감성 등 정형 데이터 추출
- Oxlo.ai를 통한 고정 가격 기반의 예측 가능한 배치 처리 구현
- 신뢰도 점수를 활용한 운영 환경에서의 예측값 필터링 전략
우리는 비정형 고객 지원 메시지를 읽고 구조화된 의도 (intent), 엔티티 (entities), 그리고 감성 (sentiment)을 반환하는 프로덕션급 자연어 이해 (NLU) 파이프라인을 구축하고 있습니다. 이는 취약한 키워드 규칙을 대신하여, 어떤 제품 라인이나 언어에도 확장 가능한 단일 LLM 호출로 대체합니다.
필요한 사항
- Python 3.10 이상.
- OpenAI SDK:
pip install openai. - https://portal.oxlo.ai에서 발급받은 Oxlo.ai API 키. Oxlo.ai는 Llama 3.3 70B, Qwen 3 32B 및 수십 개의 다른 모델을 요청당 고정 가격으로 실행하므로, 배치 NLU 워크로드를 예측 가능하게 유지합니다.
1단계: Oxlo.ai 클라이언트 설정
먼저, Oxlo.ai를 가리키는 OpenAI 호환 클라이언트를 초기화하고 가벼운 모델 호출을 통해 연결을 확인합니다. 저는 구조화된 지침을 안정적으로 따르는 Llama 3.3 70B를 사용합니다.
from openai import OpenAI
client = OpenAI(base_url="https://api.oxlo.ai/v1", api_key="YOUR_OXLO_API_KEY")
...
2단계: 이해 프롬프트 (understanding prompt) 정의
시스템 프롬프트 (system prompt)는 언어 이해 모델의 핵심입니다. 이는 LLM이 의도 (intent), 엔티티 (entities), 긴급도 (urgency), 감성 (sentiment), 그리고 신뢰도 점수 (confidence score)를 포함하는 유효한 JSON만을 출력하도록 제한합니다.
SYSTEM_PROMPT = """You are a precise natural language understanding engine.
Analyze the user message and return a single JSON object with these exact keys:
- intent: one of [refund_request, technical_issue, billing_question, product_inquiry, general_complaint, other]
...
3단계: 추출 함수 구축
다음으로, 시스템 프롬프트와 사용자 메시지를 전송한 후 반환된 JSON을 파싱하는 헬퍼 함수에 API 호출을 래핑(wrap)합니다. 모델이 유효한 출력만 생성하도록 OpenAI SDK를 통해 JSON 모드 (JSON mode)를 활성화합니다.
import json
def understand_message(user_message: str) -> dict:
...
4단계: 메시지 배치 처리 (Batch process)
도우미(helper)가 준비되었으므로, 실제 고객 지원 메시지 리스트를 처리합니다. Oxlo.ai는 요청당 고정 요금을 부과하기 때문에, 메시지가 두 문장이든 두 단락이든 상관없이 수천 개의 티켓에 대해 이를 실행하는 비용은 동일합니다. 덕분에 긴 컨텍스트(long-context) 정제나 에이전트 방식의 전처리(agentic pre-processing)가 실용적으로 가능해집니다.
messages = [
"My Order-9982 still hasn't shipped and I need it by Friday. This is the third time I've emailed.",
"Can you tell me if the Kimi K2.6 model supports vision input? I couldn't find it in the docs.",
...
5단계: 낮은 신뢰도 예측값 필터링 (Filter low-confidence predictions)
실제 운영 환경(production)에서는 신뢰도 점수(confidence score)가 0.85 미만인 모든 항목을 사람의 검토 대기열(human review queue)로 보냅니다. 이를 통해 정확도를 희생하지 않으면서도 높은 자동화 수준을 유지할 수 있습니다.
CONFIDENCE_THRESHOLD = 0.85
for item in results:
...
실행하기 (Run it)
이 모든 것을 종합하면, 스크립트는 모든 메시지에 대해 구조화된 이해(structured understanding) 결과를 출력합니다. 아래는 Oxlo.ai를 대상으로 실제 실행했을 때의 대표적인 출력 결과입니다.
Intent: refund_request | Urgency: critical | Confidence: 0.95
Intent: product_inquiry | Urgency: low | Confidence: 0.91
Intent: billing_question | Urgency: high | Confidence: 0.93
...
마무리 (Wrap up)
이 파이프라인(pipeline)을 사용하면 100줄 미만의 Python 코드로 작동 가능한 언어 이해(language understanding) 레이어를 구축할 수 있습니다. 구체적인 다음 단계로 두 가지를 제안합니다. 첫째, understand_message 함수를 FastAPI 엔드포인트(endpoint)에 연결하여 고객 지원 스택이 실시간으로 호출할 수 있게 하거나, 둘째, 더 강력한 다국어 추론(multilingual reasoning) 또는 시각 인지 티켓 파싱(vision-aware ticket parsing)이 필요한 경우 Oxlo.ai에서 qwen-3-32b 또는 kimi-k2.6으로 교체하는 것입니다. 대규모 실행에 대한 가격 정보는 https://oxlo.ai/pricing을 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기