/** * 회의 녹취 텍스트 → 사실 기반 구조화 회의록(Actionable Minutes) LLM 프롬프트. * 사용자 정의 규칙: Fact/Discussion/Decision/Risk/Action 분류, 메타데이터 우선. */ export function buildMeetPrompt(transcript: string, metadata: string): string { const metaBlock = metadata.trim() || '(메타데이터 미입력 — 녹취록 내용에서 추론하거나 "확인 불가"로 표기)'; return `# 임무 (Objective) 제공된 회의 녹취 텍스트와 메타데이터를 기반으로, 외부 지식 없이 사실 기반의 구조화된 회의록(Actionable Minutes)을 생성한다. # 역할 (Role) - Fact Extractor: 녹취록에 명시적으로 존재하는 사실만 추출 - Attribution Tracker: 누가 무엇을 말했는지 발언 주체를 끝까지 추적해 오귀속을 방지 - Decision Tracker: 결정 여부 구분 - Action Organizer: 실행 항목 구조화 - Context Filter: 불필요한 발언(잡담) 제거 # 데이터 우선순위 (Data Priority) 1순위: 메타데이터 / 2순위: 녹취록 내용. 충돌 시 반드시 메타데이터를 사용한다. # 처리 절차 (Processing Flow) 1. Speaker Tracking — 발언자 ID/이름을 끝까지 유지한다. **누가 한 말인지를 절대 임의로 바꾸거나 합치지 말 것.** 2. Topic Reclustering — 이 녹취록은 비선형이다(A→B→Z→다시 A 식으로 주제가 튄다). 녹취록 전체를 훑어 **흩어진 발언을 주제별로 다시 묶은 뒤** 정리한다. 녹취록상 앞뒤로 붙어 있다는 이유만으로 두 발언을 인과·연결 관계로 엮지 말 것(**인접 ≠ 연결**). 3. Deconstruction — 잡담을 제거하고 의미 단위로 분해하되, 각 단위에 발언 주체를 보존한다. 4. Classification — 모든 내용을 Fact / Discussion / Decision / Risk / Action 으로 분류한다. 5. Decision Logic - 명확한 합의 표현 → Decision - 실행 주체 + 행동 → Action - 제안/의견 → Discussion - 조건 부족 / 합의 불명확 → Open Issue 6. Structuring — 중복 제거, 핵심만 유지, 짧고 명확한 문장을 사용한다. # 근거·정확성 규칙 (Grounding Rules — 반드시 준수, 할루시네이션 방지) - **녹취록에 명시된 내용만 적는다.** 추론으로 빈칸을 메우거나, 별개의 발언을 하나의 인과 사슬로 합성하지 말 것. - **발언 주체가 불명확하면 추측하지 말 것.** 누가 말했는지 확실하지 않으면 이름을 붙이지 말고 "(발언 주체 불명확)"으로 표기하거나 "~라는 의견이 제시됨"처럼 주체 없이 중립적으로 서술한다. 어떤 발언자의 말을 다른 발언자의 결론으로 옮기는 것은 가장 심각한 오류다. - **녹취록에 없는 숫자·날짜·금액·고유명사·제품명을 만들어내지 말 것.** 불확실하면 "확인 필요"로 둔다. - 어떤 항목의 근거가 녹취록에서 약하거나 모호하면, 지어내지 말고 해당 항목 끝에 "(확인 필요)"를 붙인다. - Decision은 명시적 합의 표현이 있을 때만 '결정됨'이다. 합의가 불명확하면 '논의 중' 또는 오픈 이슈로 둔다. # 출력 검증 (Validation) 출력 전 내부적으로 점검한다: ① 각 발언이 올바른 주체에게 귀속됐는가 ② 인접 발언을 임의로 연결하지 않았는가 ③ Decision은 실제 합의인가 ④ 녹취록에 없는 정보를 추가하지 않았는가 ⑤ Action은 실행 가능한가. 단, 검증 과정·체크 로그는 출력하지 말 것. 최종 회의록만 출력한다. [메타데이터] ${metaBlock} [회의 녹취록] \`\`\` ${transcript} \`\`\` # 출력 형식 (Output Format — 정확히 이 구조를 유지) # [회의 제목] - **날짜**: [YYYY년 MM월 DD일 | 확인 불가] - **참석자**: [메타데이터 기준 | 없을 경우: 논의 참여 주체] - **주제 요약**: [한 문장 요약] ## 🔹 요약 보고 핵심 논의 요약 3~5개를 글머리표로 작성. ## 1. 주요 논의 사항 각 안건마다 아래 구조로: ### [안건 제목] - **현황**: - **핵심 논의**: 쟁점이 되거나 주체가 중요한 발언은 "OOO: ~" 형태로 발언자를 밝힌다. 주체가 불명확하면 이름을 붙이지 말 것. - **결론**: [결정됨 / 논의 중 / 보류] ## 2. 리스크 및 이슈 ## 3. 결정 사항 ## 4. 오픈 이슈 ## 5. 액션 아이템 각 행은 반드시 녹취록 근거로 작성한다. 표 셀 안에서는 줄바꿈과 \`|\` 문자를 쓰지 말 것. | 담당 | 작업 내용 | 작업 상세 | 기한 | | --- | --- | --- | --- | - **작업 내용**: 한 줄짜리 작업명. 캘린더 일정 제목으로 그대로 쓰이므로 그 자체로 무슨 일인지 식별되게 작성한다. ("검토", "확인" 같은 단독 동사 금지) - **작업 상세**: 이 작업이 **무엇이고, 왜 필요하며, 구체적으로 무엇을 수행해야 하는지**를 2~3문장으로 적는다(배경·목적·수행 범위·산출물). 녹취록에서 언급된 대상·수치·조건을 그대로 인용한다. 근거가 부족하면 "추가 확인 필요: …" 형태로 무엇을 확인해야 하는지 명시한다. 단순히 작업명을 반복하지 말 것. 위 형식을 정확히 따르고, 모든 내용은 한국어로 작성하시오.`; }