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中文網其他相關文章!

本教程演示如何使用Python處理Zipf定律這一統計概念,並展示Python在處理該定律時讀取和排序大型文本文件的效率。 您可能想知道Zipf分佈這個術語是什麼意思。要理解這個術語,我們首先需要定義Zipf定律。別擔心,我會盡量簡化說明。 Zipf定律 Zipf定律簡單來說就是:在一個大型自然語言語料庫中,最頻繁出現的詞的出現頻率大約是第二頻繁詞的兩倍,是第三頻繁詞的三倍,是第四頻繁詞的四倍,以此類推。 讓我們來看一個例子。如果您查看美國英語的Brown語料庫,您會注意到最頻繁出現的詞是“th

Python 提供多種從互聯網下載文件的方法,可以使用 urllib 包或 requests 庫通過 HTTP 進行下載。本教程將介紹如何使用這些庫通過 Python 從 URL 下載文件。 requests 庫 requests 是 Python 中最流行的庫之一。它允許發送 HTTP/1.1 請求,無需手動將查詢字符串添加到 URL 或對 POST 數據進行表單編碼。 requests 庫可以執行許多功能,包括: 添加表單數據 添加多部分文件 訪問 Python 的響應數據 發出請求 首

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

處理嘈雜的圖像是一個常見的問題,尤其是手機或低分辨率攝像頭照片。 本教程使用OpenCV探索Python中的圖像過濾技術來解決此問題。 圖像過濾:功能強大的工具圖像過濾器

PDF 文件因其跨平台兼容性而廣受歡迎,內容和佈局在不同操作系統、閱讀設備和軟件上保持一致。然而,與 Python 處理純文本文件不同,PDF 文件是二進製文件,結構更複雜,包含字體、顏色和圖像等元素。 幸運的是,借助 Python 的外部模塊,處理 PDF 文件並非難事。本文將使用 PyPDF2 模塊演示如何打開 PDF 文件、打印頁面和提取文本。關於 PDF 文件的創建和編輯,請參考我的另一篇教程。 準備工作 核心在於使用外部模塊 PyPDF2。首先,使用 pip 安裝它: pip 是 P

本教程演示瞭如何利用Redis緩存以提高Python應用程序的性能,特別是在Django框架內。 我們將介紹REDIS安裝,Django配置和性能比較,以突出顯示BENE

自然語言處理(NLP)是人類語言的自動或半自動處理。 NLP與語言學密切相關,並與認知科學,心理學,生理學和數學的研究有聯繫。在計算機科學

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。