PydanticAI:把 AI Agent 從 prompt script 拉回工程系統,但前提是你本來就在 Python 生態裡

現在很多人談 AI Agent,腦中想到的還是兩種極端:一種是很快就能跑起來的 prompt script,功能看起來靈活,但一放進正式系統就開始漂;另一種則是功能非常多的平台,從 workflow、memory、tracing 到 deployment 全包,可是導入成本和心智負擔也一起變重。

PydanticAI 之所以值得看,不是因為它又多做了一個 agent framework,而是它試圖把這件事拉回一個很多 Python 團隊比較熟的世界:型別、資料模型、工具定義、依賴注入、驗證、測試與 observability。它不是在賣「更神的 agent」,而是在賣「比較像工程系統的 agent 開發方式」。

如果一句話先講結論:PydanticAI 比較適合已經在 Python 生態做 AI 產品、希望把 LLM 功能變得更可維護的團隊;不太適合把 agent 當黑盒魔法、期待框架本身自動解決品質與產品設計問題的人。

從公開資料來看,PydanticAI 建立於 2024 年 6 月,到 2026-03-28 仍維持非常高的更新頻率:GitHub 約 1.58 萬星,最近一次 push 在 2026-03-27,最近幾天幾乎天天發版,官方文件也相對完整。這代表它已經不是只靠概念熱度撐場面的新玩具,而是有在快速往 production 使用情境補能力。

English TL;DR:

  • PydanticAI is an open-source Python agent framework that tries to make GenAI systems feel more like normal software engineering.
  • Its real value is not “more agent magic”, but typed outputs, validation, dependency injection, tools, evals, and observability in one coherent Python-first model.
  • It fits teams already building AI products in Python and wanting more maintainable LLM workflows.
  • It is less suitable if your stack is not Python, if you mainly need a low-code orchestration platform, or if you expect a framework to solve agent reliability by itself.

PydanticAI 是什麼?

PydanticAI 是 Pydantic 團隊推出的開源 Python Agent Framework。它的核心想法不複雜:既然很多 Python 團隊本來就已經用 Pydantic 處理資料驗證與型別模型,那 AI Agent 這一層也應該延續同樣的開發體驗,而不是重新掉回「字串湊 prompt、執行時才知道壞掉」的狀態。

從 README 與官方文件來看,它主打的能力大致有幾個:

  • 支援多模型、多供應商
  • 用 Pydantic 模型定義 structured output
  • 用 Python 函式定義工具,並做參數驗證
  • 透過 dependency injection 傳遞環境、資料庫連線與上下文
  • 提供 evals、tracing、observability、durable execution、human-in-the-loop approval 等能力
  • 能往 MCP、A2A、UI event stream 這些較新的 agent 協定擴展

如果把它放在市場上的定位來看,它不是單純的 OpenAI SDK 包裝層,也不是一套以視覺化流程編排為主的平台。比較貼切的說法是:它想成為 Python 團隊做 agent 與 LLM app 時的工程骨架。

為什麼這種東西現在會開始重要

過去一年,很多 AI 團隊都經歷過同一個過程:

  1. 先用 prompt + API 很快做出 demo
  2. 然後開始加工具、加檢索、加結構化輸出
  3. 再來開始碰到重試、驗證、觀測、版本控管、成本追蹤與線上品質問題

問題通常不是模型突然變弱,而是系統一旦複雜,原本「只要能跑」的做法就會開始出現工程債:

  • 工具參數傳錯,執行時才爆
  • 輸出格式常常飄,後端 parser 失敗
  • prompt 與業務邏輯糊在一起,不好測試
  • 每次換模型或供應商,就得改一串整合程式
  • 線上出問題時,很難知道是 prompt、tool、provider 還是資料依賴出了事

這也是 PydanticAI 切入的點。它的吸引力不在於讓 agent 更像科幻片,而是讓 agent 比較像正常軟體。這件事對想把 AI 功能真的放進產品的人,比「再多一個酷炫 demo」重要得多。

它到底在幫你省什麼?

如果用比較白話的比喻,PydanticAI 很像是把 AI Agent 從手寫試算表拉回有 schema 的資料庫。

手寫試算表不是不能用。小規模、臨時性任務時,它甚至很有效率。但一旦欄位變多、資料來源變雜、多人一起改,就會開始出現格式不一致、欄位定義模糊、驗證失效、後續難維護的問題。

很多 prompt script 也是一樣。它們在 demo 階段很快,但一旦你要把它接到正式 API、工具呼叫、審批流程、資料庫或客服系統,就會發現「字串能跑」不等於「系統能管」。

PydanticAI 想省下來的成本,主要不是第一天開發速度,而是後面這些隱性成本:

  • structured output 壞掉後的除錯成本
  • 工具 schema 漂移造成的風險
  • 多模型切換時的整合成本
  • 線上 trace 不清楚導致的維運成本
  • 沒有 eval 與測試框架時的品質回歸成本

對已經準備把 AI 功能做成產品能力的團隊來說,這些才是真正會吞掉工期與信心的地方。

哪些團隊會很有感,哪些其實先不用急

適合

  • 已經在 Python 生態 裡做後端、資料處理或 AI 產品的團隊
  • 需要 structured output、工具呼叫、上下文依賴 的正式系統
  • 希望 agent 邏輯能比較自然地接進現有工程流程、型別檢查與測試流程
  • 對 observability、evals、trace、成本追蹤已經開始有感的團隊
  • 想保留模型供應商選擇權,不希望系統被單一 provider 綁死

不太適合

  • 主要技術棧不是 Python,而是 TypeScript、Go 或 JVM
  • 真正需求比較像 低程式碼工作流平台,而不是程式框架
  • 團隊還在做一次性 demo,還沒有維護與治理需求
  • 期待「換了框架,agent 就會更可靠」
  • 沒有打算做測試、eval、監控,卻希望 production 成功率自然提升

比較務實的判斷是:PydanticAI 適合已經把 AI 當系統工程問題看待的人,不適合只想要一層包裝讓 agent 看起來比較厲害的人。

三個很實際的場景

場景一:客服或內部助理,需要結構化輸出而不是一段漂亮廢話

假設你要做一個客服助理,最後不是要它「講得像人」,而是要它吐出一個可被後端接住的結果,例如:

  • 問題分類
  • 緊急程度
  • 是否需要人工升級
  • 建議回覆摘要
  • 是否要觸發特定流程

這種場景最怕的不是回答難看,而是格式飄。因為只要回傳欄位少一個、型別不對、風險分數超範圍,後面的流程就會跟著壞掉。

PydanticAI 在這裡的價值很直接:可以用 Pydantic model 定義 output schema,讓模型輸出最後必須通過驗證。就算模型第一次沒答對,框架也能用 retry / reflection 路徑要求它修正。這不會讓錯誤徹底消失,但會比純 prompt + JSON parsing 穩很多。

場景二:工具很多的 agent,需要清楚管理依賴,而不是把一切塞進全域變數

另一個常見場景,是做會呼叫工具的 agent,例如查資料庫、查訂單、查庫存、做內部搜尋、送審批請求。

這時候難點往往不是 tool call 本身,而是工具和上下文之間的關係:

  • 哪個使用者有權限查哪筆資料
  • 當前 session 綁定哪個 tenant
  • 要把哪些資料庫或 API client 傳進執行上下文
  • 測試時怎麼替換依賴

PydanticAI 透過 dependency injection 與 RunContext,把這些依賴關係拉到比較明確的結構裡。這對小 demo 看起來像多一層抽象,但對真實系統來說反而是減少混亂。

場景三:團隊已經上線 AI 功能,現在更痛的是觀測與回歸

很多團隊前期會把注意力放在「做得出來」,但產品一旦上線,新的問題馬上出現:

  • 最近回答變差,是 prompt 變了,還是模型版本變了?
  • 某個工具呼叫失敗比例升高,是 provider 延遲、schema 變動,還是業務資料異常?
  • 新版部署後,成本怎麼變高了?
  • 哪些測試案例其實已經開始退化?

PydanticAI 把 tracing、evals、Logfire/OTel 整合放進同一個框架語境裡,這件事對 production 團隊很重要。因為 AI 系統最難維護的地方之一,就是看得到程式,看不到推理過程與互動細節。能不能把 trace、tool call、cost、result schema 統一看清楚,會直接影響你敢不敢擴大使用範圍。

從底層看,它怎麼把 Agent 拉回工程系統

PydanticAI 的核心設計,其實可以從四層來理解。

1. 用型別與 schema 先定義邊界

這是它最核心的價值。很多 agent 框架最後還是在處理「自由文字世界」,但 PydanticAI 盡量讓輸入、輸出、工具參數、依賴上下文,都有明確的 Python 型別與資料模型。

這個設計的好處不是只在 IDE 自動補完,而是讓錯誤盡量往前移:

  • 開發時就知道工具參數長什麼樣
  • structured output 不是靠肉眼猜格式
  • schema 改動時,比較容易跟著追出影響面

它沒有辦法把 LLM 變成傳統 deterministic code,但可以把系統裡可定義的部分先定義好。

2. 用驗證取代盲信模型輸出

PydanticAI 並沒有假設模型天然會守規矩。相反地,它的設計很明顯是在承認:模型輸出會歪、工具參數會錯、結果需要重試。

因此它讓 Pydantic 驗證站在最後一道門口。這代表流程不是「模型說什麼就直接吞」,而是「模型輸出先通過資料結構檢查,再交給應用邏輯」。對正式系統來說,這種順序非常重要。

3. 用依賴注入管理真實世界的複雜度

Agent 一旦和資料庫、外部 API、權限、租戶、審批或工作流接起來,問題就不再只是 prompt engineering,而是標準的系統設計問題。

PydanticAI 沒有逃避這一點,而是直接採用比較工程化的做法:把依賴顯式傳入,把上下文收斂在 RunContext,把工具寫成正常 Python 函式。這個方向不花俏,但很務實。

4. 往 production 補上觀測、eval 與 durable execution

從最近的 commit 與 release 節奏可以看出來,專案並不是停在「基本 agent 跑起來」這一層,而是持續在補 tracing、hooks、approval、durable execution、provider 相容性與 schema 生成細節。這很能說明它正在處理的,不只是教學範例,而是長時間執行與正式環境裡會踩到的邊角問題。

如果只想先試,最小可行步驟是什麼

如果只是要判斷它值不值得導入,最小起步不需要做得很重。

第一步:先做一個有結構化輸出的單點任務

例如:

  • 把客服信件分類成固定欄位
  • 把銷售通話摘要整理成 CRM 可寫入格式
  • 把內部知識問答回傳成 answer / confidence / cited_sources

重點不是做出「最像 agent 的 agent」,而是先驗證:它能不能讓輸出更穩定、更容易接進你的後端流程。

第二步:再加一個真實工具與一個真實依賴

例如接進內部資料庫查詢或 CRM API,讓 agent 必須根據 tenant、user id 或 session context 執行。這一步才能真正看出 dependency injection 與 tool schema 管理值不值得。

第三步:最後才看 tracing、evals、approval 這些 production 配套

如果前兩步都站得住,再往 observability 與 evals 走會比較合理。否則一開始就把所有配套都上滿,很容易把框架本身的複雜度誤認成產品價值。

它的限制,反而比優點更值得先講

1. 它不是 agent 品質保證書

PydanticAI 可以幫你把輸入輸出、工具與依賴管理得更像工程,但它不能保證模型判斷正確,也不能幫你自動設計出好產品流程。

換句話說,schema 可靠,不等於決策可靠。如果問題本身需要高品質檢索、明確業務規則、好的 prompt、好的 eval 資料集,這些都還是得自己做。

2. 它很 Python-first,這是優勢也是邊界

如果團隊本來就在 FastAPI、Pydantic、Python 資料堆疊裡,這會非常順;但如果你的主棧是 TypeScript 或你需要前後端共享 schema、偏向 Node 生態,那這套體驗未必是最自然的。

很多框架的問題不是好不好,而是是不是剛好長在你的生態裡。PydanticAI 在這一點的邊界很清楚。

3. 功能擴張很快,也代表學習面會變大

從官方文件可見,它現在不只談基本 agent,還包含 capabilities、MCP、A2A、durable execution、agent spec、UI event stream、gateway 等能力。這代表它很有企圖心,但也意味著:

  • 新進團隊不一定需要全部能力
  • 文件量會變大
  • 心智模型會比「只是一個 output schema 工具」重得多
  • API 與最佳實踐可能仍會持續調整

對導入者來說,較穩健的方式通常不是全吃,而是先吃最有 ROI 的那一層。

4. 可觀測性整合雖然強,但也可能把你帶向特定工具鏈

官方明顯強調和 Pydantic Logfire 的整合。這件事本身沒有問題,而且對很多團隊是優勢;但如果公司已有既定 observability stack,就要先確認:

  • OTel 整合是否足夠順
  • trace 粒度能否符合內部標準
  • 成本、保留期與權限模型是否可接受

也就是說,觀測能力很重要,但不一定表示你該照官方預設全部採納。

如果不用 PydanticAI,替代方案有哪些

1. 直接用 OpenAI / Anthropic SDK + 自己做 schema 與工具管理

這是最輕量的做法。好處是依賴少、控制感高;缺點是只要功能一複雜,很多共通工作很快要自己補:驗證、重試、tool wrapping、trace、eval、provider abstraction。

如果需求很小,這條路很合理;如果系統準備長大,維護成本常常也會一起長。

2. LangChain / LangGraph

這類工具的優勢是生態大、社群大、整合多,特別是在 workflow 與 graph orchestration 上有很強的位置。但代價通常是抽象層較厚,版本演進快時也比較容易出現認知負擔。

如果你真正需要的是多步工作流編排與更複雜的 agent graph,LangGraph 仍很值得看;但如果你想先把 Python 裡的型別、輸出與工具治理做好,PydanticAI 的切入角度會更直接。

3. Instructor、marvin 或其他偏 structured output / Python DX 的工具

這些工具也很重視 Python 開發體驗,有些在特定任務上甚至更輕巧。但 PydanticAI 的差異在於它想把範圍拉得更完整:不只輸出驗證,也延伸到 agent、capabilities、durability、eval 與 tracing。

因此差別不一定是誰更強,而是你需要的是單點能力,還是整套工程框架。

GitHub Star History

Star History Chart

結論:如果你正在把 AI 功能產品化,PydanticAI 值得試點

比較保守但務實的結論是:PydanticAI 很值得關注,也值得小範圍試點,但不應該被當成萬用 agent 平台。

它真正的強項,不是讓模型更聰明,而是讓整個 AI 應用比較像一個可維護、可測試、可觀測的工程系統。對 Python 團隊來說,這個方向非常有吸引力,因為它不是要求團隊接受一套全新的世界觀,而是把 AI 開發接回既有的工程習慣。

但它的邊界也很清楚:如果你的問題其實是產品流程不清、資料品質不好、eval 不完整、權限治理混亂,那換框架不會自動救你。它能幫你把可定義的部分定義清楚,不能替你消除 AI 系統本來就存在的不確定性。

所以比較穩健的做法不是「全面改寫成 PydanticAI」,而是挑一條最痛、最需要結構化輸出與工具治理的流程先試。若那條流程在穩定性、可觀測性與維護成本上真的有改善,這個框架才值得往更深層擴張。

來源

換個腦袋讀

想再讀深一點?

深入解讀
ChatGPT Google AI