跳到主要內容
AI News HubLIVE
站內改寫2 分鐘閱讀

使用 Temporal 和 Lakebase 構建持久化 AI 代理

文章摘要

Databricks 提出個人貸款承銷代理參考實現,結合 Temporal 的持久執行與 Lakebase Postgres 的可查詢執行狀態,使代理可在工作節點故障、工具呼叫失敗或等待人工稽核數天後恢復進度。採用確定性 ID、冪等寫入和受控狀態轉換,配合 Unity Catalog 策略同步表及 Change Data Feed,實現恢復、重試、長時間等待、可觀測性、執行時治理和審計。

使用 Temporal 和 Lakebase 構建持久化 AI 代理
回報錯誤

更正管道尚未開通,可先複製下方文章資訊留存。

查看更正說明
直接讀正文

個人貸款承銷是一個天然的持久化代理場景:同一執行流程既要收集徵信、收入等證據,又要按政策評估,並在休息或外部系統等待時接受人工稽核。由於雲端工作節點隨時可能重啟,簡單的請求-響應鏈路無法保證進度不丟失。Databricks 的參考實現借用 Temporal 負責執行控制流,Lakebase Postgres 承載面向應用的可查詢狀態,從而把“已完成的工作”和“接下來該做什麼”分開儲存。

Temporal 的核心是 Workflow 事件歷史。Workflow 代表一次代理執行的確定性控制流;Activity 是對模型、工具或資料庫的呼叫,呼叫結果記錄在事件歷史中並可重試;Signal 則向執行中的 Workflow 傳送非同步指令,例如稽核人的決定。發生故障時,新的工作節點透過回放事件歷史重建狀態,已記錄的 Activity 結果不會再次執行,而未完成記錄的呼叫仍可能再次觸發。因此,模型呼叫、工具呼叫與資料庫寫入分別設定了不同重試策略,避免副作用被無限放大。

Lakebase Postgres 不替代 Temporal,而是儲存應用檢視。agent_ops 中的表記錄執行狀態、訊息、工具呼叫、稽核意見、事件和指標;agent_policy 則是從 Unity Catalog 同步來的只讀策略表。由於二者的寫入不共享事務,活動程式碼需要定義“重複執行也安全”的契約。參考實現採用確定性 ID(run_id、message_id、tool_call_id、review_id 等)作為主鍵或唯一約束,並用 upsert 與守衛更新來確保重試落到同一邏輯行。例如把工具狀態寫回 started 時,只有當前狀態非終態才允許更新;若該行已經 succeeded 或 failed,PostgreSQL 會更新零行而不是報錯。不過生產者程式碼需要檢查受影響行數,並把零行結果分類為預期 no-op 或衝突,這也是生產系統必須注意的邊界。

架構上,React 與 FastAPI 負責 UI、API 和啟動 Workflow,Temporal Cloud 儲存事件歷史並排程任務,工作人員執行回放與各類 Activity。承銷政策以 Unity Catalog 為源,透過連續同步表進入 Lakebase;當寫入 agent_ops 後,若開啟 Lakebase Change Data Feed,還可把執行證據、推薦、稽核決定與指標釋出回 Unity Catalog 管理的 Delta 歷史表,為審計和分析提供統一通道。

作者認為,這種組合最適用於需要跨工作節點存活、長時間等待人工輸入、嚮應用暴露關係型狀態並在執行期間應用治理資料的代理場景。Temporal 決定何時重試,而每個有副作用的工具或資料庫必須自己定義如何處理同一個重試——這正是構建可靠雲代理的關鍵。

展開要點與分析

文章情報

工程師中級

要點

  • Temporal 事件歷史驅動回放,讓替換的工作節點從最後完成步驟繼續;已完成 Activity 結果不會重複執行。
  • Lakebase Postgres 以規範化 schema 儲存執行狀態、訊息、證據、稽核記錄與指標,供應用即時查詢。
  • 寫入使用確定性 ID 和約束/upsert/防護更新,使網路重試等場景下的重複 Activity 嘗試收斂到同一邏輯記錄。
  • Unity Catalog 中的策略經同步表供代理讀取,開啟 Change Data Feed 後可將操作變化回寫 Delta 歷史表用於審計。

要點與分析由自動化流程生成,可能有誤,請結合原始來源核實。