一個開發者 Allan Riordan Boll 於 9 月 25 日發布的 Python 範例將影像附件加入 Jev 風格的判斷請求。它把每個網路攝影機畫面連同簡短問題傳給視覺模型,再將模型下一個 token 的機率轉成是/否值、選項或分數。這是獨立的包裝器,不是 Jev 的視覺功能,也不是對 Jev 模型的測試。

對開發者而言,這項技術的適用範圍很重要。視覺模型可以不撰寫描述而回答受限問題,但回傳的選項機率取決於提示、可用的 token 替代項與模型。這篇文章提供可檢視的運作模式,並非準確度研究。

重大變化

  • 改變了什麼:一名開發者將 Jev 相關的小型決策格式套用到通用視覺模型處理影像。每個請求都附上影像,而單一字母的回答會把視覺問題轉成軟體可處理的值。
  • 為何重要:開發者可以用文字更改視覺判準並取得具型別的結果,無須為每個問題另外建立影像分類器。此範例涵蓋是否看見人或植物、場景位於室內或室外,以及亮度;它並未證明這些判斷能否可靠地套用到其他攝影機或場景。
  • 值得觀察之處:實際上要判斷的是,選定的模型與端點能否穩定回傳任務所需的替代 token 分數。在網路攝影機的結果觸發動作前,應使用具代表性的影像,一併測量畫面處理量與判斷品質。

影像判斷如何運作

TypeSafe AI 的 Jev 快速入門文件記載一種具型別的state以及一組具型別的questions問題:noul適用於是/否值,choice適用於具名選項,score適用於有序級別。Boll 的程式使用這些名稱,並新增一個包含影像路徑或 base64 資料 URL 的陣列,也就是attachments。這個欄位是他對請求物件所做的擴充;引用的 Jev 快速入門文件描述文字狀態,但未將此欄位列為 Jev API 輸入。

每個問題都會建立含有字母選項的提示,例如[A] true與[B] false。程式要求模型以最適合的字母作答,並讀取第一個輸出 token 的top_logprobs。接著將回傳的對數機率取指數,在列出的字母間正規化權重,再對應到問題類型。choice會回傳權重最高的選項及其分布。noul會回傳true的權重。score會回傳有序級別的加權平均。如果省略的選項 token 仍可能帶有重要權重,程式就會拒絕該回應。

每個問題都會附上影像。此範例會分別送出請求,而非透過一次模型呼叫取得所有答案。OpenAI 路徑使用 Responses API 搭配input_image、top_logprobs及message.output_text.logprobs;本機 llama.cpp 路徑則使用 Chat Completions,並搭配image_url內容項目與對數機率。OpenAI 的影像指南說明 base64 影像資料 URL;其Responses 參考文件說明對數機率輸出,以及每個 token 位置最多回傳 20 個替代項。llama.cpp 伺服器文件說明聊天介面中的影像 URL。這些來源支持此請求模式;我們並未在任一端點上執行該範例。

網路攝影機範例測量什麼

程式使用 OpenCV 擷取畫面、編碼為 JPEG,並提出四個問題:是否看見人或植物、場景位於室內或室外,以及亮度如何。預覽持續顯示時,背景工作程序會一次評估一個畫面。攝影機設定使用 Linux V4L2,因此發布的檔案若不修改,並非可攜式的通用網路攝影機設定。文章文字稱每個畫面有三個問題,但發布的程式碼包含四個;此處以程式碼為計數依據。

Boll 回報約每秒評估一個畫面使用 RTX 3090 上本機服務的 Gemma 4 12B QAT 模型;他也回報使用託管 GPT-6 Luna 時約有每秒 0.2 個畫面。他推測重複連線可能影響託管結果。文章未對硬體、網路、影像大小、快取、準確度或請求時間進行受控比較。這些數字描述的是作者的設定與程式碼結果,不代表模型的一般速度排名。OpenAI 表示 GPT-6 Luna 可接受影像輸入,其模型指南指出 Luna 支援此範例使用的none推理設定。

開發者修改此程式時,應先進行具體檢查:確認模型接受影像輸入並提供所需的第一個 token 替代項;檢查所有選項字母是否都出現;再以目標攝影機或資料集的標記影像評估回傳的判斷。正規化權重是相對於列出的字母 token,而非視覺判斷正確與否的實測機率。OpenAI 的舊版 logprobs cookbook說明 token 機率的概念,但已標示為封存,API 範例也可能過時。

此包裝器也釐清了具型別結果留給應用程式程式碼處理的部分。模型依照文字判準判斷提供的影像;應用程式選擇畫面、處理缺少的分數,並決定結果是否安全到足以採取行動。Boll 的範例會輸出表格,但未報告自動化動作或經測量的部署。

來源與延伸閱讀