Pydantic AI 是什麼、怎麼用:安裝、結構化輸出、工具與依賴注入入門

Pydantic AI 是什麼、怎麼樣、怎麼上手?按官方 README 和安裝文檔講清它的定位與賣點、完整版與 slim 版的安裝命令、用 output_type 拿到校驗過的結構化結果、用 @agent.tool 加工具、RunContext 與依賴注入是什麼,以及適合什麼人用。

NNathaniel bigo··原創首發·AI 輔助撰寫
8 分鐘讀完
資料核對於 2026-10-11 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 Pydantic AI 官方倉庫 README 和官方安裝文檔整理,資料核對於 2026-10-11。文中代碼取自官方 README,沒有在本機運行驗證。

適用於誰

  • 搜「pydantic ai 是什麼」「pydantic ai 教學」「pydantic ai 怎麼樣」的人;
  • 用 Python 寫智能體,受夠了從模型返回的文本里手動摳字段的人;
  • 已經在用 Pydantic 或 FastAPI,希望智能體代碼也有類型檢查的人。

結論先說

  1. Pydantic AI 是 Pydantic 團隊出的 Python 智能體框架。官方的一句話定位是:一個帶類型、可擴展的智能體循環,換模型只需要改一個字符串。
  2. 安裝:pip install pydantic-ai 或 uv add pydantic-ai,需要 Python 3.11 及以上。
  3. 最有特色的是結構化輸出:給 Agent 傳一個 Pydantic 模型作為 output_type,拿到的 result.output 就是校驗過的對象,字段類型和取值範圍都有保證。
  4. 工具就是加了裝飾器的函數:函數簽名和文檔字符串自動變成給模型看的工具定義。
  5. 依賴注入:數據庫連接、當前用戶這類運行時才有的東西,通過 RunContext 傳進工具和指令裏,而不是用全局變量。

一、它主打什麼

README 的「為什麼用 Pydantic AI」裏列的幾項:

賣點說明
與模型無關一套 Python 接口覆蓋多家廠商,換模型只改字符串
類型安全結構化輸出、帶類型的依賴注入、帶類型的工具
可觀測性原生支持 OpenTelemetry,一行代碼接入 Logfire,也可以接任何 OTel 後端
評測Pydantic Evals,像用 pytest 測代碼那樣測智能體的行為
MCP通過核心的 MCP 能力接入
人工確認內置工具調用審批
持久化執行可以運行在 Temporal、DBOS、Prefect 這類引擎上,重啟後能接着跑
圖Pydantic Graph 提供帶類型的、基於圖的流程控制

二、安裝

完整版

bash
pip install pydantic-ai
bash
uv add pydantic-ai

官方說明完整版包含 pydantic_ai 包、核心依賴,以及 OpenAI、Anthropic、Google 三家模型所需的庫,還帶上了命令行、MCP、Evals、Web 介面和 Logfire 的集成。其他模型和集成需要加附加項,例如 pydantic-ai[bedrock,temporal]。

slim 版:只裝需要的

bash
pip install "pydantic-ai-slim[openai]"
bash
pip install "pydantic-ai-slim[openai,google,logfire]"

pydantic-ai-slim 只安裝你選的附加項。常用的可選組名有 openai、anthropic、google、groq、mistral、bedrock、openrouter、mcp、evals、logfire、cli 等,完整列表見官方安裝文檔。

想讓依賴盡量少(做成鏡像、放進函數計算)時用 slim 版;本地學習直接裝完整版。

然後把對應廠商的 API Key 設成環境變量,例如用 OpenAI 的模型就設 OPENAI_API_KEY。

三、第一個智能體:結構化輸出加一個工具

README 裏最短的完整示例:

python
from typing import Literal

from pydantic import BaseModel, Field

from pydantic_ai import Agent, RunContext


class Sentiment(BaseModel):
    label: Literal['positive', 'negative', 'neutral']
    score: float = Field(ge=-1, le=1)


agent = Agent('openai:gpt-6-sol', output_type=Sentiment)


@agent.tool
def recent_reviews(ctx: RunContext, product: str) -> list[str]:
    """Fetch recent review snippets for a product."""
    return ['The new release fixed everything I complained about!']


result = agent.run_sync('How are people feeling about the Extract app?')
print(result.output)
#> label='positive' score=0.9

逐段看:

  • Sentiment:一個普通的 Pydantic 模型。label 只能是三個值之一,score 必須在 -1 到 1 之間;
  • Agent('openai:gpt-6-sol', output_type=Sentiment):第一個參數是 '廠商:模型' 形式的模型字符串,換模型就改這裏;output_type 聲明最終結果必須是一個 Sentiment;
  • @agent.tool:把函數註冊為工具。函數簽名和文檔字符串成為工具的參數定義和說明。模型需要評論數據時會調用它;
  • agent.run_sync(...):同步運行。框架負責「調用模型 → 執行工具 → 再調用模型」的循環;
  • result.output:拿到的是一個 Sentiment 對象,可以直接用 result.output.label。

模型返回的內容不符合 Sentiment 的約束時,校驗會失敗,而不是把一個不合格的結果悄悄交給你的業務代碼。這就是它相對「在提示詞裏要求輸出 JSON」的主要好處,原理見《如何讓大模型穩定輸出 JSON》。

四、依賴注入是什麼

實際的工具往往需要外部資源:數據庫連接、HTTP 客戶端、當前登入的用戶。README 的銀行客服示例展示了這套機制,涉及的幾個概念:

概念作用
deps_type聲明這個智能體運行時需要的依賴類型
RunContext運行上下文,把依賴帶進工具函數和指令函數
@agent.tool註冊工具,第一個參數是 RunContext
@agent.instructions動態指令:在運行時根據依賴生成一段指令,比如把當前客戶的姓名寫進去
output_type讓每次運行返回一個校驗過的、帶類型的對象

好處有兩個:一是類型檢查器能發現「工具裏用了依賴上不存在的屬性」這類錯誤;二是測試時可以傳入假的依賴,不必連真的數據庫。

README 裏還提到 Capabilities:把工具、指令、鉤子和設定打包成可以複用的單元。入門階段可以先不管。

五、看得見運行過程

README 把可觀測性放在很靠前的位置:框架按 OpenTelemetry 標準輸出追蹤數據,接 Pydantic 自家的 Logfire 只需要一行代碼,也可以接其他支持 OTel 的後端。slim 版需要加 logfire 附加項:

bash
pip install "pydantic-ai-slim[logfire]"

之後按官方的 Logfire 設定指南配置。智能體多步運行時,哪一步調用了哪個工具、每次請求和響應是什麼,都能在追蹤裏看到。

六、適合誰,不適合誰

適合:

  • 需要把模型輸出交給下游代碼使用的場景:抽取、分類、填表、生成配置;
  • 團隊已有 Pydantic、類型標註的習慣;
  • 希望不綁定某一家模型廠商。

可以先不用:

常見問題

Q:和 Pydantic 是什麼關係?

同一個團隊的作品。Pydantic 是做數據校驗的庫,Pydantic AI 用它來定義和校驗模型的輸出、工具的參數。

Q:能用國內的模型嗎?

官方的可選依賴組裏列了十幾家廠商,包括 openrouter、zai 等。具體哪些模型受支持、怎麼配置,以官方模型文檔為準。

Q:和 OpenAI Agents SDK 怎麼選?

主要用 OpenAI 的模型、想要官方的交接和追蹤,選前者,見《OpenAI Agents SDK 教學》;看重類型安全和跨廠商,選 Pydantic AI。

Q:result.output 校驗失敗會怎樣?

會報校驗錯誤。框架對重試的處理方式和配置項,以官方文檔為準。

參考資料

  • pydantic/pydantic-ai(官方倉庫):https://github.com/pydantic/pydantic-ai
  • Installation(官方文檔):https://pydantic.dev/docs/ai/install/
需要開通或續費?AI 會員充值與全部商品 →

Nathaniel 的更多內容

  1. 01

    AI 學習路線:零基礎從哪開始,6 個階段、每階段該讀哪幾篇教學(2026)

    AI 學習路線怎麼走?給零基礎的人一條循序漸進的路徑:先選一個助手用順,再學提問,再用進日常工作,按需學做圖做影片,守住私隱與版權,最後進階自動化和編程。每個階段都配了本站對應的教學。

    其他 AI 工具0
  2. 02

    AI 瀏覽器有哪些:Perplexity Comet、Opera Neon、Dia、Brave Leo 與 Edge Copilot 的官方說法對照

    AI 瀏覽器有哪些?按官方頁面整理 Perplexity Comet、Opera Neon、Dia、Brave Leo 和 Edge 裏的 Copilot:官方自述的定位、支持的平台、免費還是訂閱,以及 Gemini、Claude 的 Chrome 方案和已停用的 ChatGPT Atlas。

    其他 AI 工具0
  3. 03

    即夢國際版 Dreamina 是什麼:官方站入口、能生成什麼、免費積分和模型(2026)

    即夢國際版 Dreamina 是什麼?官方站是 dreamina.capcut.com,是一個圖片、影片和數字人一體的 AI 創作平台。按官方首頁和 FAQ 講:能生成什麼、免費用戶每天 120 積分、列出的 Seedance 與 Seedream 模型,以及和國內即夢怎麼區分。

    其他 AI 工具0
  4. 04

    Kimi K3 Coding Plan 是什麼、怎麼用:Kimi Code 會員、模型 ID、套餐價格和額度規則

    Kimi K3 Coding Plan 是什麼?按 Kimi 官方文檔核對:官方現在叫 Kimi Code,是 Kimi 會員權益裏的編程服務,Plus 及以上才有;講 K3 等模型 ID、國內新套餐價格、三種客戶端、第三方工具接入和額度規則。

    Kimi0
  5. 05

    DeepSeek V4 Pro 和 Flash 的區別與 API 價格:官方價格頁逐項對照(高峰與空閒時段)

    DeepSeek V4 Pro 和 Flash 有什麼區別、API 怎麼收費?按 DeepSeek 官方價格頁(2026-10-19 查詢)列出兩個模型的版本、上下文、圖像理解、並發和每百萬 token 價格,說明高峰與空閒時段的計費差別和舊模型名怎麼處理。

    其他 AI 工具0
  6. 06

    GPT-6 Pro(Astra)怎麼用、哪些套餐有:怎麼選到 Pro 檔、用量限制和 Pro 三檔價格

    GPT-6 Pro(Astra)怎麼用、哪些套餐有?按 OpenAI 幫助中心核對:聊天裏 Pro 檔給 Pro 100、Pro 200、Business 和 Enterprise;Plus 在 Work 和 Codex 裏含 Astra。講怎麼選到、用量上限和官方 Pro 價格。

    ChatGPT0

同產品的其他教學

  1. 01

    AI圖片放大與高清修復:Midjourney、ChatGPT、Gemini 怎麼出高解像度圖

    AI 生成的圖不夠清晰,想打印或做大圖怎麼辦?本文按官方文檔講清 Midjourney 的 Subtle / Creative 放大和 HD 直出、Gemini 與 ChatGPT 的解像度選項、Flow 的影片放大,以及「AI 放大會編造細節」的注意事項。

    Gemini其他 AI 工具0
  2. 02

    AI影片運鏡提示詞大全:推拉搖移跟升降、環繞、甩鏡怎麼寫(中英對照)

    AI 影片的運鏡提示詞怎麼寫?本文按 Google 官方影片提示指南整理鏡頭運動、機位角度、鏡頭光學效果三張中英對照表,每個術語配效果說明和例句,並給出組合運鏡的寫法和常見翻車原因,適用於 Veo、即夢、可靈等工具。

    Gemini其他 AI 工具0
  3. 03

    AI 影片翻譯怎麼做:用 ElevenLabs 給影片自動配音翻譯、轉寫並生成字幕

    想把一段影片翻譯成另一種語言並保留原聲音色?本文按 ElevenLabs 官方文檔講清 Dubbing 自動配音翻譯的操作步驟、文件限制、免費檔水印與計費方式,以及用 Speech to Text 轉寫、在字幕編輯器裏調整並導出字幕的流程。

    其他 AI 工具0
  4. 04

    MCP Inspector 怎麼用:安裝、啟動命令、調試 MCP 伺服器與 v2 的變化

    MCP Inspector 是什麼、怎麼安裝和使用?按 MCP 官方文檔講清網頁、命令行、終端介面三種模式的啟動命令,怎麼連本地和遠程伺服器、怎麼傳環境變量,密鑰存在哪,以及 v2 相比舊教學在端口、令牌變量名和 Node 版本上的變化。

    Claude其他 AI 工具0
  5. 05

    MCP 的 stdio、SSE 和 Streamable HTTP 有什麼區別:本地與遠程 MCP 怎麼選

    MCP 配置裏的 stdio、sse、http 到底差在哪?按 MCP 官方規範講清兩種標準傳輸方式的工作原理、Streamable HTTP 與舊的 HTTP+SSE 的關係、會話與斷線續傳、規範對安全的硬性要求,以及本地伺服器和遠程伺服器各適合什麼場景。

    Claude其他 AI 工具0
  6. 06

    Midjourney 可以商用嗎:作品歸屬、商用條件與隱身模式

    Midjourney 生成的圖片和影片能不能商用、版權歸誰、公司用要什麼套餐、作品會不會被別人看到?本文按 Midjourney 服務條款逐條解釋,並補充中美對 AI 生成圖片版權的官方 / 司法觀點。

    其他 AI 工具0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~