Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -6,6 +6,14 @@ import pandas as pd
|
|
| 6 |
from typing import List, Tuple
|
| 7 |
import json
|
| 8 |
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
# 환경 변수 설정
|
| 11 |
HF_TOKEN = os.getenv("HF_TOKEN")
|
|
@@ -154,19 +162,58 @@ def read_uploaded_file(file):
|
|
| 154 |
except Exception as e:
|
| 155 |
return f"❌ 파일 읽기 오류: {str(e)}", "error"
|
| 156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
def chat(message, history, uploaded_file, system_message="", max_tokens=4000, temperature=0.7, top_p=0.9):
|
| 158 |
if not message:
|
| 159 |
return "", history
|
| 160 |
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
3. 🎯 질문의 의도를 정확히 파악하여 맞춤형 답변
|
| 165 |
-
4.
|
| 166 |
-
5. ✨
|
|
|
|
|
|
|
| 167 |
|
| 168 |
-
항상 예의 바르고 친절하게 응답하며, 필요한 경우 구체적인 예시나 설명을 추가하여
|
| 169 |
-
이해를 돕겠습니다."""
|
| 170 |
|
| 171 |
try:
|
| 172 |
# 파일 업로드 처리
|
|
|
|
| 6 |
from typing import List, Tuple
|
| 7 |
import json
|
| 8 |
from datetime import datetime
|
| 9 |
+
from datasets import load_dataset
|
| 10 |
+
|
| 11 |
+
try:
|
| 12 |
+
pharmkg_dataset = load_dataset("vinven7/PharmKG")
|
| 13 |
+
print("PharmKG 데이터셋 로드 완료")
|
| 14 |
+
except Exception as e:
|
| 15 |
+
print(f"PharmKG 데이터셋 로드 실패: {e}")
|
| 16 |
+
pharmkg_dataset = None
|
| 17 |
|
| 18 |
# 환경 변수 설정
|
| 19 |
HF_TOKEN = os.getenv("HF_TOKEN")
|
|
|
|
| 162 |
except Exception as e:
|
| 163 |
return f"❌ 파일 읽기 오류: {str(e)}", "error"
|
| 164 |
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
def get_pharmkg_context(query):
|
| 168 |
+
"""PharmKG 데이터셋에서 관련 정보 검색"""
|
| 169 |
+
if pharmkg_dataset is None:
|
| 170 |
+
return ""
|
| 171 |
+
|
| 172 |
+
try:
|
| 173 |
+
# 데이터셋에서 관련 정보 검색 로직 구현
|
| 174 |
+
relevant_info = []
|
| 175 |
+
|
| 176 |
+
# 약물 정보 검색
|
| 177 |
+
for item in pharmkg_dataset['train']:
|
| 178 |
+
if query.lower() in str(item).lower():
|
| 179 |
+
relevant_info.append(str(item))
|
| 180 |
+
|
| 181 |
+
if relevant_info:
|
| 182 |
+
return "\n\nPharmKG 참고 정보:\n" + "\n".join(relevant_info[:3])
|
| 183 |
+
return ""
|
| 184 |
+
except Exception as e:
|
| 185 |
+
print(f"PharmKG 검색 오류: {e}")
|
| 186 |
+
return ""
|
| 187 |
+
|
| 188 |
+
|
| 189 |
def chat(message, history, uploaded_file, system_message="", max_tokens=4000, temperature=0.7, top_p=0.9):
|
| 190 |
if not message:
|
| 191 |
return "", history
|
| 192 |
|
| 193 |
+
try:
|
| 194 |
+
# PharmKG 컨텍스트 추가
|
| 195 |
+
pharmkg_context = get_pharmkg_context(message)
|
| 196 |
+
system_message = SYSTEM_PREFIX + system_message + pharmkg_context
|
| 197 |
+
|
| 198 |
+
|
| 199 |
+
SYSTEM_PREFIX = """저는 약리학 전문 AI 어시스턴트 'GiniGEN Pharm'입니다. PharmKG 데이터베이스를 기반으로
|
| 200 |
+
다음과 같은 전문성을 가지고 소통하겠습니다:
|
| 201 |
+
|
| 202 |
+
1. 💊 약물 관련 전문 지식 제공
|
| 203 |
+
2. 🔬 약물 상호작용 및 부작용 정보
|
| 204 |
+
3. 🧬 질병-약물 관계 설명
|
| 205 |
+
4. 📊 임상 데이터 기반 분석
|
| 206 |
+
5. ⚕️ 의약품 안전성 정보
|
| 207 |
+
|
| 208 |
+
다음 원칙으로 소통하겠습니다:
|
| 209 |
+
1. 🤝 전문적이고 신뢰할 수 있는 정보 제공
|
| 210 |
+
2. 💡 이해하기 쉬운 설명과 함께 과학적 근거 제시
|
| 211 |
3. 🎯 질문의 의도를 정확히 파악하여 맞춤형 답변
|
| 212 |
+
4. ⚠️ 의료적 조언이 아닌 정보 제공 목적임을 명시
|
| 213 |
+
5. ✨ 추가 참고자료 및 연구 데이터 제안
|
| 214 |
+
|
| 215 |
+
의학적 결정은 반드시 전문 의료진과 상담하시기 바랍니다."""
|
| 216 |
|
|
|
|
|
|
|
| 217 |
|
| 218 |
try:
|
| 219 |
# 파일 업로드 처리
|