返回首頁

代理框架

PydanticAI 2.38 暴露代理上下文用量,並為執行串流加入型別化自訂事件

代理工具現在可從 `RunContext` 判斷已使用的上下文,應用程式也能把自訂狀態送進同一條事件串流。新版另加入自架 vLLM provider 與缺少 `finish_reason` 的串流拒絕策略。

W. Punt for Anefo · CC BY-SA 3.0 nl · Image source
zh-Hant

PydanticAI 2.38.0 把幾個過去必須由應用層自行補齊的代理控制訊號放進框架。`ModelProfile` 新增 `context_window`,`RunContext` 則提供 `context_window_used`,工具在執行途中可以取得已消耗的上下文量,據此停止載入大型文件、切換摘要流程,或避免在接近上限時再發出昂貴的模型呼叫。這比只在一次請求結束後讀取 token usage 更適合長工具迴圈,但實際可用性仍取決於各模型 provider 是否提供正確的視窗規格與用量資訊。

另一項改動是讓應用程式與 capability 發出具型別的 `CustomEvent`、`CapabilityEvent`,並以 `@on_event` 訂閱。這使進度、審批要求、領域狀態或前端通知可以和模型、工具事件走同一條 run stream,不必另外維護一組無型別 callback 或訊息匯流排。對需要把代理接到 Web UI、工作佇列及可觀測系統的團隊,統一事件模型有助於保留事件順序及靜態型別檢查。

2.38.0 也加入 `VLLMProvider`,讓同一套 agent API 可連接企業自架的 vLLM 伺服器;模型清單同步支援 Gemini 3.8 Flash、Claude Fable 5.1 與 Mythos 5.1。新的 profile 選項可拒絕沒有 `finish_reason` 的串流,避免上游截斷被誤認為正常完成。版本亦修補 DeepSeek、Together、Anthropic、Bedrock、OpenAI Responses 等路徑的工具選擇、推理區塊與歷史重播問題,顯示跨供應商抽象仍有不少語意差異。此次發布沒有吞吐量或可靠性基準;升級時還要測試 capability 新增的預設 `id` 與重複合併規則,並確認自架 vLLM 的串流格式、結束原因及 token 統計符合框架預期。

來源

  1. PydanticAI v2.38.0 Release
  2. pydantic-ai 2.38.0