/** * Epistemic Guard — 모름/추정/확실 3분류 강제 시스템 프롬프트 블록. * * Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-3 (Anti-Hallucination Layer). * 신뢰 조건 T1 "모르면 모른다고 말한다" 담당. * * CoVe(coveBlock) 와의 분업: * - CoVe: 검색 *출처가 있을 때* 주장-출처 매핑을 검증 (그라운딩 점검) * - Epistemic Guard: 출처 유무와 *무관하게* 모든 주장의 인식론적 등급 표시를 강제, * 특히 검색 근거가 *없는* turn 에서 단정 금지 + 역질문 우선 지시 * * 즉 CoVe 가 못 덮는 "검색 결과 0건인데 모델이 그럴듯하게 지어내는" 케이스가 * 이 블록의 주 타깃. 검색 근거가 약할수록 지시가 강해진다. */ export interface EpistemicGuardSignals { /** 선택된 검색 청크 수 (brain-trace 제외). */ chunkCount: number; /** 업무 유형 감지됨 (Requirement Graph) — 업무 산출물은 더 엄격하게. */ taskDetected: boolean; } export function buildEpistemicGuardBlock(signals: EpistemicGuardSignals): string { const lines: string[] = []; lines.push('[EPISTEMIC GUARD]'); lines.push('모든 사실성 주장은 다음 3등급 중 하나로 인식하고, 등급이 낮으면 표시할 것:'); lines.push(''); lines.push('- **확실** — 검색 출처 또는 명백한 사실이 직접 지지. 표시 불필요.'); lines.push('- **추정** — 근거가 간접적이거나 일반화. 문장에 "~로 추정", "일반적으로" 명시.'); lines.push('- **모름 / 확인 필요** — 근거 없음. *지어내지 말고* "(확인 필요)" 표시 또는 솔직히 모른다고 말할 것.'); lines.push(''); lines.push('금지: 근거 없는 수치·날짜·고유명사·인용을 사실처럼 제시하는 것. 모름을 인정하는 답변이 그럴듯한 오답보다 항상 낫다.'); if (signals.chunkCount === 0) { lines.push(''); lines.push('⚠️ 이번 턴은 *검색 근거가 없음* — 모델 일반 지식만으로 답하는 상태다.'); lines.push('- 구체적 수치·최신 정보·사용자 고유 정보(일정, 과거 회의 등)는 단정하지 말 것.'); if (signals.taskDetected) { lines.push('- 업무 산출물 요청인데 근거가 없으므로, 필요한 원자료(회의 메모, 조사 범위 등)를 먼저 *질문*하는 것을 우선 고려할 것.'); } } lines.push('[/EPISTEMIC GUARD]'); return lines.join('\n'); }