--- title: 호서대 IR 챗봇 (VOC + KPI) emoji: 💬 colorFrom: blue colorTo: indigo sdk: gradio sdk_version: 5.49.1 app_file: app.py python_version: "3.11" pinned: false license: mit --- # 호서대 IR 챗봇 — VOC + KPI 통합 에브리타임 자유게시판 RAG와 2025학년도 핵심성과지표(對外秘) 분석을 한 챗봇에서 제공. 질문 키워드로 자동 라우팅하거나, 라디오로 모드를 강제 선택할 수 있다. ## 모드 | 모드 | 데이터 | 모델 | 응답 형태 | |---|---|---|---| | 💬 **VOC** | 에브리타임 자유게시판 12,407건 (2024.03~2026.04) | Claude Haiku 4.5 + ChromaDB RAG | 의미 검색 Top-K 게시글 인용 | | 🎯 **KPI** | 2025학년도 핵심성과지표 38개 (對外秘 IR-2025-01) | Claude Haiku 4.5 + 정형 컨텍스트 | 보고서 [p.X] 페이지 인용 | 자동 라우팅은 `kpi_chatbot.is_kpi_question()`에서 KPI 키워드(충원율/취업률/순위/영역명/지표 코드 등)를 감지해 결정한다. ## 구조 VOC 모드 — 3-layer RAG + Haiku. | 레이어 | 용도 | 데이터 | |---|---|---| | 집계 | 정량 질문 ("3월 Top 키워드?") | `aggregates.json` | | 카테고리 | 분류 기반 질문 ("불만 1순위?") | `category_summary.json` | | 검색 | 정성 질문 ("새내기 관심사?") | ChromaDB 임베딩 | KPI 모드 — 정형 컨텍스트 + Opus. - `kpi_data/master.json`: 38개 지표 영역별 인덱스 + 호서대 2024/2025 값/순위 - `kpi_data/indicators/*.json`: 각 지표 메타 + 호서대 5년 추이 + 비교표 발췌 + 현황분석/대응전략 - 시스템 프롬프트에 통째로 주입(prompt cache 적용). 對外秘 가드 + 페이지 출처 인용 강제. 임베딩: `jhgan/ko-sroberta-multitask` (로컬, 무료) LLM: VOC `claude-haiku-4-5-20251001`, KPI `claude-haiku-4-5` (`kpi_chatbot.KPI_MODEL`에서 변경 가능) UI: Gradio ChatInterface + 모드 라디오 (HF Space 호환) ## 실행 ```bash cd ~/project/everytime-analysis/chatbot pip install -r requirements.txt cp .env.example .env # ANTHROPIC_API_KEY 채우기 python build_index.py # 1회 인덱스 빌드 (10~30분) python app.py # 로컬 실행 (http://localhost:7860) ``` ## 한계 VOC: 에브리타임은 익명이라 학년/학과 메타데이터가 없음. 학년 관련 질문은 (1) 시기 기반 추론 또는 (2) 자기식별 키워드("1학년/새내기") 포함 게시글로만 근사. 답변에 근거를 항상 명시. KPI: 對外秘 자료(IR-2025-01). 외부 공개·언론 인용·제3자 공유 금지. 시스템 프롬프트가 외부 인용 가능한 형태(보도자료 등)의 응답 요청을 거부한다. ## 배포 경로 1. 로컬 프로토타입 2. HuggingFace Space (Gradio SDK, 현재) — API 키는 Space Secret(`ANTHROPIC_API_KEY`)으로 보관 3. `hoseo-ir-dashboard` 인덱스 페이지에 iframe 탭으로 임베드 ("KPI 챗봇" 탭)