kyle9574 commited on
Commit
ce5e9dc
·
verified ·
1 Parent(s): bf91427

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -8
app.py CHANGED
@@ -20,6 +20,30 @@ from linebot.v3.exceptions import InvalidSignatureError
20
 
21
  import google.generativeai as genai
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  # === HF Spaces 上改用 os.environ 讀環境變數 ===
24
  CHANNEL_SECRET = os.environ.get("YOUR_CHANNEL_SECRET")
25
  CHANNEL_ACCESS_TOKEN = os.environ.get("YOUR_CHANNEL_ACCESS_TOKEN")
@@ -79,8 +103,34 @@ def callback():
79
  if event.message.type == "text":
80
  user_input = event.message.text.strip()
81
  print("📨 收到訊息:", user_input)
82
-
83
- # AI 問答
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  if user_input.startswith("AI "):
85
  prompt = "你是一個中文的AI助手,請用繁體中文回答。\n" + user_input[3:].strip()
86
  try:
@@ -136,7 +186,7 @@ def callback():
136
  zh_name, en_name, indication = row
137
  # 副作用由 AI 產生
138
  prompt = (
139
- f"請用簡短條列式,僅列出副作用,針對藥品「{zh_name}」(英文名:{en_name}),"
140
  "請用繁體中文回答,若無法判斷請推測。"
141
  )
142
  try:
@@ -148,12 +198,12 @@ def callback():
148
  f"🔹 中文品名:{zh_name}\n"
149
  f"📌 英文品名:{en_name}\n"
150
  f"📄 適應症:{indication}\n"
151
- f"⚠️ 副作用:{side_effects}"
152
  )
153
  else:
154
  # 全部請AI生成
155
  prompt = (
156
- f"請用以下格式,幫我介紹藥品「{medicine_name}」,若無法查到請盡量推測:\n"
157
  "🔹 中文品名:\n"
158
  "📌 英文品名:\n"
159
  "📄 適應症:\n"
@@ -161,7 +211,7 @@ def callback():
161
  )
162
  try:
163
  ai_resp = chat.generate_content(prompt)
164
- reply_text = ai_resp.text
165
  except Exception as e:
166
  reply_text = f"AI 回答失敗:{e}"
167
 
@@ -259,14 +309,15 @@ def callback():
259
 
260
  # Gemini 圖片說明(指定格式,四欄都AI產生)
261
  prompt = (
262
- "請根據這張圖片判斷藥品資訊,並用以下格式回答,若無法判斷請盡量推測:\n"
 
263
  "🔹 中文品名:\n"
264
  "📌 英文品名:\n"
265
  "📄 適應症:\n"
266
  "⚠️ 副作用:"
267
  )
268
  response = chat.generate_content([image, prompt])
269
- description = response.text
270
 
271
  reply_request = ReplyMessageRequest(
272
  reply_token=event.reply_token,
@@ -275,6 +326,7 @@ def callback():
275
  original_content_url=image_url,
276
  preview_image_url=image_url
277
  ),
 
278
  TextMessage(text=description)
279
  ]
280
  )
 
20
 
21
  import google.generativeai as genai
22
 
23
+ # === System prompt 與免責聲明 ===
24
+ system_prompt = """
25
+ 你是一個 AI 藥物資訊小幫手,目的是提供一般民眾對藥品的認識與常見問題的參考建議。
26
+
27
+ 請注意:
28
+ - 你**不是藥師、醫師或任何醫療人員**。
29
+ - 你**不能提供個別病人的診斷、治療、用藥處方**。
30
+ - 回答時應使用台灣人熟悉的用語,避免過度專業術語。
31
+ - 所有回答請加註:「若您有疑慮,請諮詢合格藥師或醫師」。
32
+ - 對於複雜或高風險問題,請明確建議「應請藥師確認」。
33
+ """
34
+
35
+ disclaimer = """🔍【使用條款與免責聲明】
36
+
37
+ 感謝您使用本 AI 藥物資訊小幫手(以下簡稱「本服務」)。本服務由人工智慧模型提供通用藥品知識、用藥建議參考與日常健康資訊,僅供教育與資訊用途,**不提供診斷、治療或開立處方**,也**不取代藥師、醫師或其他醫療專業人員**。
38
+
39
+ 1️⃣ 本服務無法得知您的完整健康狀況,對特定個人無法保證建議的正確性或適用性。
40
+ 2️⃣ 若您有疾病、服用多種藥品、孕哺期、慢性病等特殊情況,請務必**諮詢合格藥師或醫師**,以確保用藥安全。
41
+ 3️⃣ 本服務產生的內容可能來自訓練數據,非即時醫學資料庫,請勿完全依賴其建議做出醫療決策。
42
+ 4️⃣ 使用本服務即表示您理解並接受本免責聲明,若您不同意,請勿使用本服務。
43
+
44
+ ⚠️ 若您出現急性病症、過敏反應、呼吸困難等情形,請立刻就醫或撥打 119。
45
+ """
46
+
47
  # === HF Spaces 上改用 os.environ 讀環境變數 ===
48
  CHANNEL_SECRET = os.environ.get("YOUR_CHANNEL_SECRET")
49
  CHANNEL_ACCESS_TOKEN = os.environ.get("YOUR_CHANNEL_ACCESS_TOKEN")
 
103
  if event.message.type == "text":
104
  user_input = event.message.text.strip()
105
  print("📨 收到訊息:", user_input)
106
+ # 在 if event.message.type == "text": 裡面最前面加上
107
+ if user_input.strip() == "AI 藥物資訊小幫手":
108
+ welcome = "您好,這裡是 AI 藥物資訊小幫手!請輸入您想查詢的藥品名稱或藥物相關問題。"
109
+ reply_request = ReplyMessageRequest(
110
+ reply_token=event.reply_token,
111
+ messages=[
112
+ TextMessage(text=disclaimer),
113
+ TextMessage(text=welcome)
114
+ ]
115
+ )
116
+ messaging_api.reply_message(reply_message_request=reply_request)
117
+ return "OK"
118
+ elif user_input.startswith("AI 藥物資訊小幫手 "):
119
+ question = user_input.replace("AI 藥物資訊小幫手", "", 1).strip()
120
+ prompt = system_prompt + "\n" + question
121
+ try:
122
+ response = chat.generate_content(prompt)
123
+ reply_text = response.text
124
+ except Exception as e:
125
+ reply_text = f"AI 回答失敗:{e}"
126
+ reply_request = ReplyMessageRequest(
127
+ reply_token=event.reply_token,
128
+ messages=[TextMessage(text=reply_text)]
129
+ )
130
+ messaging_api.reply_message(reply_message_request=reply_request)
131
+ return "OK"
132
+
133
+ # === 原本的 AI 問答 ===
134
  if user_input.startswith("AI "):
135
  prompt = "你是一個中文的AI助手,請用繁體中文回答。\n" + user_input[3:].strip()
136
  try:
 
186
  zh_name, en_name, indication = row
187
  # 副作用由 AI 產生
188
  prompt = (
189
+ "請用簡短條列式,僅列出副作用,針對藥品「{zh_name}」(英文名:{en_name}),"
190
  "請用繁體中文回答,若無法判斷請推測。"
191
  )
192
  try:
 
198
  f"🔹 中文品名:{zh_name}\n"
199
  f"📌 英文品名:{en_name}\n"
200
  f"📄 適應症:{indication}\n"
201
+ f"⚠️ 副作用:{side_effects}\n\n若您有疑慮,請諮詢合格藥師或醫師"
202
  )
203
  else:
204
  # 全部請AI生成
205
  prompt = (
206
+ "請用以下格式,幫我介紹藥品「{medicine_name}」,若無法查到請盡量推測:\n"
207
  "🔹 中文品名:\n"
208
  "📌 英文品名:\n"
209
  "📄 適應症:\n"
 
211
  )
212
  try:
213
  ai_resp = chat.generate_content(prompt)
214
+ reply_text = ai_resp.text + "\n\n若您有疑慮,請諮詢合格藥師或醫師"
215
  except Exception as e:
216
  reply_text = f"AI 回答失敗:{e}"
217
 
 
309
 
310
  # Gemini 圖片說明(指定格式,四欄都AI產生)
311
  prompt = (
312
+ system_prompt +
313
+ "\n請根據這張圖片判斷藥品資訊,並用以下格式回答,若無法判斷請盡量推測:\n"
314
  "🔹 中文品名:\n"
315
  "📌 英文品名:\n"
316
  "📄 適應症:\n"
317
  "⚠️ 副作用:"
318
  )
319
  response = chat.generate_content([image, prompt])
320
+ description = response.text + "\n\n若您有疑慮,請諮詢合格藥師或醫師"
321
 
322
  reply_request = ReplyMessageRequest(
323
  reply_token=event.reply_token,
 
326
  original_content_url=image_url,
327
  preview_image_url=image_url
328
  ),
329
+ TextMessage(text=disclaimer),
330
  TextMessage(text=description)
331
  ]
332
  )