Pydantic AI 支援的模型與切換
Pydantic AI 框架的核心設計理念之一就是「模型不可知 (Model-agnostic)」。這意味著你可以在不改變上層業務邏輯或 Agent 設定的情況下,輕鬆切換底層使用的 AI 模型。
這在實務上帶來極大的好處:當某家提供商 (Provider) 出現連線異常,或是另一家廠商推出了性價比更高的新模型時,你可以透過修改一行設定,無痛切換過去。
支援的模型提供者
Pydantic AI 原生支援市面上絕大多數的主流模型與提供者,包含但不限於:
- OpenAI (例如:
gpt-4o,gpt-4o-mini,o1-preview) - Anthropic (例如:
claude-3-5-sonnet-latest,claude-3-haiku-20240307) - Google Gemini (例如:
gemini-1.5-pro,gemini-1.5-flash) - Groq (提供超高速推理的開源模型端點)
- Mistral
- Ollama (支援在本地端運行的開源模型)
- AWS Bedrock 與 Google Vertex AI (企業級的雲端模型服務)
指定模型的方法
在 Pydantic AI 中,指定要使用的模型有兩種主要方式:使用模型字串名稱與使用 Model 實例。
1. 使用模型字串名稱 (String Name)
最簡單且最常用的方式,是在實例化 Agent 時直接傳入一個特定格式的字串。字串的格式通常為 provider:model-name,但如果框架能夠自動辨識,也可以省略 provider。
from pydantic_ai import Agent
# 完整格式: provider:model_name
agent1 = Agent('openai:gpt-4o')
agent2 = Agent('google-gla:gemini-1.5-flash')
agent3 = Agent('anthropic:claude-3-5-sonnet-latest')
# 省略 provider:如果是眾所周知的模型,可以直接寫模型名稱
agent_auto = Agent('gpt-4o-mini')
使用字串名稱時,Pydantic AI 會自動尋找環境變數中對應的 API Key。例如,當你使用 openai:gpt-4o 時,框架會預期環境變數中已經設定了 OPENAI_API_KEY。
2. 使用 Model 實例 (Model Instance)
如果你需要更細緻的設定(例如:自訂 API Key、改變底層 HTTP Client 設定、或是自訂 API Base URL 等),你可以直接匯入對應的 Model 類別並建立實例,然後再將實例傳遞給 Agent。
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIModel
# 建立 OpenAIModel 實例,並明確指定 API Key
# 這種做法適合在沒有將金鑰放入環境變數的場景
my_model = OpenAIModel('gpt-4o', api_key='your-api-key-here')
# 將建立好的 Model 實例傳入 Agent
agent = Agent(my_model)
result = agent.run_sync('請介紹一下量子力學的概念。')
print(result.data)
退一步模型機制 (Fallback Models)
在生產環境中,即使是最大的模型服務商也有可能發生不穩定的情況(例如 Rate Limit 或是服務停機)。Pydantic AI 提供了一套極其簡便的 Fallback 機制,稱為 FallbackModel。
你可以將多個模型串列在一起,當首選模型發生錯誤或連線逾時,框架會自動嘗試呼叫下一個備用模型,藉此大幅提升應用程式的穩定度 (Resilience)。
from pydantic_ai import Agent
from pydantic_ai.models.fallback import FallbackModel
# 定義一個 FallbackModel,由多個模型組成一個陣列
# 框架會優先嘗試第一個,如果失敗,則依序嘗試後續模型
resilient_model = FallbackModel(
'openai:gpt-4o',
'anthropic:claude-3-5-sonnet-latest',
'google-gla:gemini-1.5-pro'
)
# 使用具備備用機制的模型來建立 Agent
agent = Agent(resilient_model)
result = agent.run_sync('今天天氣如何?')
print(result.data)
透過簡單的設定切換以及強大的 Fallback 機制,Pydantic AI 可以確保你的 AI 應用程式能靈活適應多變的外部服務狀況,始終提供可靠的回應。