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 BedrockGoogle 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 應用程式能靈活適應多變的外部服務狀況,始終提供可靠的回應。