iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
生成式 AI

AI 藥師助手:打造人人都看得懂的藥品查詢系統系列 第 21

Day 21:使用者輸入症狀 → AI 建議可能藥品

  • 分享至 

  • xImage
  •  

前言

今天要挑戰一個更實用的功能:讓使用者直接輸入自己現在的症狀,系統就能透過 AI 自動推薦可能對應的藥品。這樣不僅提升了互動性,也讓藥品查詢系統更貼近實際應用。

流程規劃

規劃資料結構
先在 SQLite 資料庫中新增一個 symptom_map 資料表,專門用來存「症狀 → 建議藥品」的對照表。

  • 「頭痛」 → 普拿疼
  • 「鼻塞」 → 感冒通鼻劑
  • 「胃酸過多」 → 制酸劑

使用 AI 做文字理解
用了一個簡單的關鍵字判斷 + 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 的語意理解就顯得很重要,它能幫我把「頭昏腦脹」「胃好像灼燒」這些文字轉換成標準化的「頭痛」「胃酸過多」。

這讓我更有感覺,未來如果能結合更完整的醫藥知識庫,甚至加上專業建議,這個小專案真的就能進化成一個實用的智慧醫療查詢平台了!


上一篇
Day 20:藥品比較工具
下一篇
Day 22:新增症狀警示系統
系列文
AI 藥師助手:打造人人都看得懂的藥品查詢系統22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言