Rene0119 commited on
Commit
8da50f0
·
verified ·
1 Parent(s): 20b0041

fix the reply of side-effects

Browse files
Files changed (1) hide show
  1. app.py +23 -38
app.py CHANGED
@@ -56,6 +56,7 @@ parser = WebhookParser(CHANNEL_SECRET)
56
  handler = WebhookHandler(CHANNEL_SECRET)
57
 
58
  genai.configure(api_key=GOOGLE_API_KEY)
 
59
  chat = genai.GenerativeModel(model_name="gemini-1.5-flash")
60
 
61
  logging.basicConfig(level=logging.INFO)
@@ -492,11 +493,12 @@ def callback():
492
  conn = sqlite3.connect(DB_PATH)
493
  cursor = conn.cursor()
494
  query = """
495
- SELECT DISTINCT 中文品名, 英文品名, 適應症
496
- FROM drugs
497
- WHERE 中文品名 LIKE ? OR 英文品名 LIKE ?
498
- LIMIT 1
499
- """
 
500
  like_param = f'%{medicine_name}%'
501
  cursor.execute(query, (like_param, like_param))
502
  row = cursor.fetchone()
@@ -505,39 +507,22 @@ def callback():
505
 
506
  if row:
507
  zh_name, en_name, indication = row
508
- # 副作用由 AI 產生
509
- prompt = (
510
- f"請只用簡短條列式(每點用-開頭,不要用*),僅列出副作用,"
511
- f"針對藥品「{zh_name}」(英文名:{en_name}),"
512
- "請用繁體中文回答,不要加任何說明、警語或強調語句。"
513
- "請用繁體中文回答,不要使用 Markdown 格式或 `*` 符號,不要提到你是 AI。"
514
- )
515
- try:
516
- ai_resp = chat.generate_content(prompt)
517
- side_effects = ai_resp.text.strip()
518
- except Exception as e:
519
- side_effects = f"AI 回答失敗:{e}"
520
- reply_text = (
521
- f"🔹 中文品名:{zh_name}\n"
522
- f"📌 英文品名:{en_name}\n"
523
- f"📄 適應症:{indication}\n"
524
- f"⚠️ 副作用:{side_effects}"
525
- )
526
- else:
527
- prompt = (
528
- f"請用以下格式,幫我介紹藥品「{medicine_name}」,"
529
- "請用繁體中文回答,不要使用 Markdown 格式或 `*` 符號,不要提到你是 AI。"
530
- "只要條列資料本身,不要加任何說明、警語或強調語句:\n"
531
- "🔹 中文品名:\n"
532
- "📌 英文品名:\n"
533
- "📄 適應症:\n"
534
- "⚠️ 副作用:(請用-開頭條列,不要用*)"
535
- )
536
- try:
537
- ai_resp = chat.generate_content(prompt)
538
- reply_text = ai_resp.text
539
- except Exception as e:
540
- reply_text = f"AI 回答失敗:{e}"
541
 
542
  except Exception as e:
543
  reply_text = f"⚠️ 查詢資料時發生錯誤:{str(e)}"
 
56
  handler = WebhookHandler(CHANNEL_SECRET)
57
 
58
  genai.configure(api_key=GOOGLE_API_KEY)
59
+ text_system_prompt = "你是一個專業的中文藥物安全衛教AI,運行於Linebot平台,負責為台灣用戶提供用藥查詢、衛教提醒、藥品辨識與互動諮詢。所有回應必須以繁體中文呈現,語氣需保持專業、中立、清晰,嚴禁使用非正式語彙或網路用語。你的回答僅限於台灣現行合法藥品、常見用藥安全及一般衛教知識,絕不涉及診斷、處方或違法用途。遇重要藥品資訊或警語時,務必標示資料來源(如衛福部、健保署或官方藥物資料庫);無法查證時,需說明資訊有限並提醒用戶諮詢藥師。遇到模糊、非藥物相關、或疑似緊急情境(如中毒、嚴重過敏),請直接回覆:「請儘速就醫或聯絡藥師,Linebot無法提供緊急醫療協助。」回答時,優先給出簡明結論,再補充必要說明,遇複雜內容可分點陳述,藥品名稱、注意事項及用法用量需明顯標註。若用戶詢問非本功能範圍問題,請回覆:「本Linebot僅提供藥物安全與衛生教育資訊。」並簡要列舉可查詢主題(如用藥禁忌、藥物交互作用、藥品保存方式等)。所有資訊僅反映截至2025年6月之官方資料,若遇新藥、召回或重大警訊,應提醒用戶查閱衛福部或官方藥事機構。"
60
  chat = genai.GenerativeModel(model_name="gemini-1.5-flash")
61
 
62
  logging.basicConfig(level=logging.INFO)
 
493
  conn = sqlite3.connect(DB_PATH)
494
  cursor = conn.cursor()
495
  query = """
496
+ SELECT DISTINCT 中文品名, 英文品名, 適應症
497
+ FROM drugs
498
+ WHERE LOWER(中文品名) = ?
499
+ OR LOWER(英文品名) = ?
500
+ LIMIT 1
501
+ """
502
  like_param = f'%{medicine_name}%'
503
  cursor.execute(query, (like_param, like_param))
504
  row = cursor.fetchone()
 
507
 
508
  if row:
509
  zh_name, en_name, indication = row
510
+
511
+ if row:
512
+ zh_name, en_name, indication = row[0]
513
+ # 這裡可根據需求回傳資料庫內容
514
+ result = f"🔹 中文品名:{zh_name}\n"
515
+ f"📌 英文品名:{en_name}\n"
516
+ f"📄 適應症:{indication}\n"
517
+
518
+ # 副作用可另外查表或給固定提醒(但不交由AI生成)
519
+ # result += "\n副作用:...(依資料庫內容填寫)"
520
+ return result
521
+
522
+ else:
523
+ return "未找到相關藥品,請重新輸入"
524
+ except Exception:
525
+ return "系統繁忙,請稍後再試"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
526
 
527
  except Exception as e:
528
  reply_text = f"⚠️ 查詢資料時發生錯誤:{str(e)}"