Spaces:
Sleeping
Sleeping
fix the reply of side-effects
Browse files
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 |
-
|
| 496 |
-
|
| 497 |
-
|
| 498 |
-
|
| 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 |
-
|
| 509 |
-
|
| 510 |
-
|
| 511 |
-
|
| 512 |
-
"
|
| 513 |
-
|
| 514 |
-
|
| 515 |
-
|
| 516 |
-
|
| 517 |
-
|
| 518 |
-
|
| 519 |
-
|
| 520 |
-
|
| 521 |
-
|
| 522 |
-
|
| 523 |
-
|
| 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)}"
|