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 和前端重連等生產場景變得簡單可靠。