跳转到内容

Bedrock

安装

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

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

配置

要使用 AWS Bedrock,您需要一个已启用 Bedrock 并拥有相应凭证的 AWS 账户。您可以直接使用 AWS 凭证,也可以使用预配置的 boto3 客户端。

BedrockModelName 包含可用的 Bedrock 模型列表,包括来自 Anthropic、Amazon、Cohere、Meta 和 Mistral 的模型。

环境变量

您可以将 AWS 凭证设置为环境变量(以及其他选项)。

export AWS_BEARER_TOKEN_BEDROCK='your-api-key'
# or:
export AWS_ACCESS_KEY_ID='your-access-key'
export AWS_SECRET_ACCESS_KEY='your-secret-key'
export AWS_DEFAULT_REGION='us-east-1'  # or your preferred region

然后您可以通过名称使用 BedrockConverseModel

from pydantic_ai import Agent

agent = Agent('bedrock:anthropic.claude-3-sonnet-20240229-v1:0')
...

或者仅使用模型名称直接初始化模型。

from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel

model = BedrockConverseModel('anthropic.claude-3-sonnet-20240229-v1:0')
agent = Agent(model)
...

自定义 Bedrock Runtime API

您可以通过添加额外参数来自定义 Bedrock Runtime API 调用,例如护栏配置性能设置。有关可配置参数的完整列表,请参阅 BedrockModelSettings 的文档。

customize_bedrock_model_settings.py
from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel, BedrockModelSettings

# Define Bedrock model settings with guardrail and performance configurations
bedrock_model_settings = BedrockModelSettings(
    bedrock_guardrail_config={
        'guardrailIdentifier': 'v1',
        'guardrailVersion': 'v1',
        'trace': 'enabled'
    },
    bedrock_performance_configuration={
        'latency': 'optimized'
    }
)


model = BedrockConverseModel(model_name='us.amazon.nova-pro-v1:0')

agent = Agent(model=model, model_settings=bedrock_model_settings)

provider 参数

您可以通过 provider 参数提供一个自定义的 BedrockProvider。当您想直接指定凭证或使用自定义 boto3 客户端时,这非常有用。

from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel
from pydantic_ai.providers.bedrock import BedrockProvider

# Using AWS credentials directly
model = BedrockConverseModel(
    'anthropic.claude-3-sonnet-20240229-v1:0',
    provider=BedrockProvider(
        region_name='us-east-1',
        aws_access_key_id='your-access-key',
        aws_secret_access_key='your-secret-key',
    ),
)
agent = Agent(model)
...

您也可以传递一个预配置的 boto3 客户端。

import boto3

from pydantic_ai import Agent
from pydantic_ai.models.bedrock import BedrockConverseModel
from pydantic_ai.providers.bedrock import BedrockProvider

# Using a pre-configured boto3 client
bedrock_client = boto3.client('bedrock-runtime', region_name='us-east-1')
model = BedrockConverseModel(
    'anthropic.claude-3-sonnet-20240229-v1:0',
    provider=BedrockProvider(bedrock_client=bedrock_client),
)
agent = Agent(model)
...