금융 터미널용 100% 결정론적 JSON 출력을 강제하기 위한 엄격한 시스템 프롬프트 제약 활용법
How I used strict system-prompt constraints to force LLMs into outputting 100% deterministic, structured JSON for a financial terminal.
핵심 요약
LLM을 대화 기능이 없는 컴파일러로 정의하고 엄격한 제외 규칙을 설정해 금융 데이터 추출의 구문 신뢰도를 100%까지 끌어올린 사례입니다.
- 무관용 컴파일러 페르소나 — 모델을 대화 능력이 거세된 차갑고 결정론적인 데이터 파싱 도구로 정의함.
- 명시적 부정 제약 — 모호한 질문이나 수치 미포함 시 실행을 즉시 중단하도록 하드코딩하여 환각을 방지함.
- JSON 스키마 강제 — 출력 형식을 엄격히 규정하고 불필요한 설명 없이 데이터만 반환하도록 설계함.
- 구문 신뢰도 극대화 — 혼란스러운 소셜 미디어 텍스트에서도 데이터베이스 오류 없이 안정적인 파싱에 성공함.
여러분 안녕하세요,
저는 현재 voxch (voxch.xyz)라는 금융 추적 레지스트리의 백엔드 인프라를 구축하고 있습니다. 우리가 직면한 핵심 문제는 혼란스럽고 비구조화된 크립토 인플루언서들의 트윗을 파싱하여, LLM이 환각을 일으키거나 추측하게 하지 않고 깨끗하고 신뢰할 수 있는 데이터 포인트(Asset, Target Price, Direction, Expiry)를 추출하는 것이었습니다.
프롬프트가 잘못된 구문을 반환하면 우리 데이터베이스 트리거에서 에러가 발생합니다. 저렴한 "텍스트 완성"형 프롬프트는 완전히 실패했습니다.
완전한 결정론(determinism)을 강제하기 위해 제가 구축한 정확한 메타 프롬프트 프레임워크와 엄격한 제약 구조를 공유합니다.
1. '무관용' 페르소나 정의 모델에게 단순히 "어시스턴트가 되어라"고 말하는 대신, 딱딱하고 창의성이 없는 컴파일러로 고정했습니다.
당신은 차갑고 결정론적이며 샌드박스 처리된 데이터 파싱 컴파일러입니다. 당신의 유일한 기능은 비구조화된 문자열 입력을 표준화된 JSON 객체로 번역하는 것입니다. 당신의 대화 능력은 전무합니다. 사과하지 말고, 설명하지 마세요. 마크다운 산문 래퍼를 포함하지 마세요.
2. 명시적 제외를 통한 퍼지 로직(Fuzzy Logic) 제거 모델이 모호한 텍스트(예: 제작자가 "펌핑할까요 덤핑할까요?"라고 묻는 경우)를 해석하려고 시도하는 것을 막기 위해 부정적 제약을 하드코딩했습니다.
- 텍스트에 조건부 질문("if/then", "펌핑 가능성?")이 포함된 경우, validationStatus를 "FAILED_AMBIGUOUS"로 설정하십시오.
- 텍스트에 특정 숫자 가격 목표나 명확한 퍼센트 임계값이 포함되어 있지 않으면 실행을 중단하십시오.
- 진입 가격을 절대 추론하지 마십시오. 누락된 경우 엄격하게 current_spot_time null을 기본값으로 설정하십시오.
3. JSON 스키마 출력 강제 토큰 사용량을 최적화하고 뒤에 붙는 대화형 잡설을 방지하기 위해, 닫는 중괄호 직후에 생성을 즉시 종료하도록 강제합니다.
{
"ticker": "STRING",
"direction": "LONG | SHORT | NEUTRAL",
"target_price": "NUMBER",
"expiration_days": "NUMBER"
}
결과: 일반적인 대화형 프롬프트에서 구조화된 시스템 제약 매트릭스로 전환함으로써, 우리의 추출 파이프라인은 혼란스러운 소셜 피드 테스트 데이터셋 전체에서 100%에 가까운 구문 신뢰도를 기록했습니다.
우리는 현재 voxch.xyz에서 프라이빗 런칭 인덱스를 구축하기 위해 이 파싱 스크립트를 실행하고 있습니다.
소스 텍스트가 의도적으로 모호하거나 슬랭으로 가득 차 있을 때 여러분은 다중 변수 추출을 어떻게 처리하고 계신가요? 멀티샷 프롬프팅에 의존하시나요, 아니면 원시 완성 결과 위에 유효성 검사 스크립트를 쌓아 올리시나요?

