ai-doctor:讓多家 LLM 同場會診、互評淘汰的開源模擬面板

ai-doctor 是開源的 AI 醫療會診模擬面板:多家 LLM 扮演醫生同場發言、互評投票、淘汰最不準確的意見後收斂出診斷總結。本文從原始碼與線上版操作拆解它的會診與投票機制、BYOK 資料流向,以及採用前要知道的三個硬邊界:沒填 API 金鑰跑不動、MIT 徽章對不上 LICENSE 檔案、淘汰的是模型共識而非醫學驗證。

用 AI 摘要這篇文章:

ai-doctor(AI 醫療會診面板)是一個掛在 GitHub Pages 上的開源網頁工具:你輸入一份病例,讓好幾個由不同大型語言模型扮演的「醫生」輪流發言、互相評分,每一輪淘汰掉最多同伴標記為「不太準確」的醫生,最後收斂出一份診斷總結。實際打開線上版,介面完整、流程是真的,但它最上方的橫幅就寫得很明白:內容僅供參考,身體不適請儘早就醫。作者把它定位成會診流程的技術演示與教學素材,這個定位本身就值得先記住。

ai-doctor 線上版主介面:左側病例輸入表單、右側狀態面板與醫生列表,最上方掛著僅供參考儘早就醫的提醒橫幅Pin
ai-doctor 線上版主介面,最上方的橫幅寫明內容僅供參考、身體不適儘早就醫。

不過要把它用在課堂或研究裡之前,有三件事會直接影響你的決定,而且都藏在表面之下:線上版預設跑不動(沒填 API 金鑰的醫生根本進不了會診)、README 掛著 MIT 授權徽章但整個專案沒有 LICENSE 檔案、以及「淘汰」機制淘汰的是模型之間的共識少數方,與醫學對錯沒有必然關係。底下把這三件事逐一攤開,順便講清楚它的資料流向與自架方式,讓你自己判斷它值不值得進入你的工具箱。

一場會診怎麼進行:輪流發言、互評投票、最高票出局

整個流程在原始碼裡定義得相當清楚。你在首頁填病歷表單(患者姓名、年齡、性別、既往病史、本次問題都是欄位),按下開始會診後,你選中的醫生輪流發言(順序預設隨機,可以改成照清單排序),每個人拿到的材料是同一份病歷加上先前的完整討論紀錄。每一輪結束後進入評估階段:所有還在場上的醫生各自投給一位他認為這輪講得最不準確的同伴,規則允許投自己,系統把輸出格式約束成一段 JSON。獲得最多「不太準確」票的醫生出局;平票或沒有人得票,這一輪就不淘汰任何人。

會診什麼時候結束有兩個條件:場上只剩一位醫生(採用他的答案),或是連續好幾輪都沒有人出局、觸發上限。這個上限預設是三輪,可以在設定裡調整;到達上限時若還有多位醫生在場,總結會交給還留在場上的第一位醫生生成。最終總結的提示詞要求輸出七個部分:核心診斷與分級、主要依據、鑑別診斷、進一步檢查與理由、治療與處置建議、隨訪時機、患者教育與風險提示。

這裡有一條對教學場景特別重要的細節:提示詞明確要求模型在適用時給出藥物劑量。也就是說,這份總結會長得非常像一份真的醫囑。演示時如果沒有先框住「這是模型輸出,不是醫囑」這條線,台下學生很容易把格式的完整誤讀成內容的可靠。專案在介面與中文版 README 都放了免責聲明,但聲明放在旁邊,劑量寫在正文裡,課堂上這兩者的注意力分配得靠演示的人自己掌控。

線上版的第一道關卡:沒填金鑰的醫生進不了會診

線上版打開後,全域設定裡已經預設了三個醫生:Dr. GPT-4、Dr. Claude 3、Dr. Gemini,分別對應 OpenAI、Anthropic、Gemini 三種介面規範,模型名都填好了,唯獨 API 金鑰是空的。全域設定的提示文字寫著「未填寫 API Key 將使用模擬回覆」,聽起來像是不用金鑰也能空跑一場。

實際操作會撞上另一道牆。到問診設定裡把醫生加進本場會診時,面板會直接拒絕,並提示這些醫生未配置 API Key 或模型、無法加入,請先回全域設定補上。翻開原始碼可以對上:加入會診的驗證函式要求 API 金鑰與模型名都不能是空字串,這是 2025 年 11 月中旬加入的功能;而「模擬回覆」的分支確實存在於呼叫模型的程式碼裡(沒有金鑰時等 0.6 秒回一句固定的制式發言),只是在正常介面流程中,無金鑰的醫生連場都上不了,那個分支走不到。同一段程式碼裡,無金鑰的醫生投票時會投給自己,讓投票流程有確定的結果。

問診設定彈窗擋下未配置 API 金鑰的醫生,畫面提示 Dr. GPT-4、Dr. Claude 3、Dr. Gemini 無法加入本次會診Pin
預設三個醫生都沒填 API 金鑰,加入會診時被設定擋下,提示先回全域設定配置。

所以實際的入場代價是:至少要準備一家的 API 金鑰。它支援五種供應商規範(OpenAI、Anthropic、Gemini、矽基流動、ModelScope 魔搭),再加上自訂 Base URL 與手動輸入模型名,所以接任何 OpenAI 相容的中繼端點或新模型都行;如果手上有多家免費額度想統一成一個端點,可以搭配像 FreeLLMAPI 這類閘道再填進 Base URL。要注意的是預設推薦的模型清單停在 2024 年代的型號(例如 claude-3-haiku-20240307、gemini-1.5-flash),想要新一點的模型得自己手填名稱。

順帶一提,這種「金鑰由使用者自備、瀏覽器直接連模型端點」的架構,信任邊界和我們之前介紹過的 SkidHomework 屬於同一族:你的金鑰與你的內容走同一條通道,直接從你的瀏覽器到你選的模型服務,中間沒有作者自己的伺服器。好處是作者經手不了你的資料,代價是金鑰的保管責任完全在你身上。

「資料只存在瀏覽器」要怎麼正確解讀

README 的隱私段寫得很吸引人:純前端架構、無後端儲存、所有配置與紀錄只存在本地瀏覽器,甚至還寫了無資料上傳。前三句都對,最後一句與實際行為不符,組合起來容易讓人讀出過大的安全感,值得拆成兩層看。

存在瀏覽器 localStorage 裡的,是醫生設定(包含你填入的 API 金鑰)、預設提示詞、圖片識別設定,以及每一場會診的完整紀錄與當前進度。清掉瀏覽器資料就會全部消失,這是它的承諾,也符合程式碼的行為。但另一層是:病例內容與每一輪發言,都會由瀏覽器直接送到你為每個醫生設定的模型端點,這是這個工具能運作的前提。換句話說,「本地」涵蓋的是設定與紀錄,病例本身會離開瀏覽器,去向由你選的供應商決定。

這也劃出了使用上很實際的一條紅線:拿教學案例、文獻裡的虛構病例、或自己編的症狀來跑都沒問題;真實病歷不該貼進去。同樣是醫療資料工具,WellAlly Health 選擇把報告辨識整個留在本機處理,ai-doctor 則把內容送到雲端模型,兩者的適用場景從這一刀就分開了。如果你對「資料什麼時候會出瀏覽器」特別敏感,on-device-browser-agent 那篇討論的完全本機路線是另一個極端的參照。

金鑰本身也要小心。存在 localStorage 的金鑰,任何能在這個頁面上執行的指令碼都讀得到,所以別在公用電腦上設定,也別把整個瀏覽器設定檔隨手分享給別人。作者在 README 提醒妥善保管金鑰,這個提醒是認真的。

淘汰機制的真面目:出局的是模型共識的少數方

這個工具招牌式的設計是淘汰,但它淘汰的東西需要精確理解。每一輪投票,投票者是其他的大型語言模型;出局的條件是拿到相對多數的「不太準確」標記,未必真的過半。整個流程裡沒有任何醫學知識庫、臨床指南或事實查核參與裁決,裁判與答辯的雙方都是模型。所以它收斂出來的結論,嚴格說是「這群模型互相說服後的共識」,不是經過驗證的醫學答案。極端一點想:如果場上三個醫生背後是同一個模型的三個副本,投票就變成同一個聲音的自我確認。

系統提示詞裡其實有試著對抗這種趨同:它要求每個醫生保持獨立判斷,別為了迎合同伴而輕易改變核心觀點,也要求明確指出不同意見。平票不淘汰、可以投自己這兩條規則,也減緩了濫用與誤殺的速度。這些設計讓它作為「多方觀點如何收斂」的流程演示很有料,但作為品質保證機制,它的上限就是模型之間的一致性,而一致性從來不等於正確。

如果你要的只是「多個模型針對同一個問題各寫一份答案,擺在一起比較」,其實不需要這麼複雜的辯論流程,ParallelChat 那類多模型並行對話工具就是為這個用途設計的。ai-doctor 多出來的部分,是讓模型互相看見、互相批判、再用投票把少數方請下場,這條辯論與收斂的軸才是它的教學價值所在,也是人最容易過度解讀的部分。

圖片識別、關聯問診與鴻蒙版:三個低調的額外功能

除了主流程,repo 裡還有三個功能值得知道。醫療圖片識別是最直覺的一個:全域設定裡有獨立的圖片識別分頁,預設關閉,開啟後走矽基流動的視覺模型(預設型號 Pro/Qwen/Qwen2-VL-72B-Instruct),把上傳圖片轉成一段病灶描述文字,再併進病歷餵給醫生們。它需要另外填一組金鑰,識別的結果也只是「描述給模型看」,不是診斷。README 的開發路線圖把「支援上傳醫學影像」列在未完成,但程式碼裡這條處理路徑已經接好了,文件落後於實作。

關聯問診是另一個:可以把先前結束的會診場次連結進新的會診,連結進來的歷史病例與最終總結會以參考資料的形式附在提示詞裡,並標明僅供參考、要當前醫生獨立判斷。做多輪追蹤教學(先看初診,再看新資訊怎麼改變複診判斷)時,這比單場演示有更多變化。還有一套 HarmonyOS(鴻蒙)版本:repo 的 harmony 目錄用 ArkTS 與 ArkUI 重寫了一整套對應介面,2025 年 11 月底完成移植,這也是專案的最後一批提交。對多數人它存在感不強,但如果你在找能改編成行動裝置應用的參考實作,這份移植本身就是素材。

MIT 徽章掛著,LICENSE 檔案卻不存在

授權狀態是採用前該停下來看的一條。README 開頭掛著 MIT 徽章,結尾也寫著「採用 MIT 協議開源,詳見 LICENSE 文件」,徽章的連結就指向那個檔案。整個儲存庫從根目錄到子目錄都沒有 LICENSE 檔案,GitHub 的授權欄位也因此顯示為沒有偵測到授權。

這種狀態的法律效果是:沒有授權條款存在,預設就是版權保留,作者沒有把複製、改作、再散布的權利交出來。徽章與文字宣稱了 MIT,但授權要看檔案與著作權人的實際表示,宣稱與檔案對不上時,嚴謹的使用者(尤其是學校或公司)只能當它還沒開源。想用在正式教材或二次開發,合理的路徑是先到 repo 發 issue 請作者補上 LICENSE 檔,拿到明確授權再動手。

專案的活躍度也要放進同一個天秤。最後一次提交停在 2025 年 11 月 30 日,到此為止累積 99 個提交,程式版本號還停在 0.1.0,沒有任何正式發布或標籤;截至 2026 年 8 月中,它累積了約 350 顆星與 69 次 fork,唯一一個開著的 issue 是「PDF 匯出不清晰」,從 2025 年 12 月底開到現在沒有人回。提交紀錄裡多數提交來自一個名為 cto-new 的機器人帳號,作者本人的提交約五分之一,這與它個人專案、開發高度依賴自動化工具的性質一致。採用它,就要接受「現狀即最終版」:模型清單不會更新、匯出瑕疵不會有人修,出了問題只能自己 fork 自己改。自架本身倒是簡單,README 要求 Node.js 16 以上(實際驅動的 Vite 5 建議 18 以上),clone 下來 pnpm install 再 pnpm dev 就起來了,要自己部署也可以把建置產物丟到任何靜態主機。

誰適合拿它當教材,誰該離它遠一點

把它放回對的位置:它是把「多專家會診、互評、投票淘汰、收斂結論」這套人類決策流程可視化的開源教學面板,適合的場景是醫學與 AI 課程的流程演示、多模型協作的行為觀察、醫療自然語言研究的互動原型,以及團隊內部的方法論討論素材。在這些場景裡,它連「輸出含藥物劑量的總結」都能變成現成的教材案例:正好拿來討論為什麼格式完整的輸出不等於可信的輸出。

不適合的位置也一樣清楚。它不是第二意見來源:輸出是模型共識,沒有醫學驗證層,作者自己在介面上寫了身體不適儘早就醫。當病歷管理工具更危險:病例會送出瀏覽器到你選的模型端點,真實醫療資料不該進去。拿它演示前,把授權真空與八個月未更新的現狀一起告訴聽眾,比只展示流暢的會診動畫誠實得多。一個工具的教學價值,常常就在這些邊界講得清不清楚。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 881

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...