AI News HubLIVE
站内改写

從令牌流到代理流

Deep Agents、LangChain 和 LangGraph 的最新流式原語引入了型別化事件、作用域訂閱、子代理可見性、多模態輸出和彈性前端體驗,支援構建生產級代理應用。

文章情報

工程師進階

要點

  • 流式處理需要超越令牌,現代代理生成訊息、工具呼叫、子代理活動、狀態變更、審批和媒體,需要結構化事件流。
  • 型別化事件和投影簡化了前端開發,應用直接訂閱訊息、工具呼叫、狀態、子代理或自定義通道,執行時處理組裝、排序和重連。
  • 作用域訂閱使複雜代理 UI 可擴充套件,前端僅流式傳輸其渲染的代理樹部分,支援高效子代理檢查器、儀表盤和長時執行的生產工作負載。
  • 同一個流式模型跨執行時和模態工作,支援本地和遠端執行、React/Vue/Svelte/Angular SDK,以及文本、工具、影像、音訊、影片和自定義應用事件。

為什麼重要

這條新聞值得關注,因為流式處理需要超越令牌,現代代理生成訊息、工具呼叫、子代理活動、狀態變更、審批和媒體,需要結構化事件流。

技術影響

可能影響模型選型、推理成本、產品能力和評測基準。

LangChain 的最新流式原語從根本上改變了代理應用的構建方式,從簡單的令牌流演進為基於結構化事件的全新架構。現代代理不僅生成文本,還涉及工具呼叫、子代理活動、狀態變更、人工審批以及多模態內容輸出,傳統的一次模型呼叫、一次令牌流的 API 已無法滿足需求。最新發布的 Deep Agents、LangChain 和 LangGraph 流式處理正是圍繞應用事件設計的,每個事件都帶有型別標籤,並標明其在代理樹中的來源位置;應用透過訊息、工具呼叫或子代理狀態等投影來迭代處理;同一模型支援本地執行、遠端執行緒以及 React、Vue、Svelte 和 Angular SDK。此外,官方還發布了流式處理食譜,包含可執行的 Python 和 TypeScript 示例。

新的流式原語建立在四個核心思想之上:型別化事件而非原始塊——每個事件都標記了其所描述的工作型別(訊息、工具呼叫、狀態變更、子代理狀態)及其在代理樹中的來源;投影而非解析——應用迭代其想要渲染的檢視,執行時處理組裝、排序和重連;作用域訂閱——客戶端僅請求其正在渲染的通道和代理樹部分,因此子代理檢查器不會拉取所有子代理的令牌;同一模型跨執行時——本地圖執行、遠端執行緒和 React/Vue/Svelte/Angular 元件都使用相同的協議,底層是投影,上層是鉤子。

型別化事件協議是流式處理的基礎,它提供通用的事件信封,而不是不透明的流元組。通道描述流式處理的內容,例如訊息、圖狀態、工具執行生命週期、執行/子圖/子代理生命週期、檢查點以及自定義的應用定義投影。名稱空間描述事件在代理樹中的位置,根圖、巢狀子圖和 Deep Agents 子代理都可以發出相同通道型別的事件而不丟失其身份。這種分離是關鍵設計:通道是可重用的關注點,而名稱空間標識產生事件的執行部分。

投影是應用開發者真正需要的 API。大多數應用程式碼不應迭代原始協議事件,而應請求它們想要渲染的內容。透過 astream_events 方法,執行物件暴露型別化投影,訊息以型別化內容塊(文本、推理、工具呼叫引數、用量資料)的形式到達,而不是應用需要重新拼接的字串流。這對於現代模型輸出至關重要,推理應與最終答案文本以不同方式渲染,工具呼叫引數需組裝為結構化資料,多模態資料不應被強制透過純文本介面。

子代理和子圖方面,LangGraph 允許開發者將代理結構化為圖節點,包括巢狀子圖;Deep Agents 增加了高階委派模型,代理可將工作移交給子代理。新的原語區分了子圖(任何巢狀圖執行)和子代理(透過 Deep Agents 任務呼叫委派)。兩者都作為輕量級控制代碼到達,可以讀取身份、位置和狀態,詳細的流僅在 UI 請求時傳輸。這使得 UI 能夠隨代理複雜性擴充套件,例如儀表盤可以免費顯示執行中的子代理列表,然後僅為選中的子代理開啟訊息和工具流。

自定義通道允許應用定義領域特定的投影,如引用、進度事件、結構化計劃、UI 描述、媒體控制代碼等,透過流式轉換器將協議事件過濾並推送到命名通道中。前端透過擴充套件選擇器訂閱。食譜中包含一個生成式 UI 示例,代理透過 custom:a2ui 通道發出宣告性訊息,React 應用訂閱該擴充套件並即時渲染介面。

多模態流式處理是這一模型的自然擴充套件。協議圍繞內容塊而非純字串設計,文本、推理、工具活動、影像、音訊、影片和自定義資料都適合相同的流式架構:型別化塊、命名通道、名稱空間和投影。

新的框架 SDK(@langchain/react、@langchain/vue、@langchain/svelte、@langchain/angular)以各種框架的慣用方式暴露相同的流式概念。核心心智模型共享:一個根鉤子(useStream 或 Angular 中的 injectStream),頂層投影(訊息、值、工具呼叫、中斷)無需設定即可使用,元件級選擇器(useMessages、useToolCalls 等)實現作用域訂閱。這使得長時執行代理、複雜多代理 UI 和前端重連等生產場景變得簡單可靠。