首頁 > 後端開發 > Python教學 > PydanticAI:建立生產就緒型人工智慧應用程式的綜合指南

PydanticAI:建立生產就緒型人工智慧應用程式的綜合指南

Barbara Streisand
發布: 2024-12-30 08:54:09
原創
239 人瀏覽過

PydanticAI: A Comprehensive Guide to Building Production-Ready AI Applications

PydanticAI 是一個強大的 Python 框架,旨在簡化使用生成式 AI 的生產級應用程式的開發。它由廣泛使用的數據驗證庫 Pydantic 背後的同一團隊構建,旨在將 FastAPI 的創新和人體工學設計帶入人工智慧應用程式開發領域。 PydanticAI 專注於類型安全、模組化以及與其他 Python 工具的無縫整合

核心概念

PydanticAI 圍繞著幾個關鍵概念:

代理商

代理程式是與大型語言模型 (LLM) 互動的主要介面。代理充當各種組件的容器,包括:

  • 系統提示:LLM說明,定義為靜態字串或動態函數。
  • 函數工具:LLM 可以呼叫以取得其他資訊或執行操作的函數。
  • 結構化結果類型:LLM 在運行結束時必須傳回的資料類型。
  • 相依類型:系統提示函數、工具和結果驗證器可能使用的資料或服務。
  • LLM 模型:代理程式將使用的 LLM,可以在代理建立時或執行時設定。

代理專為可重複使用性而設計,通常實例化一次並在整個應用程式中重複使用。

系統提示

系統提示是開發者提供給LLM的說明。他們可以是:

  • 靜態系統提示:在建立代理程式時定義,使用 Agent 建構子的 system_prompt 參數。
  • 動態系統提示:由@agent.system_prompt修飾的函數定義。它們可以透過 RunContext 物件存取運行時信息,例如依賴項。

單一代理可以使用靜態和動態系統提示,這些提示會依照執行時間定義的順序附加。

功能工具

功能工具使法學碩士能夠存取外部資訊或執行系統提示本身不可用的操作。工具可以透過多種方式註冊:

  • @agent.tool 裝飾器:適用於需要透過 RunContext 存取代理程式上下文的工具。
  • @agent.tool_plain 裝飾器:適用於不需要存取代理程式上下文的工具。
  • Agent 建構函式中的
  • tools 關鍵字參數:可以採用 Tool 類別的普通函式或實例,以便更好地控制工具定義。

工具參數是從函數簽章中提取的,用於建立工具的 JSON 模式。函數的文檔字串用於產生工具的描述以及模式中的參數描述。

依賴關係

相依性透過相依性注入系統向代理程式的系統提示、工具和結果驗證器提供資料和服務。依賴項是透過 RunContext 物件存取的。它們可以是任何 Python 類型,但資料類別是管理多個相依性的便捷方法。

結果

結果是代理運行傳回的最終值。它們包裝在 RunResult(用於同步和非同步運行)或 StreamedRunResult(用於串流運行)中,提供對使用資料和訊息歷史記錄的存取。結果可以是純文字或結構化數據,並使用 Pydantic 進行驗證。

透過 @agent.result_validator 裝飾器新增的結果驗證器提供了一種添加進一步驗證邏輯的方法,特別是當驗證需要 IO 並且是非同步時。

主要特點

PydanticAI 擁有多項關鍵功能,使其成為人工智慧應用程式開發的絕佳選擇:

  • 模型不可知論:PydanticAI 支援各種 LLM,包括 OpenAI、Anthropic、Gemini、Ollama、Groq 和 Mistral。它還提供了一個簡單的介面來實現對其他模型的支援。
  • 類型安全性:旨在與 mypy 和 Pyright 等靜態類型檢查器無縫協作。它允許對依賴項和結果類型進行類型檢查。
  • 以 Python 為中心的設計:利用熟悉的 Python 控制流和代理組合來建立 AI 項目,從而輕鬆應用標準 Python 實踐。
  • 結構化反應:使用 Pydantic 驗證和建構模型輸出,確保一致的反應。
  • 依賴注入系統:提供依賴注入系統,為代理的元件提供資料和服務,增強可測試性和迭代開發。
  • 串流回應:支援串流 LLM 輸出並立即驗證,從而獲得快速、準確的結果。

與代理商合作

運行代理

代理可以透過多種方式運作:

  • run_sync():用於同步執行。
  • run():用於非同步執行。
  • run_stream():用於串流回應。

對話

代理程式運行可能代表整個對話,但對話也可以由多次運行組成,特別是在維護互動之間的狀態時。您可以使用 message_history 參數傳遞先前執行的訊息以繼續對話。

使用限制

PydanticAI 提供了一個 settings.UsageLimits 結構來限制令牌和請求的數量。您可以透過 use_limits 參數將這些設定套用到運行函數。

模型設定

settings.ModelSettings 結構可讓您透過溫度、max_tokens 和逾時等參數微調模型行為。您可以透過運行函數中的 model_settings 參數來應用這些。

功能工具詳解

工具註冊

可以使用@agent.tool裝飾器(對於需要上下文的工具)、@agent.tool_plain裝飾器(對於沒有上下文的工具)或透過Agent建構函式中的tools參數來註冊工具。

工具架構

參數描述從文件字串中提取並新增到工具的 JSON 架構中。如果工具具有可以表示為 JSON 模式中的物件的單一參數,則該模式將簡化為該物件。

動態工具

可以使用準備函數來自訂工具,該函數在每個步驟中呼叫以修改工具定義或從該步驟中省略工具。

訊息和聊天記錄

訪問訊息

代理程式執行期間​​交換的訊息可以透過 RunResult 和 StreamedRunResult 物件上的 all_messages() 和 new_messages() 方法存取。

訊息重複使用

訊息可以傳遞到 message_history 參數以在多個代理程式運行之間繼續對話。當message_history設定且不為空時,不會產生新的系統提示。

訊息格式

訊息格式與模型無關,允許訊息在不同的代理中使用,或與使用不同模型的相同代理一起使用。

調試與監控

派丹提克原火

PydanticAI 與 Pydantic Logfire 集成,這是一個可觀察平台,可讓您監控和調試整個應用程式。 Logfire 可用於:

  • 即時偵錯:即時查看應用程式中發生的情況。
  • 監控應用程式效能:使用 SQL 查詢和儀表板。

要將 PydanticAI 與 Logfire 一起使用,請使用 logfire 可選組進行安裝:pip install 'pydantic-ai[logfire]'。然後,您需要設定 Logfire 專案並驗證您的環境。

安裝和設定

安裝

PydanticAI 可以使用 pip 安裝:

也可以使用精簡安裝來使用特定型號,例如:

日誌火集成

要將 PydanticAI 與 Logfire 一起使用,請使用 logfire 可選組安裝它:

範例

範例可作為單獨的包裝提供:

測試與評估

單元測試

單元測試驗證您的應用程式程式碼的行為是否符合預期。對於 PydanticAI,請遵循以下策略:

  • 使用 pytest 作為您的測試工具。
  • 使用 TestModel 或 FunctionModel 取代您的實際模型。
  • 使用 Agent.override 取代應用程式邏輯中的模型。
  • 全域設定 ALLOW_MODEL_REQUESTS=False 以防止意外呼叫非測試模型。

埃瓦爾斯

評估用於衡量 LLM 的表現,更像是基準測試而不是單元測試。評估的重點是衡量法學碩士在特定申請中的表現。這可以透過端到端測試、綜合獨立測試、使用 LLM 評估 LLM 或透過測量生產中的代理性能來完成。

範例用例

PydanticAI 可用於多種用例:

  • 輪盤賭輪:使用具有整數依賴項和布林結果的代理程式模擬輪盤賭輪。
  • 聊天應用程式:建立多次運行的聊天應用程序,使用 message_history 傳遞先前的消息。
  • 銀行支援代理:使用工具、相依性注入和結構化回應為銀行建構支援代理。
  • 天氣預報:建立一個應用程序,使用函數工具和依賴項根據位置和日期返回天氣預報。
  • SQL 產生:根據使用者提示產生 SQL 查詢,並使用結果驗證器進行驗證。

結論

PydanticAI 提供了一個強大而靈活的框架,用於開發人工智慧應用程序,重點強調類型安全性和模組化。使用 Pydantic 進行資料驗證和結構化,再加上其依賴注入系統,使其成為建構可靠且可維護的人工智慧應用程式的理想工具。憑藉其廣泛的 LLM 支援以及與 Pydantic Logfire 等工具的無縫集成,PydanticAI 使開發人員能夠高效構建強大的、可用於生產的 AI 驅動專案。

以上是PydanticAI:建立生產就緒型人工智慧應用程式的綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板