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

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。

pythonexecutionistheprocessoftransformingpypythoncodeintoExecutablestructions.1)InternterPreterReadSthecode,ConvertingTingitIntObyTecode,whepythonvirtualmachine(pvm)theglobalinterpreterpreterpreterpreterlock(gil)the thepythonvirtualmachine(pvm)

Python的關鍵特性包括:1.語法簡潔易懂,適合初學者;2.動態類型系統,提高開發速度;3.豐富的標準庫,支持多種任務;4.強大的社區和生態系統,提供廣泛支持;5.解釋性,適合腳本和快速原型開發;6.多範式支持,適用於各種編程風格。

Python是解釋型語言,但也包含編譯過程。 1)Python代碼先編譯成字節碼。 2)字節碼由Python虛擬機解釋執行。 3)這種混合機制使Python既靈活又高效,但執行速度不如完全編譯型語言。

UseeAforloopWheniteratingOveraseQuenceOrforAspecificnumberoftimes; useAwhiLeLoopWhenconTinuingUntilAcIntiment.forloopsareIdealForkNownsences,而WhileLeleLeleLeleLeleLoopSituationSituationsItuationsItuationSuationSituationswithUndEtermentersitations。

pythonloopscanleadtoerrorslikeinfiniteloops,modifyingListsDuringteritation,逐個偏置,零indexingissues,andnestedloopineflinefficiencies


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

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

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

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