AI-LECTURER 速報課|2026-10-03|約 28 分鐘

AI2 開源 AstaBrief:為什麼把「寫引用報告」交給 8B 小模型,反而更快、更能驗證?

📍 真實場景
林慧君,大學附設醫院的臨床研究助理,正在替主治醫師準備一份「藥物 A 對高齡族群血壓影響」的文獻回顧

她把研究問題和幾十段文獻摘錄丟給一個大型雲端模型,請它寫一份附引用的報告,每次要等將近三分鐘。報告還會被同事反覆打開,當成之後寫論文的底稿

😖 卡住的地方:報告裡有句「藥物 A 能降低所有人的血壓 [1]」,但 [1] 那篇其實只收了 120 位成人。模型悄悄把結論講大了,她得逐句翻原文核對。另外,這些研究問題牽涉尚未發表的內容,院方不允許上傳到外部服務
💡 這課拆解 AI2 的 AstaBrief:它如何用小模型、一次寫完整份報告來換取速度,又為何把「引用要守住證據範圍」當成訓練目標。你還會動手寫一支引用檢查小工具,替任何模型的報告做第一道驗收

🧭 這到底是什麼(白話版)

AstaBrief 8B 是 AI2(艾倫人工智慧研究所)在 Hugging Face 部落格上公開的模型。它做的事很單純:你給它一個研究問題,再給它一批已經檢索先用搜尋找出與問題相關的文獻片段,再交給模型閱讀好的文獻摘錄,它就寫出一份帶引用在句子後面標明這句話出自哪一篇文獻,方便讀者回頭查證的報告。名字裡的 8B 指它有約 80 億個參數模型內部可調整的數字,數量越多通常越強,但也越慢越貴,在大型語言模型裡算小的。

它是 AI2 科學研究平台 Asta 裡「Generate a report」功能的新選項,叫做 Fast mode,旁邊原本就有由 Claude 驅動的 Thinking mode。AI2 觀察到科學家的用法很特別:他們不是輸入幾個關鍵字,而是帶著大量背景和限制條件來問,例如「比較某一類方法,但要限定特定族群或情境」。他們也會一再回來翻舊報告,把它當成工作底稿,而不是一次性的答案。

這則新聞的重點有三個:第一,AI2 想驗證「專門訓練的小型開放模型,能不能追上專有大模型的報告品質」,同時降低生成時間與服務成本。第二,他們把模型的開放權重把訓練好的模型參數檔公開,任何人都能下載到自己的電腦或伺服器上執行和訓練資料一起開源,別人可以重現與改良。第三,他們還附上一個範例流程,讓研究者用自己的 PDF 在本機產生報告。

🎯 為什麼值得你花時間

速度差是實打實的在完整的 Asta 流程裡,Fast mode 平均每份報告 51.1 秒,Thinking mode 是 178.5 秒,約快 3.5 倍。對一天要產十幾份報告的研究者來說,這是從「去泡杯咖啡」變成「等一下就好」。
資料不必離開自己的機構開放權重讓機構能在自己的設備上執行 AstaBrief。當研究問題洩漏未發表的工作或敏感內容時,這是必要條件,不是加分項。
把「科學可驗證性」當成設計需求AI2 強調答案必須扎根於證據,並保留證據真正支持的範圍,而不是悄悄放大一項研究的結論。這代表訓練與資料篩選都圍繞引用品質設計,而不只是追求文筆流暢。

⚙️ 它是怎麼運作的

1
收集真實的研究問題AI2 使用數萬筆真實的研究查詢當訓練素材。真實問題帶有大量限制條件,比編出來的題目更貼近科學家的實際需求。
▼
2
以引用為核心做篩選不是所有範例都留下。他們做了以引用為重點的過濾,優先保留引用與證據對得上的報告,讓模型學到好的樣子。
▼
3
加入偏好資料除了範例,還有偏好資料同一題的多份答案,標出哪一份比較好,讓模型學會往好的那一邊靠,用來把模型推向更忠於證據的寫法。
▼
4
重新設計生成流程:一次寫完舊作法是逐節生成,每一節都要重新呼叫模型。新流程改成讀完問題和文獻摘錄後,單次生成一次呼叫就輸出整份報告,而不是分成很多次小呼叫再拼起來整份報告,省下反覆呼叫的時間。
▼
5
放進產品、同時開源模型上線成為 Fast mode,並與訓練資料一起公開,讓外界能研究、重現、延伸這套做法。
Asta 報告生成的兩種模式(數字取自 AI2 文章)
項目Fast mode(AstaBrief 8B)Thinking mode(Claude 驅動)
完整流程平均耗時51.1 秒178.5 秒
模型性質開源、可下載自己跑專有模型
適合情境要快、要私有部署要最深度的推理
生成方式一次寫完整份報告文章未詳述

🔍 程式碼漫遊(點有 ● 的行看白話講解)

AstaBrief 的賣點是「引用要可驗證」。這支小程式模擬驗收的第一步:逐句檢查報告有沒有引用、引用編號是否真的存在於文獻摘錄中,並把對應原文印出來,方便人工比對有沒有講過頭。

●import re
💬 載入正規表示式工具,用來從句子裡抓出 [1]、[2] 這種引用標記。
●EXCERPTS = {1: '...', 2: '...'}
💬 模擬「檢索回來的文獻摘錄」,編號對應報告中的引用,這就是模型唯一該依據的證據。
●REPORT = ['...', '...']
💬 模擬模型產出的報告,每個元素是一句話。範例刻意埋了一句講過頭的、一句沒引用的、一句引用不存在的。
●ids = [int(x) for x in re.findall(r'\[(\d+)\]', line)]
💬 重點行:把一句話裡所有 [數字] 抓出來。沒抓到就代表這句沒有引用。
●if i in EXCERPTS:
💬 重點行:引用編號有對應的摘錄才算成立;不存在就是「幻覺引用」,模型憑空編了一個來源。
●print(... EXCERPTS[i])
💬 重點行:程式只能確認引用「存在」,無法判斷結論有沒有放大,所以把原文並排印出,交給人做最後比對。

🛠️ 動手做:動手寫一支「引用驗收器」:抓出沒引用、假引用,並對照原文找出被講大的結論

這是一個真實小專案:下載(或複製)檔案,照步驟在你電腦上跑起來。

📄 check_citations.py ⬇ 下載
import re

# 為什麼用字典:編號對應原文,才能在報告引用 [n] 時回頭查證據
EXCERPTS = {
    1: '在 120 位成人的試驗中,藥物 A 使收縮壓平均下降 8 mmHg。',
    2: '此研究只納入 65 歲以上的族群。',
}

# 這份假報告刻意埋了三種問題,用來測試驗收器
REPORT = [
    '藥物 A 能降低所有人的血壓 [1]。',
    '研究只針對老年人進行 [2]。',
    '這是目前最有效的療法。',
    '藥物 B 也有效 [3]。',
]

problems = 0
for n, line in enumerate(REPORT, 1):
    ids = [int(x) for x in re.findall(r'\[(\d+)\]', line)]
    if not ids:
        problems += 1
        print(f'第{n}句 無引用:{line}')
    for i in ids:
        if i in EXCERPTS:
            print(f'第{n}句 引用[{i}]存在,請人工比對範圍:')
            print(f'    報告說:{line}')
            print(f'    原文是:{EXCERPTS[i]}')
        else:
            problems += 1
            print(f'第{n}句 引用[{i}]不存在(幻覺引用):{line}')

print(f'\n自動偵測到 {problems} 個問題;其餘引用仍需人工確認結論範圍。')
  1. 開啟 PowerShell,切換到存放檔案的資料夾,例如:cd D:\lesson_demo
  2. 把上面的 check_citations.py 存成 UTF-8 編碼(用 VS Code 或記事本另存新檔時選 UTF-8)。
  3. 讓主控台正確顯示繁體中文:chcp 65001
  4. 設定 Python 使用 UTF-8:$env:PYTHONUTF8 = '1'
  5. 執行:py check_citations.py(若你的電腦用 python 指令,改成 python check_citations.py)
  6. 觀察輸出:第 3 句會被標為「無引用」,第 4 句會被標為「引用不存在」,第 1 句雖然引用存在,但對照原文你會發現「所有人」遠大於「120 位成人」。
  7. 進階挑戰:把 REPORT 換成你自己用任何 AI 產生的帶引用段落,EXCERPTS 換成真正的原文片段,練習當驗收者。

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼是「小模型 + 專門訓練」,而不是繼續用最強的通用大模型?
資深工程師會先問:這個任務的難度在哪裡?寫引用報告的輸入已經被檢索步驟限定成一批摘錄,任務更接近「忠實整理」而非「開放式推理」。任務範圍窄,專門訓練的小模型就有機會追上大模型的品質,同時換到更低的延遲與服務成本。代價是它失去通用能力與最深的推理,所以 Asta 沒有拿掉大模型,而是把 Fast 與 Thinking 做成兩個模式讓使用者依情境選。這是典型的「用路由取代單一最優」。
🔭 「一次寫完整份報告」省下了什麼,又放棄了什麼?
逐節生成每一節都要重新呼叫模型、重新帶入上下文,總時間隨節數累加。一次寫完只需一次呼叫,所以耗時大降。但代價是模型必須在單次輸出裡同時管理結構、引用與篇幅,出錯時也無法逐節重試。這也解釋了為什麼 AI2 要靠更精細的訓練資料與偏好資料,把『整份寫對』這件事教給模型,而不是只靠流程拆解來保證品質。
🔭 為什麼 AI2 特別強調「不要悄悄放大研究結論」?
在科學場景,一句講過頭的話比一句寫得不通順的話更危險,因為它看起來像可信的結論,還帶著引用的外衣。引用存在不等於引用支持。工程上這意味著驗收必須分層:機器能檢查的是引用是否存在、格式是否正確;機器很難完全替代的是『結論範圍是否與證據一致』,這一層需要偏好資料訓練、也需要人在高風險處把關。你剛寫的小工具正是這個分層思維的縮影。
🔭 開源模型加訓練資料,對一個平台來說划算嗎?
短期看,公開權重放棄了一部分獨占優勢;長期看,它換到可重現性(科學界最在意的信任基礎)、社群改良,以及讓敏感資料能在機構內部處理的能力。這也呼應 AI2 在文中說的,AstaBrief 是『打造能適應科學需求的開放語言模型』這個更大目標的測試案例。注意文章也提醒,多數訓練與評估是在 2025 年完成的,所以拿它與今日的模型比較時要考慮時間差。

📝 隨堂考(點選答案,立即回饋)

Q1. 在完整的 Asta 流程中,Fast mode(AstaBrief)與 Thinking mode 的平均生成時間大約差多少?
✅ 文章給的數字是 51.1 秒對 178.5 秒,約 3.5 倍。另外文章也提到相較其追蹤的專有模型,生成時間降幅接近一個數量級,這是不同比較基準,不要混為一談。
Q2. AstaBrief 重新設計的報告生成流程,關鍵改變是什麼?
✅ AI2 的做法是一次寫完整份報告,減少重複呼叫模型的開銷,這是速度提升的重要原因之一。
Q3. 下列哪一項是「引用存在,但仍然有問題」的例子?
✅ 這就是文章所說的「悄悄放大研究結論」。引用存在不代表引用支持這個範圍,所以需要對照原文,不能只靠程式檢查編號。
Q4. 開放權重(open weights)對研究機構的一個具體好處是?
✅ 文章明確指出,當研究問題會洩漏敏感或未發表的工作時,在自己的設備上執行是必要的。

🃏 翻牌記憶卡(先想答案,再點開對答)

AstaBrief 8B 的輸入與輸出是什麼?點我翻面
輸入:一個研究問題+檢索到的文獻摘錄;輸出:一份附引用的報告。
Asta 裡 Fast mode 與 Thinking mode 的差別?點我翻面
Fast mode 由開源的 AstaBrief 驅動,平均約 51.1 秒;Thinking mode 由 Claude 驅動,平均約 178.5 秒。
AstaBrief 的訓練用了哪些素材與做法?點我翻面
數萬筆真實研究查詢、以引用為重點的過濾、偏好資料,以及一次寫完整份報告的新流程。
「引用存在」和「引用支持」有何不同?點我翻面
存在只代表編號對得上;支持則要求結論範圍不超過原文證據。前者可自動檢查,後者常需人工或更強的評估。
AI2 除了模型權重還釋出什麼?點我翻面
訓練資料,以及一個讓研究者用自己的 PDF 在本機產生報告的範例流程。

✅ 離開前自測(全勾=這課真的學會了)

0%