Potato 2.6:定性資料分析遇上智慧體評估
Potato 2.6 釋出:用於定性編碼的 QDA 模式、LLM-as-judge 校準與對齊工作流、可生成 SFT 與 DPO 訓練資料的軌跡編輯、啟動速度提升 3 倍,以及重新授權為 GPL-3.0-or-later。
Potato 2.6 釋出了。這是一個有兩個重心的版本。一方面,它把 Potato 帶入了定性資料分析的領域——訪談記錄、編碼本和備忘錄這個一直由專有桌面工具主導的世界。另一方面,它讓智慧體評估工具集更進一步,開始生成訓練資料,而不只是給出分數。在兩者之下,它的速度有了實實在在的提升,授權方式也發生了變化。
如果你一直在關注,過去幾週的文章已經逐一預告了這些功能。這個版本就是把它們正式交付的版本。
Potato 2.6
先說一句:Potato 現在採用 GPL-3.0
Potato 已重新授權為 GPL-3.0-or-later,取代原先的 PolyForm Shield。這類變化很容易被一筆帶過,但不應如此,因為它改變了你被允許用這個項目去做的事情。
在 GPL-3.0-or-later 下,你可以使用、修改和再分發 Potato,包括用於商業用途,只要衍生作品仍保持在 GPL 之下。原先的 PolyForm Shield 許可證帶有競業限制條款,讓一些採用者(以及他們的法務團隊)有所顧慮。GPL 是這些團隊早已熟悉的許可證。如果某個授權問題一直拖住了你的實驗室或公司,那麼這個問題現在有了一個大家都熟悉的答案。詳情請見關於頁面。
QDA 模式
對定性研究者而言,最重磅的是 QDA 模式:一個開關,就能把 Potato 變成一個協作式的定性編碼工作區。
qda_mode:
enabled: true # codebook + memos + cases + search
codebook_invivo_key: i # mint a code from a text selection啟用它,就組合出了一份動態編碼本、in-vivo 編碼、分析者備忘錄、案例以及全文搜尋,預設配置專為單個分析者對整個語料庫進行編碼而調優。你可以在閱讀過程中擴充和重組編碼本,用一個按鍵直接從高亮段落建立一個編碼,為任何摘錄附加私有或共享的備忘錄,按參與者把摘錄歸入案例,並在整個語料庫上執行 FTS5 搜尋。它是一個免費、開源、基於 Web 的替代品,可替代 NVivo、ATLAS.ti、MAXQDA 和 Dedoose,並與你其餘的標註工作共處於同一個工具中。
我們在把定性編碼帶入 Potato中介紹了它的設計。完整參考:QDA 模式文件。
LLM-as-judge:校準、對齊與分診
用 LLM 來評判模型輸出如今已是常規做法。該在多大程度上信任它,才是 2.6 所要解決的問題,它用三個協同工作的功能來回應。
**Judge Calibration(評判者校準)**用一個或多個 LLM 評判者自動標註你的資料,對每條資料取樣 k 次以得到經驗置信度,然後進行一輪盲審人工標註(標註者從不看到模型標籤),並報告準確率、Cohen's 和 Fleiss' kappa、Krippendorff's alpha 以及預期校準誤差。它用你可以拿來辯護的數字回答了“我該不該信任這個評判者?”。我們在你能信任你的 LLM 評判者嗎?中作了介紹。
**Judge Alignment(評判者對齊)**針對你的人工金標籤來調校單個評判者,在你完善評分細則的過程中追蹤 Cohen's kappa,並可在標註時於人工標籤旁內聯顯示一個可選的判定結果。
**The Triage Queue(分診佇列)**依據每條資料的某個訊號(智慧體的一次錯誤、生產環境中的一次點踩、一個偏低的分數)對標註佇列排序,讓審閱者優先看到最可疑的軌跡,而不是按到達順序逐一處理。
triage:
enabled: true
signal_field: quality_score
invert_signal: true
assignment_strategy: priority對齊與分診組合成了一個主動評估迴圈,我們在閉合迴圈中走過了這個流程。參考文件:Judge Calibration、評判員 ↔ 人工標註的一致性、Triage Queue。
用於 SFT 和 DPO 的軌跡編輯
新的 trajectory_edit 模式讓標註者可以重寫一條智慧體軌跡中的各個步驟,並配有即時的詞級 diff,用於修正一個錯誤的推理步驟、修復一次工具呼叫,或強化最終答案。隨後,trajectory_correction 匯出器會把每一對原始/修正後的結果轉化為訓練資料:在 trajectory_sft.jsonl 中生成監督微調目標,在 trajectory_dpo.jsonl 中生成 DPO 偏好對。未經編輯的軌跡會被跳過,因為在一條未改動的軌跡上訓練什麼也教不會。
這讓 Potato 成為一個訓練資料生產工具,而不只是評估工具。完整演練見從評估到訓練資料;參考見軌跡編輯文件。
eval_trace 顯示
快速讀懂智慧體軌跡本身就是一個難題。新的 eval_trace 顯示把單條軌跡拆分成三個同步的窗格(推理、函式呼叫和最終答案),讓評估者一眼就能看到智慧體想了什麼、做了什麼、產出了什麼。它是為持續評估而構建的——軌跡通過 webhook、Langfuse 輪詢器或一個被監視的目錄陸續到達,並需要在落地時被評判。參見 eval_trace 文件。
工作流與部署
一批運維相關的功能為這個版本收尾:
- 異構覆蓋。 為不同條目分配不同數量的標註者:大多數條目分配一人,分層抽樣出的樣本分配三人,並帶有自適應的分歧加成與自動的仲裁路由。詳見超越完全重疊;參考見異構覆蓋文件。
- 回收被棄置的任務。 找回被 Prolific 或被 QC 攔截的工作者留下的條目,支援可配置的保留期與冪等回收。參見任務分配。
- 自定義批次分配。 把預定義的條目批次分配給特定的標註者,專為多輪重複的研究設計而打造。
- 反向代理 URL 字首。 在反向代理後以子路徑提供 Potato 服務。參見反向代理文件。
更快,以及一次模式重新命名
有兩項變化影響每一個項目。
啟動速度大約提升 3 倍。 機器學習相關的依賴棧不再在啟動時被急切載入,而是改為在首次使用時才載入。匯入時間從約 6.5 秒降到 2 秒,一個 50,000 條目的啟動從約 10 秒降到 5.7 秒,常駐記憶體從約 750MB 降到 365MB。容器重啟更快了,水平擴充套件的記憶體佔用也大約減半。
annotation_type: highlight 現在改為 span。 已經內建了遷移機制,現有的 span 配置不受影響。請通過重新命名該類型來更新舊配置。“span”是整個 NLP 領域的標準術語,這次重新命名讓該標註類型與之保持一致。
補課:2.5 與 2.4.5
在 2.4 與 2.6 之間有幾個版本釋出時沒有在這裡寫過文章。它們的亮點值得點出,尤其是其中的定性編碼工作是 QDA 模式的基礎:
2.5.0 是定性編碼的浪潮。它在 Krippendorff's alpha 之外新增了 Cohen's kappa 和 Fleiss' kappa、codebook 和 quotation_report 匯出器,以及用於編碼共現的管理員分析和一個按屬性分列的編碼交叉表。這些正是 QDA 模式所依託的可靠性與匯出元件。
2.4.5 帶來了一個經過驗證的細化框架,用於在單人模式下改進標註指南,一個配置驗證器 CLI(python -m potato.validate_cli),以及一個針對路徑遍歷繞過的安全修復(GHSA-q9m2-fhv9-3jcf)。如果你還在較舊的 2.4.x 上,升級即可獲得該修復。
完整的歷史記錄在更新內容頁面。
獲取它
pip install --upgrade potato-annotation然後讓 Potato 指向其中一個內建示例(examples/advanced/qda-mode-example/、examples/ai-assisted/judge-calibration/、examples/agent-traces/trajectory-correction/),就能看到這些新介面執行起來。這裡的每一個版本,最初都源自某位使用者提出的一個問題;如果 2.6 讓你產生了一個問題,GitHub 倉庫就是提問的地方。