Agent 以迴圈方式運作:由 LLM 決定下一步行動,工具執行該操作,模型評估結果,然後繼續這個迴圈,直到任務完成。
起初,將 Agent 和 LLM 整合到依賴結構化資料與可預測介面的軟體應用程式中相當困難。隨後出現了兩個基礎元件,讓這過程變得容易許多:
- Tool calling 讓模型能夠發出結構化請求並接收結構化結果。
- Structured outputs 讓模型能夠回傳結構化結果。
但即使有了這些機制,Agent 迴圈仍然緩慢且昂貴:每個決策都需要再次呼叫模型。
介紹 Jev。Jev 是由 TypeSafe AI 發布的新模型。該公司表示,在分類任務上,其推論速度比同等 LLM 快高達 200 倍,成本低 400 倍。
https://x.com/CompleteSkeptic/status/2099925682726002904
本文將涵蓋 Jev 的運作原理、它在 Agent 迴圈中的定位,以及如何搭配 LangChain 使用它。
關於 Jev 的一切
Jev 實際上並非傳統 LLM,它不會生成文字。這是 TypeSafe AI 團隊所稱的 System One 模型:
📖 System One 模型是一類專為做出快速、結構化決策而設計的 AI 模型,軟體可直接使用這些決策。System One 模型會評估一個
state 並回傳帶有型別的解答與機率。
它採用 用於校準決策的強化學習(RLCD)進行訓練。你的程式碼利用這些結果來引導 Agent 的後續動作,而無需為每個決策進行完整的聊天 LLM 呼叫。
要調用 Jev 模型,你需要傳送一個 state(上下文)以及關於該 state 的 questions。以下是他們文件中支援工單範例的單問題版本:
1{2 "model": "jev-latest",3 "state": "Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP.",4 "questions": {5 "is_urgent": {6 "type": "noul",7 "instructions": "The message conveys urgency or time-sensitivity"8 }9 }10}
文件中的範例給出了這個緊急程度答案,這裡省略了回應的其他部分:
1{2 "is_urgent": {3 "type": "noul",4 "noul": 0.9995 }6}
這表示訊息具有緊急性的機率為 99.9%,你的應用程式可以利用此資訊來優先處理該工單。
支援的 questions 有三種類型:

- Choice: 從一組選項中選擇。回傳每個選項的機率以及整體信心分數。
- Score: 針對有序等級(如低、中、高)對輸入進行評分。回傳連續分數、底層分布以及信心值。
- Noul: 回答是非題。回傳陳述為真的機率。
這裡的一個關鍵功能是,你可以在單一請求中針對同一個 state 詢問多個問題。
💡 System One 模型會平行評估請求中的每個問題。增加問題幾乎不會改變回應時間,且僅需額外問題的 token 成本,這非常便宜。
如需針對支援工單詢問多個問題的範例,請參閱 TypeSafe Quickstart。
總而言之,不同於傳統 LLM,Jev 不受限於文字生成或序列決策!
如何搭配 LangChain 使用 Jev
LangChain 的供應商無關模型非常適合支持 Jev,並與其他數千種整合及模型供應商並存。
LangChain 整合透過 TypeSafeClassifier 暴露 Jev。你將 state 和 questions 傳遞給 .invoke(),即可獲得分類結果而非聊天回應。
安裝 langchain-typesafe 並設定你的 TYPESAFE_API_KEY,然後進行呼叫:
1from langchain_typesafe import Noul, TypeSafeClassifier23classifier = TypeSafeClassifier()45response = classifier.invoke(6 state=(7 "The deploy failed twice and customers are seeing 500s. "8 "Can someone look now?"9 ),10 questions={11 "urgent": Noul(12 instructions="Does this need attention right now?"13 ),14 },15)1617urgency = response.nouls["urgent"].noul
state 可以是文字、結構化資料或 LangChain 訊息。這使得從節點或中介軟體鉤子中使用 Agent 已有的上下文來調用 Jev 變得簡單明瞭。
你可以將其內建到自訂中介軟體或工具中!
應用場景
Jev 不是 LLM 的直接替代品。它不生成文字,但可以處理我們今天常使用 LLM 進行的分類任務,且沒有相同的延遲和成本。這使其成為驅動你 Agent 的模型的有力補充:使用 LLM 進行開放式推理和生成,而在過程中使用 Jev 進行快速的結構化決策。
Model routing
簡單的查詢不需要與艱難的除錯任務使用相同的模型。Model-routing middleware 讓 Jev 評估請求並根據你定義的標準選擇模型,從而對直觀任務使用快速且廉價的模型,對複雜任務使用更強大的模型。
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 ModelChoice,4 ModelRouterMiddleware,5)67router = ModelRouterMiddleware(8 choices={9 "fast": ModelChoice(10 model="openai:luna",11 criteria="Direct lookups, extraction, and localized changes.",12 ),13 "powerful": ModelChoice(14 model="openai:sol",15 criteria="Architecture and high-stakes decisions.",16 ),17 },18 instructions="Choose the least costly model that can complete the task.",19)2021agent = create_agent("openai:gpt-5.6-luna", middleware=[router])
路由器從最新的用戶訊息中選擇一個模型,並在整個執行過程中使用它。機率和信心值也可在 agent state 中取得。
Auto Mode
Agent 本質上仍不可完全信任。Agent 可能會收到不良指令(無論是自然發生還是來自動機足夠強的攻擊者),這可能說服它執行我們不希望它採取的行動。
像 claude、codex、cursor 這樣的編碼框架已經推出某種方式,在危險行動被執行之前對其進行分類,這逐漸幫助建立了對 Agent 的信任。直到現在,這個分類步驟一直被封鎖在框架的閉源部分中。
既然現在存在一個廉價且高效的分類器模型,我們可以採用相同的模式並將其應用於所有 Agent!
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 AutoModeMiddleware,4)56guardrail = AutoModeMiddleware(tools=["bash"])78agent = create_agent("openai:gpt-5.6-luna", middleware=[guardrail])
AutoModeMiddleware 使用 Jev 檢查工具呼叫中可能涉及的風險決策,並在工具執行前阻擋呼叫。
開始使用!
我們對 Jev 及其帶來的可能性感到非常興奮。我們已經看到幾個很酷的项目:Browserbase 的 Kyle Jeong 正在以幾分之幾美分的成本驅動瀏覽器使用 Agent,Jarrod Watts 建立了一個即時交易 Agent,而 Ryan Vogel 則在大規模進行郵件分流。
如今每週都有新模型發布,但這一個獲得了相當巨大的反響。我們很高興看到你使用 LangChain 和 Jev 建構什麼。
請在 forum 告訴我們你的想法,在 X 上標記我們並分享你正在建構的內容,或參與 LangChain issues!
致謝
感謝 @huntlovell、@hwchase、@ccurme、@veryboldbagel 以及 Nathan Drenzer 提供的深思熟慮的審查與貢獻。





