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 |
# 파일 업로드 처리
|