immunobiotech commited on
Commit
66ff23f
Β·
verified Β·
1 Parent(s): 24a149f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +145 -2
app.py CHANGED
@@ -338,8 +338,151 @@ with gr.Blocks(
338
 
339
  """
340
  )
341
-
342
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
 
344
  # Launch the interface
345
  if __name__ == "__main__":
 
338
 
339
  """
340
  )
341
+
342
+
343
+ # Launch the interface
344
+ if __name__ == "__main__":
345
+ with gr.Blocks(
346
+ theme=gr.themes.Soft(primary_hue="teal", secondary_hue="slate", neutral_hue="neutral"),
347
+ css="""
348
+ .chatbot-wrapper .message {
349
+ white-space: pre-wrap;
350
+ word-wrap: break-word;
351
+ }
352
+ """
353
+ ) as demo:
354
+ demo.load(lambda: None, _js="""
355
+ () => {
356
+ const style = document.createElement('style');
357
+ style.textContent = `
358
+ .chatbot-wrapper .message {
359
+ white-space: pre-wrap;
360
+ word-wrap: break-word;
361
+ }
362
+ `;
363
+ document.head.appendChild(style);
364
+ }
365
+ """)
366
+
367
+ gr.Markdown("# πŸ’­ PharmAI: μΆ”λ‘  기반 약리학 μ „λ¬Έ AI μ„œλΉ„μŠ€ πŸ’­")
368
+
369
+ gr.HTML("""<a href="https://visitorbadge.io/status?path=https%3A%2F%2Faiqcamp-Gemini2-Flash-Thinking.hf.space">
370
+ <img src="https://api.visitorbadge.io/api/visitors?path=https%3A%2F%2Faiqcamp-Gemini2-Flash-Thinking.hf.space&countColor=%23263759" />
371
+ </a>""")
372
+
373
+ with gr.Tabs() as tabs:
374
+ with gr.TabItem("λŒ€ν™”", id="chat_tab"):
375
+ chatbot = gr.Chatbot(
376
+ type="messages",
377
+ label="PharmAI 챗봇 (슀트리밍 좜λ ₯)", # μŠ€νŠΈλ¦¬λ°μž„μ„ λ‚˜νƒ€λ‚΄λŠ” λ ˆμ΄λΈ”
378
+ render_markdown=True,
379
+ scale=1,
380
+ avatar_images=(None,"https://lh3.googleusercontent.com/oxz0sUBF0iYoN4VvhqWTmux-cxfD1rxuYkuFEfm1SFaseXEsjjE4Je_C_V3UQPuJ87sImQK3HfQ3RXiaRnQetjaZbjJJUkiPL5jFJ1WRl5FKJZYibUA=w214-h214-n-nu"),
381
+ elem_classes="chatbot-wrapper" # μ‚¬μš©μž μ •μ˜ μŠ€νƒ€μΌμš© 클래슀 μΆ”κ°€
382
+ )
383
+
384
+ with gr.Row(equal_height=True):
385
+ input_box = gr.Textbox(
386
+ lines=1,
387
+ label="λŒ€ν™” λ©”μ‹œμ§€",
388
+ placeholder="여기에 λ©”μ‹œμ§€λ₯Ό μž…λ ₯ν•˜μ„Έμš”...",
389
+ scale=4
390
+ )
391
+
392
+ clear_button = gr.Button("λŒ€ν™” μ΄ˆκΈ°ν™”", scale=1)
393
+
394
+ # 예제 ν”„λ‘¬ν”„νŠΈ μΆ”κ°€ - 파일 μ—…λ‘œλ“œ 예제 제거. ν…μŠ€νŠΈ 쀑심 예제 μœ μ§€.
395
+ example_prompts = [
396
+ ["CYP450 νš¨μ†Œμ™€ μ•½λ¬Ό λŒ€μ‚¬ κ°„μ˜ μƒν˜Έ μž‘μš©μ„ μ„€λͺ…ν•˜κ³ , 특히 νš¨μ†Œ μœ λ„ λ˜λŠ” μ–΅μ œκ°€ μ™€νŒŒλ¦°κ³Ό 같은 μ•½λ¬Όμ˜ 치료 효λŠ₯에 μ–΄λ–»κ²Œ 영ν–₯을 λ―ΈμΉ  수 μžˆλŠ”μ§€μ— 쀑점을 λ‘μ‹­μ‹œμ˜€."],
397
+ ["λ§Œμ„± μ‹ μž₯ μ§ˆν™˜ ν™˜μžμ—μ„œ 빈혈 치료λ₯Ό μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ—λ¦¬μŠ€λ‘œν¬μ΄μ—ν‹΄ 제제의 약동학적 및 μ•½λ ₯학적 νŠΉμ„±μ„ μƒμ„Ένžˆ λΆ„μ„ν•˜κ³ , νˆ¬μ—¬ μš©λŸ‰ 및 νˆ¬μ—¬ 간격 결정에 영ν–₯을 λ―ΈμΉ˜λŠ” μš”μΈλ“€μ„ μ„€λͺ…ν•΄ μ£Όμ‹­μ‹œμ˜€."],
398
+ ["κ°„κ²½λ³€ 치료(κ°„ μ„¬μœ ν™” ν•΄μ†Œ)λ₯Ό μœ„ν•œ μ‹ μ•½ κ°œλ°œμ„ μœ„ν•œ 'μ²œμ—° 식물'듀을 μΆ”μΆœν•˜κ³  이에 λŒ€ν•œ ꡬ체적인 약리기전과 κ·Έ 이유, 그리고 μ–΄λ–»κ²Œ μ‘°ν•©ν•΄μ•Ό μ΅œμƒμ˜ νš¨κ³Όκ°€ μžˆμ„μ§€ μΆ”λ‘ ν•˜μ—¬ ν•œλ°©(ν•œμ˜ν•™)적 κ΄€μ μ—μ„œ 졜적의 닡변을 ν•˜λΌ"],
399
+ ["μ•ŒμΈ ν•˜μ΄λ¨Έλ³‘ μΉ˜λ£Œμ— 효과적인 μ²œμ—° 식물 물질과 약리기전 등을 ν•œλ°©(ν•œμ˜ν•™)적 κ΄€μ μ—μ„œ μ„€λͺ…ν•˜κ³  μ•Œλ €μ€˜"],
400
+ ["κ³ ν˜ˆμ•• 치료 및 증상 완화에 효과적인 μ‹ μ•½ κ°œλ°œμ„ μœ„ν•΄ κ°€λŠ₯성이 맀우 높은 μ²œμ—° 식물 물질과 약리기전 등을 ν•œλ°©(ν•œμ˜ν•™)적 κ΄€μ μ—μ„œ μ„€λͺ…ν•˜κ³  μ•Œλ €μ€˜"],
401
+ ["κ³ ν˜ˆμ•• κ΄€λ¦¬μ—μ„œ ACE μ–΅μ œμ œμ™€ ARB의 μž‘μš© λ©”μ»€λ‹ˆμ¦˜μ„ λΉ„κ΅ν•˜κ³  λŒ€μ‘°ν•˜μ—¬ λ ˆλ‹Œ-μ•ˆμ§€μ˜€ν…μ‹ -μ•Œλ„μŠ€ν…Œλ‘  μ‹œμŠ€ν…œμ— λ―ΈμΉ˜λŠ” 영ν–₯을 κ³ λ €ν•˜μ‹­μ‹œμ˜€."],
402
+ ["제2ν˜• λ‹Ήλ‡¨λ³‘μ˜ λ³‘νƒœ 생리학을 μ„€λͺ…ν•˜κ³  λ©”νŠΈν¬λ₯΄λ―Όμ΄ μ–΄λ–»κ²Œ ν˜ˆλ‹Ή κ°•ν•˜ 효과λ₯Ό λ‹¬μ„±ν•˜λŠ”μ§€, μ‹ μž₯ μž₯μ•  ν™˜μžμ— λŒ€ν•œ μ£Όμš” κ³ λ € 사항을 ν¬ν•¨ν•˜μ—¬ μ„€λͺ…ν•˜μ‹­μ‹œμ˜€."],
403
+ ["심뢀전 μΉ˜λ£Œμ—μ„œ 베타 μ°¨λ‹¨μ œμ˜ μž‘μš© λ©”μ»€λ‹ˆμ¦˜κ³Ό μž„μƒμ  μ€‘μš”μ„±μ— λŒ€ν•΄ λ…Όμ˜ν•˜κ³ , νŠΉμ • 베타 수용체 μ•„ν˜•κ³Ό μ‹¬ν˜ˆκ΄€κ³„μ— λ―ΈμΉ˜λŠ” 영ν–₯에 λŒ€ν•΄ μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€."],
404
+ ["μ•ŒμΈ ν•˜μ΄λ¨Έλ³‘μ˜ λ³‘νƒœμƒλ¦¬ν•™μ  기전을 μ„€λͺ…ν•˜κ³ , ν˜„μž¬ μ‚¬μš©λ˜λŠ” 약물듀이 μž‘μš©ν•˜λŠ” μ£Όμš” νƒ€κ²Ÿμ„ μƒμ„Ένžˆ κΈ°μˆ ν•˜μ‹­μ‹œμ˜€. 특히, μ•„μ„Έν‹Έμ½œλ¦°μ—μŠ€ν…ŒλΌμ œ μ–΅μ œμ œμ™€ NMDA 수용체 κΈΈν•­μ œμ˜ μž‘μš© 방식과 μž„μƒμ  의의λ₯Ό 비ꡐ 뢄석해 μ£Όμ‹­μ‹œμ˜€."]
405
+
406
+ ]
407
+
408
+ gr.Examples(
409
+ examples=example_prompts,
410
+ inputs=input_box,
411
+ label="예제: Gemini의 생각을 보렀면 λ‹€μŒ ν”„λ‘¬ν”„νŠΈλ₯Ό μ‚¬μš©ν•΄ λ³΄μ„Έμš”!",
412
+ examples_per_page=3 # ν•„μš”οΏ½οΏ½ 따라 μ‘°μ •
413
+ )
414
+
415
+
416
+ # 이벀트 ν•Έλ“€λŸ¬ μ„€μ •
417
+ msg_store = gr.State("") # μ‚¬μš©μž λ©”μ‹œμ§€λ₯Ό λ³΄μ‘΄ν•˜κΈ° μœ„ν•œ μ €μž₯μ†Œ
418
+
419
+ input_box.submit(
420
+ lambda msg: (msg, msg, ""), # λ©”μ‹œμ§€λ₯Ό μ €μž₯ν•˜κ³  μž…λ ₯을 μ§€μ›λ‹ˆλ‹€.
421
+ inputs=[input_box],
422
+ outputs=[msg_store, input_box, input_box],
423
+ queue=False
424
+ ).then(
425
+ user_message, # μ‚¬μš©μž λ©”μ‹œμ§€λ₯Ό λŒ€ν™”μ— μΆ”κ°€ν•©λ‹ˆλ‹€.
426
+ inputs=[msg_store, chatbot],
427
+ outputs=[input_box, chatbot],
428
+ queue=False
429
+ ).then(
430
+ stream_gemini_response, # 응닡을 μƒμ„±ν•˜κ³  μŠ€νŠΈλ¦¬λ°ν•©λ‹ˆλ‹€.
431
+ inputs=[msg_store, chatbot],
432
+ outputs=chatbot
433
+ )
434
+
435
+ clear_button.click(
436
+ lambda: ([], "", ""),
437
+ outputs=[chatbot, input_box, msg_store],
438
+ queue=False
439
+ )
440
+
441
+ with gr.TabItem("μ‚¬μš© 방법", id="instructions_tab"):
442
+ gr.Markdown(
443
+ """
444
+ ## PharmAI: λ‹Ήμ‹ μ˜ μ „λ¬Έ 약리학 μ–΄μ‹œμŠ€ν„΄νŠΈ
445
+
446
+ PharmAI에 μ˜€μ‹  것을 ν™˜μ˜ν•©λ‹ˆλ‹€. PharmAIλŠ” κ΄‘λ²”μœ„ν•œ μ•½ν•™ 지식 데이터("PharmKG")와 FDA λ“±μ˜ μ „λ¬Έ 데이터λ₯Ό ν•™μŠ΅ν•˜μ—¬ 약리학 μ£Όμ œμ— λŒ€ν•œ μ „λ¬Έκ°€ μˆ˜μ€€μ˜ 정보λ₯Ό μ œκ³΅ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
447
+
448
+ **μ£Όμš” κΈ°λŠ₯:**
449
+
450
+ * **κ³ κΈ‰ 약리학 톡찰λ ₯**: PharmAIλŠ” κ΄‘λ²”μœ„ν•œ 약리학 지식 κ·Έλž˜ν”„λ₯Ό 기반으둜 κ΅¬μ‘°ν™”λ˜κ³  μƒμ„Έν•œ 닡변을 μ œκ³΅ν•©λ‹ˆλ‹€.
451
+ * **μΆ”λ‘  및 μΆ”λ‘ **: 챗봇은 λ³΅μž‘ν•˜κ³  닀면적인 μ§ˆλ¬Έμ„ μ²˜λ¦¬ν•˜μ—¬ μ‚¬μš© κ°€λŠ₯ν•œ μ •λ³΄λ‘œλΆ€ν„° μΆ”λ‘ ν•˜κ³  μΆ”λ‘ ν•˜λŠ” λŠ₯λ ₯을 λ³΄μ—¬μ€λ‹ˆλ‹€.
452
+ * **κ΅¬μ‘°ν™”λœ 응닡**: 응닡은 μ •μ˜, μž‘μš© λ©”μ»€λ‹ˆμ¦˜, 적응증, νˆ¬μ—¬λŸ‰, λΆ€μž‘μš©, μ•½λ¬Ό μƒν˜Έ μž‘μš©, 약동학 및 ν•΄λ‹Ήλ˜λŠ” 경우 μ°Έμ‘° λ¬Έν—Œμ„ ν¬ν•¨ν•˜λ„λ‘ λ…Όλ¦¬μ μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
453
+ * **사고 κ³Όμ • ν‘œμ‹œ**: λͺ¨λΈμ΄ 응닡을 생성할 λ•Œ λͺ¨λΈμ˜ 사고 과정을 κ΄€μ°°ν•  수 μžˆμŠ΅λ‹ˆλ‹€(μ‹€ν—˜μ  κΈ°λŠ₯).
454
+ * **λŒ€ν™” 기둝**: PharmAIλŠ” 이전 λŒ€ν™” 뢀뢄을 κΈ°μ–΅ν•˜μ—¬ μ—¬λŸ¬ λ²ˆμ— 걸쳐 더 μ •ν™•ν•˜κ³  κ΄€λ ¨μ„± μžˆλŠ” 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
455
+ * **슀트리밍 좜λ ₯**: 챗봇은 λŒ€ν™”ν˜• κ²½ν—˜μ„ μœ„ν•΄ 응닡을 μŠ€νŠΈλ¦¬λ°ν•©λ‹ˆλ‹€.
456
+
457
+ **PharmAI μ‚¬μš© 방법:**
458
+
459
+ 1. **λŒ€ν™” μ‹œμž‘**: "λŒ€ν™”" νƒ­ μ•„λž˜μ˜ μž…λ ₯ μƒμžμ— 약리학 μ§ˆλ¬Έμ„ μž…λ ₯ν•©λ‹ˆλ‹€. 챗봇은 특히 λ³΅μž‘ν•œ 약리학 μ§ˆλ¬Έμ„ μ²˜λ¦¬ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
460
+
461
+ 2. **예제 ν”„λ‘¬ν”„νŠΈ μ‚¬μš©**: 제곡된 예제 μ§ˆλ¬Έμ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈ μž‘λ™ 방식을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ˜ˆμ œλŠ” 챗봇이 μ „λ¬Έ 지식을 보여주도둝 ν•˜κΈ° μœ„ν•΄ κ³ μ•ˆλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
462
+
463
+ 3. **예제 ν”„λ‘¬ν”„νŠΈ 지침**:
464
+ * **μž‘μš© λ©”μ»€λ‹ˆμ¦˜**: νŠΉμ • 약물이 λΆ„μž μˆ˜μ€€μ—μ„œ μ–΄λ–»κ²Œ μž‘μš©ν•˜λŠ”μ§€ λ¬Όμ–΄λ³΄μ„Έμš”. 예: "λ©”νŠΈν¬λ₯΄λ―Όμ˜ μž‘μš© λ©”μ»€λ‹ˆμ¦˜μ„ μ„€λͺ…ν•˜μ‹­μ‹œμ˜€."
465
+ * **μ•½λ¬Ό λŒ€μ‚¬**: 신체가 약물을 μ–΄λ–»κ²Œ μ²˜λ¦¬ν•˜λŠ”μ§€ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€. 예: "CYP450 νš¨μ†Œμ™€ μ•½λ¬Ό λŒ€μ‚¬ κ°„μ˜ μƒν˜Έ μž‘μš©μ„ μ„€λͺ…ν•˜μ‹­μ‹œμ˜€..."
466
+ * **μž„μƒμ  의미**: νŠΉμ • μ§ˆλ³‘μ„ μΉ˜λ£Œν•˜λŠ” 데 μžˆμ–΄ μ•½λ¬Όμ˜ μž„μƒμ  μ‚¬μš©μ— λŒ€ν•œ μ§ˆλ¬Έμ„ μ œκΈ°ν•˜μ‹­μ‹œμ˜€. 예: "심뢀전 μΉ˜λ£Œμ—μ„œ 베타 μ°¨λ‹¨μ œμ˜ μž‘μš© λ©”μ»€λ‹ˆμ¦˜κ³Ό μž„μƒμ  μ€‘μš”μ„±μ— λŒ€ν•΄ λ…Όμ˜ν•˜μ‹­μ‹œμ˜€..."
467
+ * **λ³‘νƒœμƒλ¦¬ν•™ 및 μ•½λ¬Ό ν‘œμ **: μ§ˆλ³‘, 원인 및 약물이 μ§ˆλ³‘μ„ μΉ˜λ£Œν•  수 μžˆλŠ” 방법에 λŒ€ν•΄ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€. 예: "제2ν˜• λ‹Ήλ‡¨λ³‘μ˜ λ³‘νƒœ 생리학을 μ„€λͺ…ν•˜κ³  λ©”νŠΈν¬λ₯΄λ―Όμ΄ μ–΄λ–»κ²Œ μž‘μš©ν•˜λŠ”μ§€ μ„€λͺ…ν•˜μ‹­μ‹œμ˜€..."
468
+ * **볡합 닀쀑 μ•½λ¬Ό μƒν˜Έ μž‘μš©**: μ‹ μ²΄μ—μ„œ ν•˜λ‚˜μ˜ 약물이 λ‹€λ₯Έ 약물에 μ–΄λ–»κ²Œ 영ν–₯을 λ―ΈμΉ  수 μžˆλŠ”μ§€μ— λŒ€ν•œ μ§ˆλ¬Έμ„ μ œκΈ°ν•˜μ‹­μ‹œμ˜€.
469
+ * **전톡 μ˜ν•™ 관점**: μ§ˆλ³‘ 및 μΉ˜λ£Œμ— λŒ€ν•œ 전톡 μ˜ν•™(ν•œλ°©κ³Ό 같은) μ ‘κ·Ό 방식에 λŒ€ν•΄ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€. 예: "ν•œλ°©μ  κ΄€μ μ—μ„œ μ•ŒμΈ ν•˜μ΄λ¨Έλ³‘ μΉ˜λ£Œμ— 효과적인 μ²œμ—° 식물 물질과 κ·Έ λ©”μ»€λ‹ˆμ¦˜μ„ μ„€λͺ…ν•˜μ‹­μ‹œμ˜€."
470
+
471
+
472
+ 4. **응닡 κ²€ν† **: 챗봇은 λ‚΄λΆ€ 처리 과정을 λ³΄μ—¬μ£ΌλŠ” "생각 쀑" μ„Ήμ…˜κ³Ό ν•¨κ»˜ 응닡을 μ œμ‹œν•©λ‹ˆλ‹€. 그런 λ‹€μŒ μ •μ˜, μž‘μš© λ©”μ»€λ‹ˆμ¦˜, 적응증 등을 ν¬ν•¨ν•œ μ„Ήμ…˜κ³Ό ν•¨κ»˜ 보닀 κ΅¬μ‘°ν™”λœ 응닡을 μ œκ³΅ν•©λ‹ˆλ‹€.
473
+
474
+ 5. **λŒ€ν™” μ΄ˆκΈ°ν™”**: "λŒ€ν™” μ΄ˆκΈ°ν™”" λ²„νŠΌμ„ μ‚¬μš©ν•˜μ—¬ μƒˆ μ„Έμ…˜μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.
475
+
476
+ **주의 사항:**
477
+
478
+ * '생각 쀑' κΈ°λŠ₯은 μ‹€ν—˜μ μ΄μ§€λ§Œ 응닡을 생성할 λ•Œ λͺ¨λΈμ΄ μˆ˜ν–‰ν•œ 단계λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.
479
+ * μ‘λ‹΅μ˜ ν’ˆμ§ˆμ€ μ‚¬μš©μž ν”„λ‘¬ν”„νŠΈμ— 따라 크게 λ‹¬λΌμ§‘λ‹ˆλ‹€. μ΅œμƒμ˜ κ²°κ³Όλ₯Ό μ–»μœΌλ €λ©΄ μ§ˆλ¬Έν•  λ•Œ κ°€λŠ₯ν•œ ν•œ μžμ„Έν•˜κ²Œ μ„€λͺ…ν•˜μ‹­μ‹œμ˜€.
480
+ * 이 λͺ¨λΈμ€ 특히 약리학 정보에 μ΄ˆμ μ„ λ§žμΆ”κ³  μžˆμœΌλ―€λ‘œ 이 λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ μ§ˆλ¬Έμ—λŠ” κ΄€λ ¨μ„± μžˆλŠ” 닡변을 얻지 λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
481
+ * 이 챗봇은 정보 제곡용 λ¦¬μ†ŒμŠ€λ‘œ 제곡되며 의료 진단 λ˜λŠ” 치료 ꢌμž₯ 사항에 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. 의료 상담이 ν•„μš”ν•œ 경우 항상 의료 전문가와 μƒλ‹΄ν•˜μ‹­μ‹œμ˜€.
482
+
483
+ """
484
+ )
485
+
486
 
487
  # Launch the interface
488
  if __name__ == "__main__":