openfree commited on
Commit
d46e338
·
verified ·
1 Parent(s): 924be7d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -39
app.py CHANGED
@@ -9,11 +9,15 @@ 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,45 +166,54 @@ def read_uploaded_file(file):
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
- # SYSTEM_PREFIX 전역 변수로 이동
190
- SYSTEM_PREFIX = """저는 약리학 전문 AI 어시스턴트 'GiniGEN Pharm'입니다. PharmKG 데이터베이스를 기반으로
191
- 다음과 같은 전문성을 가지고 소통하겠습니다:
192
- 1. 💊 약물 관련 전문 지식 제공
193
- 2. 🔬 약물 상호작용 부작용 정보
194
- 3. 🧬 질병-약물 관계 설명
195
- 4. 📊 임상 데이터 기반 분석
196
- 5. ⚕️ 의약품 안전성 정보
 
197
  다음 원칙으로 소통하겠습니다:
198
- 1. 🤝 전문적이고 신뢰할 수 있는 정보 제공
199
- 2. 💡 이해하기 쉬운 설명과 함께 과학적 근거 제시
200
- 3. 🎯 질문의 의도를 정확히 파악하여 맞춤형 답변
201
- 4. ⚠️ 의료적 조언이 아닌 정보 제공 목적임을 명시
202
- 5. ✨ 추가 참고자료 연구 데이터 제안
203
- 의학적 결정은 반드시 전문 의료진과 상담하시기 바랍니다."""
 
 
 
 
204
 
205
  def chat(message, history, uploaded_file, system_message="", max_tokens=4000, temperature=0.7, top_p=0.9):
206
  if not message:
@@ -208,7 +221,8 @@ def chat(message, history, uploaded_file, system_message="", max_tokens=4000, te
208
 
209
  try:
210
  # PharmKG 컨텍스트 추가
211
- pharmkg_context = get_pharmkg_context(message)
 
212
  system_message = SYSTEM_PREFIX + system_message + pharmkg_context
213
 
214
  # 파일 업로드 처리
@@ -308,18 +322,17 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", title="GiniGEN 🤖") as demo
308
  temperature = gr.Slider(minimum=0, maximum=1, value=0.7, label="창의성 수준 🌡️")
309
  top_p = gr.Slider(minimum=0, maximum=1, value=0.9, label="응답 다양성 📈")
310
 
311
- # 예시 질문
312
  gr.Examples(
313
  examples=[
314
- ["안녕하세요! 어떤 도움이 필요하신가요? 🤝"],
315
- ["제가 이해하기 쉽게 설명해 주시겠어요? 📚"],
316
- [" 내용을 실제로 어떻게 활용할 수 있을까요? 🎯"],
317
- ["추가로 조언해 주실 내용이 있으신가요? ✨"],
318
- ["궁금한 점이 있는데 여쭤봐도 될까요? 🤔"],
319
  ],
320
  inputs=msg,
321
- )
322
-
323
  # 대화내용 지우기 버튼에 히스토리 초기화 기능 추가
324
  def clear_chat():
325
  chat_history.clear_history()
 
9
  from datasets import load_dataset
10
 
11
  try:
12
+ medical_datasets = {
13
+ 'all_processed': load_dataset("lavita/medical-qa-datasets", "all-processed"),
14
+ 'icliniq': load_dataset("lavita/medical-qa-datasets", "chatdoctor-icliniq"),
15
+ 'healthcaremagic': load_dataset("lavita/medical-qa-datasets", "chatdoctor_healthcaremagic")
16
+ }
17
+ print("의료 데이터셋 로드 완료")
18
  except Exception as e:
19
+ print(f"의료 데이터셋 로드 실패: {e}")
20
+ medical_datasets = None
21
 
22
  # 환경 변수 설정
23
  HF_TOKEN = os.getenv("HF_TOKEN")
 
166
  except Exception as e:
167
  return f"❌ 파일 읽기 오류: {str(e)}", "error"
168
 
169
+ def get_medical_context(query):
170
+ """의료 데이터셋에서 관련 정보 검색"""
171
+ if medical_datasets is None:
 
 
172
  return ""
173
 
174
  try:
 
175
  relevant_info = []
176
 
177
+ # 데이터셋에서 관련 정보 검색
178
+ for dataset_name, dataset in medical_datasets.items():
179
+ for item in dataset['train']:
180
+ # 질문과 답변에서 관련 정보 검색
181
+ if 'question' in item and query.lower() in item['question'].lower():
182
+ relevant_info.append(f"Q: {item['question']}\nA: {item['answer']}")
183
+ elif 'answer' in item and query.lower() in item['answer'].lower():
184
+ relevant_info.append(f"Q: {item['question']}\nA: {item['answer']}")
185
+
186
+ if len(relevant_info) >= 3: # 최대 3개까지만 수집
187
+ break
188
 
189
  if relevant_info:
190
+ return "\n\n의료 참고 정보:\n" + "\n---\n".join(relevant_info[:3])
191
  return ""
192
  except Exception as e:
193
+ print(f"의료 데이터 검색 오류: {e}")
194
  return ""
195
 
196
 
197
+ SYSTEM_PREFIX = """저는 의학 전문 AI 어시스턴트 'GiniGEN Medical'입니다.
198
+ 전문 의료 데이터베이스를 기반으로 다음과 같은 전문성을 가지고 소통하겠습니다:
199
+
200
+ 1. 🏥 일반적인 의학 정보 제공
201
+ 2. 🔬 증상질병 관련 설명
202
+ 3. 🧬 건강 관리 조언
203
+ 4. 📊 의학 연구 데이터 해석
204
+ 5. ⚕️ 예방 의학 정보
205
+
206
  다음 원칙으로 소통하겠습니다:
207
+ 1. 🤝 신뢰할 수 있는 의학 정보 제공
208
+ 2. 💡 이해하기 쉬운 의학 설명
209
+ 3. 🎯 개인별 맞춤 건강 정보
210
+ 4. ⚠️ 의료 면책조항 준수
211
+ 5. ✨ 과학적 근거 기반 조언
212
+
213
+ 중요 고지사항:
214
+ - 이는 일반적인 정보 제공 목적이며, 전문 의료 상담을 대체할 수 없습니다.
215
+ - 긴급한 의료 상황이나 심각한 증상의 경우 즉시 의료진을 찾아주세요.
216
+ - 모든 치료 결정은 반드시 담당 의료진과 상담 후 결정하시기 바랍니다."""
217
 
218
  def chat(message, history, uploaded_file, system_message="", max_tokens=4000, temperature=0.7, top_p=0.9):
219
  if not message:
 
221
 
222
  try:
223
  # PharmKG 컨텍스트 추가
224
+ pharmkg_context = get_medical_context(message) # 함수명만 변경
225
+
226
  system_message = SYSTEM_PREFIX + system_message + pharmkg_context
227
 
228
  # 파일 업로드 처리
 
322
  temperature = gr.Slider(minimum=0, maximum=1, value=0.7, label="창의성 수준 🌡️")
323
  top_p = gr.Slider(minimum=0, maximum=1, value=0.9, label="응답 다양성 📈")
324
 
325
+
326
  gr.Examples(
327
  examples=[
328
+ ["일반적인 건강 관리 조언을 해주세요. 🏥"],
329
+ ["고혈압 증상에 대해 설명해주세요. 🔬"],
330
+ ["건강한 생활습관에 대해 알려주세요. 💪"],
331
+ ["코로나19 예방수칙을 알려주세요. 🦠"],
332
+ ["스트레스 관리 방법을 추천해주세요. 🧘‍♀️"],
333
  ],
334
  inputs=msg,
335
+ )
 
336
  # 대화내용 지우기 버튼에 히스토리 초기화 기능 추가
337
  def clear_chat():
338
  chat_history.clear_history()