PydanticAI:建立生產就緒型人工智慧應用程式的綜合指南
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。
