是非、單選、檔位,夠不夠當一門語言
Noul、Choice、Score 是一門給程式碼用的語言。這篇用報銷單說明三種題怎麼拆開,以及什麼時候這門語言不夠用。
聯合作者:folkbench.com (Folkbench 是面向 AI API、模型服務及相關站點的可覆核評測與選擇平台,依據已發布的服務資料、價格、可用性、延遲與證據窗口,幫助用戶比較並選擇使用路徑。)
這一組共十篇:
- JEV - 關節不需要大腦
- JEV - 不會聊天的 Jev,為什麼反而適合 Agent
- JEV - “不能幻覺”說到哪一層
- JEV - 是非、單選、檔位,夠不夠當一門語言
- JEV - 大廠做得出,為什麼未必會做
- JEV - 我跑的兩個 demo
- JEV - 人從環的中間退到邊緣
- JEV - 過了那條線,我已經分不出誰更聰明
- JEV - 有些話不該問它
- JEV - 大道至簡、套件,還有一個不說話的
這門語言夠不夠,就看你要它說什麼。封閉的三種題,換來速度,也換來可組合。代價是需要展開的話,它說不了。這是一門給程式碼用的語言。不是給人讀的。
文件和評測站的分法一樣,都是 Noul、Choice、Score 這三種。頁面上沒有第四種。
文件裡的三種
Noul 只問是或否。返回機率。文件裡這個數從 0 到 1。這個機率靠近 1,就是很有把握的肯定,靠近 0,就是很有把握的否定。它要是停在 0.5 附近,只說明兩邊一樣可能,不是“程度中等”。文件裡寫過這個坑:拿它去問一個人 Python 強不強,0.5 不是水平中等。你真要量水平,就得換 Score,把每一檔寫成什麼樣。Noul 也不另給置信度。機率本身就是訊號。
Choice 從定好的集合裡選一個。回來的是選中項,另外帶上整份分佈和一個置信度。置信度看的是分佈尖不尖。機率要是攤開,置信度就低,程式碼就知道這一題不穩。Jev 這道題的基數上限是 255。基數再高,Jev 就走兩段式。兩段式是先獨立打分,再做一次顯式選擇。有時會慢一下。慢,是因為多了一步,不是同一道窄題忽然變貴。
Score 是尺度上的檔位。使用上就是 2 到 10 檔的有序刻度。文件寫的是至少兩檔,介面最多接受十檔。檔要寫成能對上的情形。只寫“偏高”或者“還行”,模型沒有東西可對。分數可以落在兩檔中間。這個數是各檔位置乘上機率之後加總。兩檔之間的小數很正常,不是算壞了。返回分數,同時給出檔位上的分佈和置信度。同一個分數,可能是全押在中間檔,也可能是兩頭對半。只看分數,你會看成同一回事。分佈和置信度要一起讀。
三種答案都出不了你事先給的格子。同一份材料上的題彼此獨立。加一道或者拿掉一道,其他題的結果都不變。判斷要是靠好幾件事合起來,你就拆開問,權重留在程式碼裡。以後你要調政策,改的是這些數,不是重寫一整段 prompt。
報銷單被拆開的樣子
官方評測頁拿報銷單舉過一個玩具。左邊是人寫的一段話,就是團隊會記下來的那種政策。每張單都得帶收據。收據讀不了,就讓員工再交一張。然後看這筆是餐、差旅還是裝置。餐費超過 75 美元,而且描述對不上收據,要主管籤。其餘的單子按透過處理。
右邊是同一段話拆成的流程。每一句政策,一道題,或者一條程式碼規則。收據讀不讀得了是一道是非。讀不了的話,程式碼就去要一張新的,這一步不再問模型。類別那邊用單選,選項就是餐、差旅或者裝置。金額過不過 75 美元,由程式碼自己比。只有描述對不上收據的那半句,才需要再問模型一次。它和金額合在一起,決定主管籤不籤。用不著主管籤的那些,程式碼就按透過處理。模型不在這兒寫批語。
評測頁上的方向就一句:結構總是比一個大 prompt 好。四條示例流程平均下來,每個模型走 workflow,準確率比整段政策更高,花費和耗時則更低。prompt 那一頭,是把整段政策交出去,讓模型在一條回答裡把邏輯走完。workflow 這一頭,能寫成規則的交給程式碼,只把窄的判斷留成題。
最穩的真實流程通常不是一道大題。它是很多互相獨立的窄問題。行為取決於機率,而不只是一個離散標籤。類別看上去已經定了,別的選項卻還佔著一塊機率。程式碼按你寫的閾值再走一條就行,不必把分佈扔掉。流程走到外面,仍是一個分支。中間那一層是領域工程。哪道題這次用不上,哪個數算過線,都得按這個業務寫下來,而且每次都按同一套跑。窄問題的答案進了程式碼,權重和閾值才在這一層定下來。
不生成字串之後
Jev 放棄字串生成,換的是並行取樣。一次請求裡的題會一起算。所有輸出一次出來。不逐 token。聊天模型要一個 token 接一個 token 往下長,後一個看著前一個。這邊沒有這個逐字的步驟。普通的窄題再加幾道,時間幾乎不跟著漲。多出來的開銷主要是問題本身那點 token。
官方定價跟聊天介面不是一回事。輸入是 $0.042 / 百萬 token。輸出是 FREE。沒有一長串按 token 生成的字,輸出就不計費。延遲落在 70–500 毫秒。這個區間是給呼叫鏈用的,不是給對話方塊裡的等待用的。
返回值直接給程式碼用。Noul 的機率可以直接進 if。路由用 Choice 的標籤,打分閾值用 Score 的位置。不用先解析。聊天模型要是交回一篇 Markdown,你得先把字拆開,多出來的一句還可能把格式帶歪,後面就接不上。三種題不交回那段文字,因為 Jev 不生成它。
解釋為什麼拒掉這張單,三種題裝不下,道歉和談判也一樣。寫一段給人看的理由,返回值裡也沒有那段話。那些交給會說話的模型去寫。Jev 停在判斷上。
不夠用的時候也很具體。選項要是開放世界裡的名字,公司名和商品名都會不斷冒出來,集合事先定不住。255 只是基數上限,不是無限名單。理由必須引用原文句子的時候,這邊沒有那句話可交。使用者在等一句人話的時候,介面要的是能讀的字。這時候硬用 Jev,是把關節當成了嘴。
政策能收成是非、單選和檔位的時候,後頭就是分支,判斷再拼回同一段程式碼。你要的如果是速度,還有這種可組合,它夠用。需要展開的話,它說不了。速度和可組合,就是用這件事換來的。
參考資料
- https://typesafe.ai/blog/introducing-system-one-models-and-jev
- https://evals.typesafe.ai/
- https://docs.typesafe.ai/primitives
系列
- 上一篇:JEV - “不能幻覺”說到哪一層
- 下一篇:JEV - 大廠做得出,為什麼未必會做