top of page

langchain-core==1.7.5 為模型拒絕提供標準格式

1 日前
讀畢需時 12 分鐘

LangChain 於 11 月 4 日發布 langchain-core==1.7.5,新增標準化模型拒絕回應功能,並修正已取消工具及跨語言訊息載入的問題。核心改動針對一種容易造成誤解的結果:請求可在供應商層面成功完成,卻沒有交付任何應用程式可用的內容。

這項區別對建立代理的團隊相當重要;這些應用程式讓模型選擇動作並呼叫外部功能。請求完成不一定代表工作完成。拒絕回應、操作中斷及對話還原失敗,各自需要不同的處理方式。

此版本將 OpenAI、Anthropic 與 Google 的回應差異帶入焦點,但未將其行為變得完全一致。其實際意義在於,更清楚劃分「收到回應」與「理解發生甚麼事」之間的界線。應用程式團隊仍須決定這類結果對使用者意味著甚麼。

langchain-core==1.7.5 除了版本號以外帶來甚麼改變

此版本改善應用程式辨識不成功結果的方式,而非承諾提供更好的模型答案。

已發布的版本變更列出自 1.7.4 版以來四項實質更新,涵蓋拒絕回應標準化、Gemini 安全封鎖轉譯、工具取消,以及載入由 LangChain.js 序列化的訊息物件。其餘列出的項目則處理版本發布本身。

這些改動處理不同的軟件邊界。拒絕回應處理涉及模型回應與應用程式邏輯之間的邊界。取消涉及執行與監控之間的邊界。訊息載入則涉及 JavaScript 與 Python 之間的邊界。

它們的共同主題,是在操作未產生預期結果時保留其意義。回應應傳達模型已拒絕。已取消的操作不應繼續顯示為進行中。已儲存的訊息在另一個執行環境讀取時,應仍可被辨識。

因此,這是一項具針對性的維護版本,加入重要的面向應用程式功能。發布說明並未表明生成更快、推理更佳或答案準確度更高。這些主張需要獨立證據,不應成為升級的理由。

對開發者而言,有用的起點問題是:應用程式是否依賴任何受影響的邊界。純文字原型可能不會立即感受到明顯差異;會解析回應、串流結果及還原已儲存對話的代理,則有更多行為需要檢查。

發布時間亦有具體解釋。拒絕回應標準化改動於 11 月 3 日合併,其後 Gemini 轉譯改動於 11 月 4 日合併。此版本將這些相關改動一併封裝。這個順序解釋了範圍,毋須推測更廣泛的公司策略。

補丁版本號可能令這項工作看似只是小型營運改動。然而,錯誤分類影響的決定遠不止例外處理程式,即執行回報問題時負責回應的程式碼。它可影響使用者訊息、升級處理、監控,以及是否開始另一項請求。

因此,適當的解讀應是具體的。LangChain 正讓數種此前含糊的結果變得更明確。此版本不會決定每個應用程式應如何回應,其改動也不應被誤認為完整的代理安全系統。

這項區別令新聞報道保持有據可依。重要的新增功能,是更有用的應用程式契約,也就是對所回傳資訊的共同預期。當軟件實際讀取並據此行動時,該契約才會展現價值。

模型拒絕回應處理令應用程式團隊承受壓力

可辨識的拒絕回應為開發者提供更佳訊號,但亦令以通用方式處理失敗更難合理化。

拒絕回應是模型拒絕提供所要求的輸出。結構化輸出則是預期符合預先定義資料形狀的回應。當兩者交會時,將每個意外回應都視為格式問題,可能掩蓋真正原因。

已合併的模型拒絕回應處理改動,引入標準拒絕回應內容區塊及專用的 ModelRefusalError。作者描述早前的情況:供應商拒絕回應會顯示為最終答案,或一般剖析失敗。此改動亦包括可選的代理中介軟件,即可將已辨識拒絕回應轉為錯誤的攔截層。

直接承受壓力的是應用程式擁有者,而非模型使用者。開發者必須決定拒絕回應應終止工作流程、提示更安全的重述,還是交由人工審核。框架可以揭示這個狀況,卻無法知道哪種回應適合該產品。

設想一個假設的內部助理,將技術要求轉為結構化工作項目。有效答案會建立草擬工作單。無效格式會進入修復流程。拒絕回應應獲得獨立處理,因為修復格式無法處理模型決定不提供內容的問題。

沒有這項區別,應用程式可能會問錯問題。它可能詢問回應為何未能通過驗證,而真正相關的問題是為何所要求的輸出遭拒絕。這會令除錯方向指向綱要,即預期資料的定義,而非實際的回應狀況。

其營運含意直接明確:團隊應將重試決定與僅僅出現錯誤分開處理。對某些暫時性故障,重複請求是合理的;但當模型本身已拒絕該請求時,這是另一種決定。

這是應用程式設計判斷,而非證明每次拒絕回應都正確。模型可能拒絕合理請求。因此,有用的產品需要能區分「辨識到拒絕回應」與「認同其背後理據」。

使用者體驗團隊亦面對相關選擇。空白答案、通用失敗訊息與明確解釋所傳達的資訊各不相同。標準化訊號可支援更清晰的訊息,但無法為每種情境寫出恰當解釋。

企業買家應提出同樣具體的問題:產品能否分辨被拒絕的請求與執行失敗?泛稱助理能處理錯誤,對這種行為幾乎沒有說明。只有當工作流程遇上棘手情況時,這項區別才會顯現。

對維護可搜尋知識庫的開發者而言,這些決定應與整合說明及已知限制一併記錄。記錄預期結果有助防止日後改動將不同情況混入同一通用訊息。

壓力不在於到處加入更複雜的例外處理,而在於清楚分配責任。必須有人負責決定拒絕回應後會發生甚麼事,而該決定應能在供應商或應用程式元件改變時延續。

Gemini 拒絕回應區塊揭示共用格式的限制

共同的拒絕回應標籤可簡化應用程式決定,而毋須抹去供應商特有行為。

核心技術張力在於共用介面與供應商實際回傳的不同訊號之間。只有當轉譯保留足夠資訊以支援正確決定時,標準化才有效。熟悉的標籤很有用,但其涵蓋範圍同樣重要。

Gemini 安全封鎖改動,將指定的 Google 封鎖訊號對應至拒絕回應內容區塊。說明列出 SAFETY、PROHIBITED_CONTENT 及 BLOCKLIST 完成原因,連同提示封鎖。它亦記錄一項後續整合需求:供應商識別資料缺失時,提示遭封鎖的路徑無法進行轉譯。

這項限制是此版本分析的核心。應用程式不能僅因核心轉譯存在,便假設每條相關路徑都會變得可見。回應必須帶着轉譯所預期的資訊到達該轉譯環節。

OpenAI、Anthropic 與 Google 仍然是不同的比較對象。它們的訊號透過不同回應結構進入框架。工程目標是令應用程式處理一致,而不是聲稱底層供應商擁有相同政策或決策流程。

對使用供應商本身軟件開發套件、即用於呼叫其服務的程式庫的團隊而言,直接存取仍是合理替代方案。它可保留對原生回應的即時可見度。取捨是應用程式必須自行承擔更多轉譯工作。

LangChain 的方法將部分工作移至共用元件。好處是有可能減少重複的供應商專屬檢查。代價是多一項依賴:應用程式必須相信整合能辨識相關回應,並保留有用細節。

兩種方式均無法消除責任。直接整合可能誤解供應商欄位。共用框架可能遺漏整合路徑。有意義的比較在於轉譯放在哪裏、如何測試,以及當它不再符合現實時由誰發現。

Gemini 的例子令這個比較變得具體。團隊可以支持標準化工作,同時仍要求證明其實際部署的回應路徑能到達標準表示方式。這些立場並不衝突,因為介面設計和可運作整合是兩項獨立主張。

這項區別亦影響監控。將已辨識的拒絕回應合併為共同類別,可令應用程式報告更易理解。然而,過度合併類別可能掩蓋實際出現的是哪種供應商狀況,以及哪種修正行動適合。

因此,實際應用程式應保留共同決定與其支持證據之間的區別。共同決定可能是停止自動處理;證據則仍應說明是甚麼回應觸發該決定。

這正是 LangChain 拒絕回應處理值得在新類型名稱以外受到關注的原因。其價值在於將供應商輸出連接至有意義的應用程式分支。若這個連接失敗,標準化格式即使理論上可用,使用者仍會收到無法解釋的空白結果。

因此,應跨越整合邊界評估此版本。當供應商套件、回應轉譯及應用程式邏輯一致時,其重要性便會提高。單獨升級一個元件,本身並不能證明這種一致性。

已取消工具與已儲存訊息面對相同的清晰度問題

隨附的修正處理一項相關要求:當執行偏離預期路徑後,軟件應準確報告發生了甚麼事。

工具是代理可呼叫的外部功能。追蹤跨度是操作的監控記錄。若取消中斷執行卻未關閉該記錄,監控畫面便可能錯誤呈現一項其實已停止的操作。

工具取消修正處理了這個不一致之處。其說明指出,已取消的工具先前會略過預期的完成回呼,因為取消使用了較廣泛的 Python 例外類別。這項變更會回報錯誤,並再次引發原本的例外,讓取消狀態得以繼續傳遞。

這個範圍很重要。關閉監察紀錄,與撤銷外部操作是兩回事。這次發布並未證明取消工具會撤回已獲其他地方接受的電郵、資料庫更新或請求。

以假設中的支援助理為例,當使用者按下停止時,因此應引發幾個獨立問題。本機執行是否收到取消訊號?監察紀錄是否已關閉?外部服務是否已接受該操作?其中一個問題有更清晰的答案,並不能解決其他問題。

實際運作上的好處在於更準確的解讀。正確關閉的紀錄有助分辨已中斷的請求與仍在進行的工作。團隊在調查是否已產生外部影響時,仍需要獨立證據。

已儲存訊息的變更處理了另一類被中斷的理解。序列化會把物件轉換為可儲存或傳輸的表示形式;反序列化則將其重建。當接收端執行環境無法識別傳送端所認識的物件時,相容性便會失敗。

跨語言訊息載入修正加入了對由 LangChain.js 序列化的 RemoveMessage 物件的 Python 載入支援。作者指出,包含這些物件的已儲存圖形狀態是受影響的情況之一。修正亦把該類別加入受支援訊息的允許清單。

這是針對性狹窄的互通性修復,並非承諾每個已儲存物件都能在不同語言之間自由流動。允許清單是明確列出的獲准物件類型集合。加入一種類型,處理的是一個特定的缺失對應關係。

假設某個團隊有 JavaScript 應用程式及 Python 分析服務,便能說明當中的重要性。大部分已儲存對話或許都能正常載入。較少見的訊息操作,卻可能只會在該操作進入已儲存狀態後才暴露相容性缺口。

教訓是應評估具代表性的狀態,而不只是具代表性的文字。對話除了可見訊息外,亦可能包含控制資訊。只測試一般問答交流,便會令這些較不明顯的物件沒有納入證據範圍。

綜合而言,這些修正令發布版本比看似互不相關的清單更連貫。拒絕回應的轉換釐清了結果。取消回報釐清了操作的生命週期。跨語言載入則保留了解讀已儲存狀態的能力。

對於 langchain-core==1.7.5,這反映出更廣泛的工程主題:周邊系統需要準確交代未完成或例外的工作。單靠更好的答案無法解決這些失敗,因為每一項都發生在負責解讀模型驅動活動的軟件之中。

標準拒絕回應並非安全保證

最有力的懷疑觀點是,只有完整的應用程式路徑正確使用它時,更清晰的分類才有幫助。

有合理理由歡迎這次發布。可辨識的結果為開發者提供更好的決策依據。亦有合理反對意見:若應用程式從未一致採用它們,多一種類型及多一項可選整合可能會增加複雜性。

這項反對意見不需要有新缺陷的證據。它源自架構本身。當後續程式碼忽略、捨棄或把回應轉換成一般字串時,回應表示形式無法決定應用程式行為。

考慮一個假設中的產品:它透過同一個文字渲染器顯示每個模型回應,該元件負責為使用者準備輸出。框架或可準確保留拒絕回應,但產品仍可能在使用者看到任何內容之前失去這項區分。

應用程式設計亦可能出現相反問題。團隊在聽聞這項變更後,可能把每個空白回應都視為拒絕。這是以猜測取代明確訊號,亦可能掩蓋無關的問題。

合理標準是在決策點取得證據。開發者應確認哪些資訊會到達負責重試、顯示、升級處理或停止操作的程式碼。確認較早的元件支援拒絕區塊固然有用,但仍不完整。

另一個限制與政策有關。識別到供應商拒絕請求,並不能確立該請求是有害、正當還是被誤解。這次發布改變的是表示方式和處理方法,並沒有就每個供應商決定的品質建立獨立判斷。

與買家討論安全性聲稱時,這一點很重要。產品可以準確識別拒絕回應,同時仍可能未能妥善處理其他有風險的請求。它也可能在不同路徑中以不一致方式處理拒絕回應。標準區塊類型的存在並不能解決任何一種可能性。

版本範圍同樣需要審慎處理。較廣泛的拒絕回應工作涉及核心功能、供應商整合和代理行為。團隊應驗證所依賴的已安裝元件,而非假設一個已固定版本的套件會啟用合併變更中描述的每項功能。

測試亦應包括預期成功的情況。聚焦例外結果的發布版本,仍會進入必須正確回傳一般答案的應用程式。有用的評估會檢查這些區分是否帶來改善,同時不會意外改變無關的結果。

本文沒有提出獨立的生產環境基準測試,證明採用後事故更少、營運成本更低或拒絕準確度更高。這些仍是團隊需要衡量的結果。這次發布提供具體的工程變更,而非支持任何人可能附加其上的所有商業效益的證據。

因此,合適的升級論據應更狹窄且更站得住腳。因其已記錄的變更處理了相關的應用程式行為而採用此版本,然後在實際情境中驗證該行為。避免聲稱標準化本身已足以令代理可靠。

發布後開發者應留意甚麼

下一批有用訊號涉及整合覆蓋範圍、應用程式行為,以及可重現的相容性結果。

第一個訊號是已記錄的 Google 整合工作的後續進展。團隊應留意後續變更是否處理了對遭提示封鎖回應的供應商識別,以及訊息回傳至 Gemini 時對拒絕區塊的處理。

該等證據會強化這個觀點:共用表示形式涵蓋相關工作流程,而非只處理孤立的回應轉換。若持續存在缺口,受影響 Google 整合的實際效益便會較為有限。

重要觀察是整個請求路徑中的行為。發布說明中提及後續工作是有用線索。從已安裝整合中得出的可重現結果,則是應用程式受封鎖回應路徑如今按預期運作的更有力證據。

第二個訊號是應用程式採用明確的拒絕決策。有用證據會顯示,拒絕回應會導向不同的產品結果,而非顯示為空白答案或一般格式錯誤。這正是框架支援轉化為使用者可見改善的地方。

團隊無須發表一項廣泛的可靠性評分,亦可評估這項區分。他們可以檢查遭拒絕的請求是否適當停止、是否保留相關診斷資訊,以及是否避免執行原本針對不同失敗類別的自動操作。

若應用程式持續把這些結果混為一談,較廣泛的標準化論點便會削弱。框架仍會提供更多資訊,但產品不會把該等資訊轉化為更好的決策。

第三個訊號是已取消工具及跨語言狀態的迴歸證據。迴歸檢查會驗證先前修正的行為是否保持正確。就此而言,有用的例子應涵蓋中斷執行,以及包含受影響訊息物件的已儲存狀態。

通過結果會支持具體的維護聲稱。可重現的失敗則有助識別問題是在核心套件、相鄰整合,還是應用程式假設。無論結果如何,都不應被延伸為對每個可能工作流程的聲稱。

在未來數月,這些訊號會比下載量或普遍熱情提供更佳評估。它們會問這些變更是否真正觸及依賴它們的人和系統,同時亦令評估維持在已記錄的範圍內。

對考慮 langchain-core==1.7.5 的團隊而言,應先從應用程式在預期工作未能到達時所作的決策開始。檢視它如何區分拒絕回應、中斷操作及無法讀取的已儲存對話。然後透過使用者和營運人員實際看到的元件,追蹤這些結果。

評估應小至足以理解,亦要貼近現實至足以重要。除受影響情況外,亦應包含一般成功請求,並記錄每項結果由哪些套件版本產生。在有助診斷時保留供應商細節,同時令使用者訊息保持清晰。以這些證據決定哪些應用程式分支需要變更。你的系統今天可以解釋哪些結果?又有哪些仍然消失在一般失敗訊息背後?

 
 

為每個智能代理提供更完整的背景,提升工作表現

讓智能代理連接 remio 已整理好的知識、決策和歷史紀錄。

remio 目前支援 Windows 10+(x64) 及配備 Apple 晶片的 Mac。

你的 AI 工作夥伴
和 remio 一起高效工作

規劃、創作、交付
一站式完成

bottom of page