跳转到内容

Google

GoogleModel 是一个在底层使用 google-genai 包,通过 Generative Language API 和 Vertex AI 访问 Google Gemini 模型的模型。

安装

要使用 GoogleModel,您需要安装 pydantic-ai,或者安装带有 google 可选组的 pydantic-ai-slim

pip install "pydantic-ai-slim[google]"
uv add "pydantic-ai-slim[google]"

配置

GoogleModel 允许您通过它们的 Generative Language API (generativelanguage.googleapis.com) 或 Vertex AI API (*-aiplatform.googleapis.com) 来使用 Google 的 Gemini 模型。

API 密钥 (Generative Language API)

要通过 Generative Language API 使用 Gemini,请访问 aistudio.google.com 并创建一个 API 密钥。

获取 API 密钥后,将其设置为环境变量。

export GOOGLE_API_KEY=your-api-key

然后,您可以通过显式创建一个 provider 来使用 GoogleModel

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel
from pydantic_ai.providers.google import GoogleProvider

provider = GoogleProvider(api_key='your-api-key')
model = GoogleModel('gemini-1.5-flash', provider=provider)
agent = Agent(model)
...

Vertex AI (企业/云)

如果您是企业用户,可以使用 google-vertex provider 和 GoogleModel 来通过 Vertex AI 访问 Gemini。

与 Generative Language API 相比,此接口具有许多优势:

  1. Vertex AI API 提供了更多的企业级就绪保证。
  2. 您可以通过 Vertex AI 购买预配吞吐量来保证容量。
  3. 如果您在 GCP 内部运行 Pydantic AI,则无需设置身份验证,它应该能“直接运行”。
  4. 您可以决定使用哪个区域,这从监管角度看可能很重要,并且可能改善延迟。

最大的缺点是,对于本地开发,您可能需要创建和配置一个“服务账号”,这可能很难正确设置。

无论您使用哪种身份验证方式,都需要在您的 GCP 账户中启用 Vertex AI。

要使用 Vertex AI,您可能需要设置应用默认凭据或使用服务账号。您还可以指定区域。

应用默认凭据

如果您已安装并配置了 gcloud CLI,您可以使用:

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel
from pydantic_ai.providers.google import GoogleProvider

provider = GoogleProvider(vertexai=True)
model = GoogleModel('gemini-1.5-flash', provider=provider)
agent = Agent(model)
...

服务账号

要使用服务账号 JSON 文件:

google_model_service_account.py
from google.oauth2 import service_account

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel
from pydantic_ai.providers.google import GoogleProvider

credentials = service_account.Credentials.from_service_account_file(
    'path/to/service-account.json',
    scopes=['https://www.googleapis.com/auth/cloud-platform'],
)
provider = GoogleProvider(credentials=credentials, project='your-project-id')
model = GoogleModel('gemini-1.5-flash', provider=provider)
agent = Agent(model)
...

自定义位置

在使用 Vertex AI 时,您可以指定位置:

google_model_location.py
from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel
from pydantic_ai.providers.google import GoogleProvider

provider = GoogleProvider(vertexai=True, location='asia-east1')
model = GoogleModel('gemini-1.5-flash', provider=provider)
agent = Agent(model)
...

Provider 参数

您可以使用 provider 参数提供一个自定义的 GoogleProvider 实例,以配置高级客户端选项,例如设置自定义的 base_url

如果您正在使用与 Google Generative Language API 兼容的自定义端点,这会很有用。

from google.genai import Client
from google.genai.types import HttpOptions

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel
from pydantic_ai.providers.google import GoogleProvider

client = Client(
    api_key='gemini-custom-api-key',
    http_options=HttpOptions(base_url='gemini-custom-base-url'),
)
provider = GoogleProvider(client=client)
model = GoogleModel('gemini-1.5-flash', provider=provider)
agent = Agent(model)
...

模型设置

您可以使用 GoogleModelSettings 自定义模型行为。

from google.genai.types import HarmBlockThreshold, HarmCategory

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel, GoogleModelSettings

settings = GoogleModelSettings(
    temperature=0.2,
    max_tokens=1024,
    google_thinking_config={'thinking_budget': 2048},
    google_safety_settings=[
        {
            'category': HarmCategory.HARM_CATEGORY_HATE_SPEECH,
            'threshold': HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        }
    ]
)
model = GoogleModel('gemini-1.5-flash')
agent = Agent(model, model_settings=settings)
...

有关安全设置的更多信息,请参阅 Gemini API 文档,有关思考配置的信息也请参阅该文档。

文档、图像、音频和视频输入

GoogleModel 支持多模态输入,包括文档、图像、音频和视频。有关详细信息和示例,请参阅输入文档

模型设置

您可以使用 GoogleModelSettings 类自定义模型请求。

禁用思考

您可以通过在 google_thinking_config 上将 thinking_budget 设置为 0 来禁用思考功能。

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel, GoogleModelSettings

model_settings = GoogleModelSettings(google_thinking_config={'thinking_budget': 0})
model = GoogleModel('gemini-2.0-flash')
agent = Agent(model, model_settings=model_settings)
...

有关思考功能的更多信息,请查阅 Gemini API 文档

安全设置

您可以通过设置 google_safety_settings 字段来自定义安全设置。

from google.genai.types import HarmBlockThreshold, HarmCategory

from pydantic_ai import Agent
from pydantic_ai.models.google import GoogleModel, GoogleModelSettings

model_settings = GoogleModelSettings(
    google_safety_settings=[
        {
            'category': HarmCategory.HARM_CATEGORY_HATE_SPEECH,
            'threshold': HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        }
    ]
)
model = GoogleModel('gemini-2.0-flash')
agent = Agent(model, model_settings=model_settings)
...

有关安全设置的更多信息,请参阅 Gemini API 文档