碼住!Pydantic AI智能體框架,輕松打造AI Agent
大型語言模型(LLMs)降低了人工智能的門檻,使其觸手可及。但要開發成熟的的AI系統,我們經常要面對類型安全、依賴管理、錯誤處理等一系列挑戰。現在Pydantic AI能夠解決這些問題,這是一個創新的Python框架,能夠簡化生產級AI智能體的開發。
得益于Pydantic強大的類型系統,這個框架成為了開發者構建既可靠又易于維護的AI應用的理想工具。本文為大家分析Pydantic AI框架的價值和功能,以及如何利用其來構建可靠的AI應用。
1.Pydantic AI簡介
Pydantic AI是專為Python開發者設計的框架,架起了開發者與大型語言模型(LLMs)之間的橋梁,使智能體的創建更加簡單便捷,能夠依據系統指令、函數調用以及結構化輸出來完成既定任務。
核心功能包括:
- 類型安全:確保所有輸入和輸出的數據類型都經過嚴格驗證,從而提高代碼的穩定性和可靠性。
- 靈活設計:支持動態系統提示、可復用的工具以及模塊化的架構設計,使得智能體的開發更加靈活和高效。
- 廣泛兼容:能夠與多種LLMs無縫協作,包括但不限于OpenAI、Anthropic和Gemini。
- 錯誤處理:內建了重試機制和結構化的異常管理,有效提升了智能體的魯棒性和錯誤恢復能力。
2.選擇Pydantic AI的理由
便捷開發:Pydantic AI讓開發者能夠更加集中精力于業務邏輯,將復雜的底層細節交給框架來處理。
增強可靠性:框架通過類型驗證確保輸入、輸出和依賴的準確性,有效預防了運行時錯誤。
生產級支持:內置了對異步操作、實時監控和調試的支持,為開發生產級別的應用提供了強大的工具。
3.安裝指南
安裝Pydantic AI非常簡單快捷,只需在命令行中執行以下命令:
pip install pydantic-ai
4.智能體定義
在Pydantic AI框架中,智能體是一個集成了多個組件的單元:
- 系統提示:為LLMs提供行為指導的規則。
- 依賴管理:動態注入的、類型安全的依賴項。
- 函數工具:針對特定任務設計的可復用功能。
- 結構化輸出:使用Pydantic模型定義輸出數據的格式。
5.示例:創建簡單的智能體
以下是使用Pydantic AI創建一個響應用戶查詢的智能體的基本示例:
from pydantic_ai import Agent, RunContext
from pydantic import BaseModel
class QueryResponse(BaseModel):
answer: str
confidence: float
agent = Agent(
"openai:gpt-4",
result_type=QueryResponse,
system_prompt="為用戶提供簡潔的答案。"
)
@agent.tool
asyncdef provide_context(ctx: RunContext[str]) -> str:
returnf"Context: {ctx.deps}"
result = agent.run_sync("印度的首都是哪里?", deps="General Knowledge")
print(result.data)
輸出:
answer='印度的首都是新德里。' confidence=0.9
6.關鍵特性
6.1 運行智能體
Pydantic AI框架提供了三種執行智能體的方法:
- 異步執行(agent.run()?):這是一個異步協程,返回包含完整響應的?RunResult對象。
from pydantic_ai import Agent
agent = Agent("openai:gpt-4", system_prompt="成為一個有用的助手。")
result = await agent.run("你好,你好嗎?")
print(result.data) # 輸出響應
- 同步執行(agent.run_sync()?):這是?agent.run()的同步版本,會阻塞直到獲取響應。
result = agent.run_sync("天氣怎么樣?")
print(result.data)
- 流式執行(agent.run_stream()?):以流的形式傳輸結果,允許逐步處理輸出。
async with agent.run_stream("給我講個故事。") as result:
async for text in result.stream_text():
print(text) # 輸出流式文本
6.2 智能體運行與對話管理
智能體的單次運行可以涵蓋整個對話流程,或者作為更長篇互動的一部分。具體應用場景如下:
- 單次運行對話:在一個會話中完整捕獲所有交互消息。
- 多次運行對話:在不同的運行實例間保持對話狀態,適用于構建復雜的對話流程。
以下是如何訪問RunResult中的消息示例:
print(result.all_messages()) # 顯示所有消息,包括系統和用戶的提示
print(result.new_messages()) # 顯示新消息,不包括系統的提示
6.3 系統提示
系統提示是指導智能體行為的關鍵,可以是靜態的或動態的:
- 靜態提示:在智能體初始化時設定,為智能體提供一貫的行為準則。
agent = Agent("openai:gpt-4", system_prompt="成為一個有用的老師。")
- 動態提示:在智能體運行時根據上下文進行調整,使智能體能夠根據不同情境靈活響應。
@agent.system_prompt
def dynamic_prompt(ctx):
return f"為{ctx.user_role}用戶提供答案。"
6.4 函數工具的應用
函數工具是擴展智能體功能的重要手段,可以是靜態的或動態的:
- 靜態工具:通過@agent.tool裝飾器注冊,為智能體提供固定的功能。
@agent.tool
def current_date():
return datetime.now().isoformat()
- 動態工具:根據每次運行的具體情況定制,通過prepare函數來決定工具的行為。
@agent.tool(prepare=lambda ctx, tool: tool if ctx.user_query == "specific" else None)
def fetch_data():
return "根據上下文過濾數據"
6.5 智能體的自我修正
智能體具備自我修正的能力,能夠通過處理驗證錯誤和重試失敗的操作來優化執行過程:
- 驗證重試:當數據驗證未通過時,智能體會自動嘗試重新執行。
from pydantic_ai import ModelRetry
@agent.tool
def validate_data(ctx):
if not ctx.input_data:
raise ModelRetry("數據缺失,正在重試...")
- 重試次數設置:可以對智能體進行全局或工具級別的重試次數配置。
agent = Agent("openai:gpt-4", retry_count=3)
7.結語
Pydantic AI正在重塑開發者構建AI智能體的方式。它專注于提供類型安全、模塊化設計和用戶友好的體驗,是開發可靠且即插即用的AI應用的必備工具。
