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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -51
app.py CHANGED
@@ -9,15 +9,11 @@ from datetime import datetime
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,65 +162,64 @@ def read_uploaded_file(file):
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:
220
  return "", history
221
 
222
  try:
223
- # PharmKG 컨텍스트 추가
224
- pharmkg_context = get_medical_context(message) # 함수명만 변경
225
-
226
- system_message = SYSTEM_PREFIX + system_message + pharmkg_context
227
-
228
  # 파일 업로드 처리
229
  if uploaded_file:
230
  content, file_type = read_uploaded_file(uploaded_file)
@@ -309,7 +304,7 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", title="GiniGEN 🤖") as demo
309
  send = gr.Button("보내기 📤")
310
 
311
  with gr.Column(scale=1):
312
- gr.Markdown("### GiniGEN Pharm 🤖 [파일 업로드] 📁\n지원 형식: 텍스트, 코드, CSV, Parquet 파일")
313
  file_upload = gr.File(
314
  label="파일 선택",
315
  file_types=["text", ".csv", ".parquet"],
@@ -325,14 +320,15 @@ with gr.Blocks(theme="Yntec/HaleyCH_Theme_Orange", title="GiniGEN 🤖") as demo
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()
 
9
  from datasets import load_dataset
10
 
11
  try:
12
+ legal_dataset = load_dataset("aiqtech/kolaw")
13
+ print("법률 데이터셋 로드 완료")
 
 
 
 
14
  except Exception as e:
15
+ print(f"법률 데이터셋 로드 실패: {e}")
16
+ legal_dataset = None
17
 
18
  # 환경 변수 설정
19
  HF_TOKEN = os.getenv("HF_TOKEN")
 
162
  except Exception as e:
163
  return f"❌ 파일 읽기 오류: {str(e)}", "error"
164
 
165
+ def get_legal_context(query):
166
+ """법률 데이터셋에서 관련 판례 검색"""
167
+ if legal_dataset is None:
168
  return ""
169
 
170
  try:
171
  relevant_info = []
172
 
173
+ # 판례 검색
174
+ for item in legal_dataset['train']:
175
+ # 사건번호, 판시사항, 판결요지 등에서 검색
176
+ searchable_text = f"{item.get('사건번호', '')} {item.get('판시사항', '')} {item.get('판결요지', '')}"
177
+ if query.lower() in searchable_text.lower():
178
+ case_info = f"📌 사건번호: {item.get('사건번호', '')}\n"
179
+ case_info += f"📝 판시사항: {item.get('판시사항', '')[:200]}...\n"
180
+ case_info += f"⚖️ 판결요지: {item.get('판결요지', '')[:200]}...\n"
181
+ relevant_info.append(case_info)
182
+
183
+ if len(relevant_info) >= 3: # 최대 3개까지만 수집
184
+ break
185
 
186
  if relevant_info:
187
+ return "\n\n관련 판례 정보:\n" + "\n---\n".join(relevant_info[:3])
188
  return ""
189
  except Exception as e:
190
+ print(f"판례 검색 오류: {e}")
191
  return ""
192
 
193
 
194
+ SYSTEM_PREFIX = """저는 법률 전문 AI 어시스턴트 'GiniGEN Legal'입니다.
195
+ 대법원 판례 데이터베이스를 기반으로 다음과 같은 전문성을 가지고 소통하겠습니다:
196
 
197
+ 1. ⚖️ 판례 분석 해석
198
+ 2. 📜 법률 조항 설명
199
+ 3. 🔍 유사 판례 검색
200
+ 4. 📊 판례 동향 분석
201
+ 5. 💡 법적 조언 제공
202
 
203
  다음 원칙으로 소통하겠습니다:
204
+ 1. 🤝 객관적이고 공정한 법률 정보 제공
205
+ 2. 💭 이해하기 쉬운 법률 설명
206
+ 3. 🎯 구체적인 판례 인용
207
+ 4. ⚠️ 법률 자문 면책조항 준수
208
+ 5. ✨ 실무적 관점 제시
209
 
210
  중요 고지사항:
211
+ - 이는 일반적인 법률 정보 제공 목적이며, 전문 법률 상담을 대체할 수 없습니다.
212
+ - 구체적인 법률 문제는 반드시 변호사와 상담하시기 바랍니다.
213
+ - 제공되는 정보는 참고용이며, 법적 구속력이 없습니다."""
214
 
215
  def chat(message, history, uploaded_file, system_message="", max_tokens=4000, temperature=0.7, top_p=0.9):
216
  if not message:
217
  return "", history
218
 
219
  try:
220
+ legal_context = get_legal_context(message)
221
+ system_message = SYSTEM_PREFIX + system_message + legal_context
222
+
 
 
223
  # 파일 업로드 처리
224
  if uploaded_file:
225
  content, file_type = read_uploaded_file(uploaded_file)
 
304
  send = gr.Button("보내기 📤")
305
 
306
  with gr.Column(scale=1):
307
+ gr.Markdown("### GiniGEN legal 🤖 [파일 업로드] 📁\n지원 형식: 텍스트, 코드, CSV, Parquet 파일")
308
  file_upload = gr.File(
309
  label="파일 선택",
310
  file_types=["text", ".csv", ".parquet"],
 
320
 
321
  gr.Examples(
322
  examples=[
323
+ ["민사상 손해배상 관련 주요 판례를 알려주세요. ⚖️"],
324
+ ["특허권 침해에 대한 최근 판례를 설명해주세요. 📜"],
325
+ ["부동산 계약 관련 중요 판례는 무엇인가요? 🏠"],
326
+ ["형사 사건의 정당방위 인정 기준은 어떻게 되나요? 🔍"],
327
+ ["이혼 소송에서 재산분할의 기준은 어떻게 되나요? 💼"],
328
  ],
329
  inputs=msg,
330
+ )
331
+
332
  # 대화내용 지우기 버튼에 히스토리 초기화 기능 추가
333
  def clear_chat():
334
  chat_history.clear_history()