有些話不該問它
用過之後記下不該問的幾類話:解釋為什麼、寫給人看的回覆、在開放集合裡起名、還得把推理過程留下。該問的仍是封閉的是非、類別、檔位和要不要升級。
聯合作者:folkbench.com (Folkbench 是面向 AI API、模型服務及相關站點的可覆核評測與選擇平台,依據已發布的服務資料、價格、可用性、延遲與證據窗口,幫助用戶比較並選擇使用路徑。)
這一組共十篇:
- JEV - 關節不需要大腦
- JEV - 不會聊天的 Jev,為什麼反而適合 Agent
- JEV - “不能幻覺”說到哪一層
- JEV - 是非、單選、檔位,夠不夠當一門語言
- JEV - 大廠做得出,為什麼未必會做
- JEV - 我跑的兩個 demo
- JEV - 人從環的中間退到邊緣
- JEV - 過了那條線,我已經分不出誰更聰明
- JEV - 有些話不該問它
- JEV - 大道至簡、套件,還有一個不說話的
我用過之後,最清楚的不是 Jev 會什麼,是哪幾類話我不該問。
我拿它當關節,不拿它當嘴。本能只能回答靠直覺答得了的問題。要展開的,或者得把推理擺出來給人看的,問 Jev 就是問錯對象。要對人把話說完,那也問錯了。它沒有字串。問了也裝不進去。
不該問的
你要是也從聊天模型轉過來,最容易問錯的就是後面這幾類。
解釋為什麼,我不該問。我從聊天那邊帶過來的習慣,張口就是讓它解釋一下。這習慣放在它身上不行。我讓它解釋的時候,等來的只有判斷。理由得寫成句子。寫不出來。返回裡沒有那個“因為”。別人要看因果怎麼來的,它給不了。真要一段原因,我另寫,或者另請會說話的模型,按已經定下的判斷去寫。
寫一段給人看的回覆,我問錯過。要發出去的是一段話。哪句先說,語氣放多重,都在字裡。它給的是選項和機率。這些對不上要發出去的那一段。機率再高,回來的也是我事先給的某一項,不是它現寫的一段話。我後來把順序換了。它只判斷這東西屬哪一類、這步要不要升級,句子交給聊天模型,或者我自己寫。
讓它在開放集合裡自己想一個名字,我做過。能用的叫法多得很,寫進題目的只是一小截。它只能在我給的項裡挑,項裡沒有的,它變不出來。候選要是我自己也說不上來,就還沒輪到它。我先用規則收一收,或者用檢索掏出一小撮,再把題封閉。後來起名我改成這樣:自己先定幾個候選,再讓它挑。清單外要一個全新的,我留在會說話的那一步。
還有一種,看著像該交給模型的重活。證據得來回翻,推理過程還得留下。兩邊材料頂著,既要它選邊,又要它把怎麼對上的留下來。它沒有這個來回。一次請求,就是憑我放進 state 的東西做個快判斷,過程不會變成能翻的文字。我說的來回,常常是結論依賴下一頁,而這頁還不在 state 裡。這種依賴我放在程式碼裡。先問一個封閉判斷,再由我去取證據,取回來換一份 state,重新問。那一串先看了哪頁、又排除了什麼,它寫不出。要留痕跡,我交給會說話的模型。
該問的
該問的,我現在只認幾種形狀。是不是這種,我直接問。類別得是我事先定好的那幾類,它只負責點中一個。嚴重程度我不讓它報細數,我劃好檔,讓它說落在哪一檔。還有升級,這步要不要交給人,也是封閉題,我一併問。形狀不在這裡面的,我不塞給它。
我另外有把粗尺子。懂這件事的人,看著眼前這份 state,靠直覺就能點一下的,才像它的題。點一下之前還得推演半天的,我直接交給會說話的模型。
state 我來準備。題我來封閉。進上下文的欄位我自己收,跟這題無關的,我不帶。選項和檔的邊界寫在題目裡,不寫在指望它發揮的地方。它不負責把開口的問題收圓,也不替我翻下一頁材料。材料一翻,state 就變了,那是下一次請求,還得我來備。
題沒封閉好,我踩過。分佈會攤平。幾個選項擠在一起,誰也不高出一截。我起先當成它笨。不是這回事。是我把一張嘴的活塞給了關節。選項彼此重疊,或者真正會出現的情況沒寫進清單,機率就只能鋪開。這時候改題,或者把這步交回會說話的模型。改題就是把重疊的項並掉,沒蓋住的情況給一個“都不是”。交回去,是讓會說話的模型先把情況說清楚,我再決定要不要重新封閉。不要盯著它調。開口的題還開著,分佈還是攤的。
Choice 和 Score
Choice 儘量不用滿 255。官方上限就是 255。再多,他們自己也得先打分再選擇,還會慢。255 在我這裡不是要去湊的數。我越把邊角情況都列進選項,題就越像一張沒封口的清單。我的題如果自然就有幾百個出口,我先想規則能不能把候選砍掉,檢索能不能砍。一小撮沒有固定個數。我掃一眼還能分清這些項差在哪,才算砍到位。掃一眼分不清,這會兒我發請求太早。砍到一小撮,我再拿去選。
Score 我當成有序的檔,不當成連續的精確小數。我自己出題,檔一般劃在 2 到 10。我要的是檔,不是 7.63 這種假精度。檔我寫成白話。這一檔和下一檔,處理上會不會不一樣,我先想清楚,會不一樣,我才拆開。兩檔最後觸發的是同一段程式碼,我就併成一檔。程式碼裡沒有哪條分支在等小數點後兩位。兩檔中間它有時會落一個數,我還是按檔讀,閾值寫在程式碼裡。檔的意思要是寫不清,我改檔的說明,不去摳那個小數。
看 demo 的時候
官方 Doom demo 和維基競速,我看了,沒有拿去替我的題做結論。我看 Doom 時容易被螢幕帶跑。螢幕上像在玩遊戲,吃進去的卻是結構化狀態,不是畫面。Doom 這邊是大約每秒 10 次查詢、一小時 7 美元那種量級。這個量級只說明實時關節成立,迴圈按這個密度轉得動,不說明它會打遊戲。畫面沒吃進去。下一步是外面的程式碼拿著狀態在問。
維基競速說明高基數選連結有用。比會推理的模型更會逛網頁,它說明不了。非推理對照下,它步數更少。那是對方沒把推理開啟,展示才比較好看。對方把推理開啟,這展示就不那麼好看。步數會變,誰更利索也會變。我不會把“步數少”帶回自己的任務,當成它更會找路。路要不要繼續走、走到哪停,還是外面的程式在定。我把這個當成不要用玩具判全部。展示順不順眼,這不替我決定後面哪句話該問。
我自己用的時候分得比較硬。能窮盡的,條件又穩定,我還是寫規則,不拿去問它。直覺一下答得了的,我才問它。問之前題得封閉,state 也得我準備得了。輪到要開口把內容說出來,我交給聊天模型。問錯了,慢和貴都是我的問題。
參考資料
- https://typesafe.ai/blog/introducing-system-one-models-and-jev
- https://evals.typesafe.ai/
- https://docs.typesafe.ai/primitives