今天要挑戰一個更實用的功能:讓使用者直接輸入自己現在的症狀,系統就能透過 AI 自動推薦可能對應的藥品。這樣不僅提升了互動性,也讓藥品查詢系統更貼近實際應用。
規劃資料結構
先在 SQLite 資料庫中新增一個 symptom_map 資料表,專門用來存「症狀 → 建議藥品」的對照表。
使用 AI 做文字理解
用了一個簡單的關鍵字判斷 + AI 模型(模擬)結合的方式:
回傳建議藥品
使用者輸入症狀後,程式會查詢資料庫,找到候選藥品,並回傳建議。如果有多種藥品可能,AI 會自動幫忙排序,像是:
import sqlite3
# 初始化資料庫
conn = sqlite3.connect("medicine.db")
cursor = conn.cursor()
# 建立症狀對應表
cursor.execute('''
CREATE TABLE IF NOT EXISTS symptom_map (
id INTEGER PRIMARY KEY AUTOINCREMENT,
symptom TEXT,
medicine TEXT
)
''')
# 插入一些對應資料
symptom_data = [
("頭痛", "普拿疼"),
("鼻塞", "感冒通鼻劑"),
("胃酸過多", "制酸劑"),
("喉嚨痛", "喉片/止痛消炎藥")
]
cursor.executemany("INSERT INTO symptom_map (symptom, medicine) VALUES (?, ?)", symptom_data)
conn.commit()
# 查詢功能
def suggest_medicine(user_input):
cursor.execute("SELECT medicine FROM symptom_map WHERE symptom LIKE ?", ('%' + user_input + '%',))
results = cursor.fetchall()
if results:
return [r[0] for r in results]
else:
return ["⚠️ 目前沒有找到相關藥品,請諮詢醫師"]
# 測試
print(suggest_medicine("頭痛")) # → ['普拿疼']
print(suggest_medicine("胃酸")) # → ['制酸劑']
這次做的「症狀 → 藥品」功能,算是把我們前面所有的資料串接方式結合在一起。過程中我發現:
光靠資料庫的 LIKE 查詢,對於使用者輸入的自然語言還是不夠靈活。
所以 AI 的語意理解就顯得很重要,它能幫我把「頭昏腦脹」「胃好像灼燒」這些文字轉換成標準化的「頭痛」「胃酸過多」。
這讓我更有感覺,未來如果能結合更完整的醫藥知識庫,甚至加上專業建議,這個小專案真的就能進化成一個實用的智慧醫療查詢平台了!