diff --git a/docs/api/providers.md b/docs/api/providers.md index 5aecab148a..f5b23ed8d7 100644 --- a/docs/api/providers.md +++ b/docs/api/providers.md @@ -4,6 +4,8 @@ ::: pydantic_ai.providers.gateway.gateway_provider +::: pydantic_ai.providers.anthropic.AnthropicProvider + ::: pydantic_ai.providers.google ::: pydantic_ai.providers.openai diff --git a/docs/evals.md b/docs/evals.md index 94212fcebe..717ddb7dc3 100644 --- a/docs/evals.md +++ b/docs/evals.md @@ -1,3 +1,7 @@ +--- +title: Pydantic Evals +--- + # Pydantic Evals **Pydantic Evals** is a powerful evaluation framework for systematically testing and evaluating AI systems, from simple LLM calls to complex multi-agent applications. diff --git a/docs/models/anthropic.md b/docs/models/anthropic.md index 81ed245de6..4a576622a6 100644 --- a/docs/models/anthropic.md +++ b/docs/models/anthropic.md @@ -78,6 +78,75 @@ agent = Agent(model) ... ``` +## Cloud Platform Integrations + +You can use Anthropic models through cloud platforms by passing a custom client to [`AnthropicProvider`][pydantic_ai.providers.anthropic.AnthropicProvider]. + +### AWS Bedrock + +To use Claude models via [AWS Bedrock](https://aws.amazon.com/bedrock/claude/), follow the [Anthropic documentation](https://docs.anthropic.com/en/api/claude-on-amazon-bedrock) on how to set up an `AsyncAnthropicBedrock` client and then pass it to `AnthropicProvider`: + +```python {test="skip"} +from anthropic import AsyncAnthropicBedrock + +from pydantic_ai import Agent +from pydantic_ai.models.anthropic import AnthropicModel +from pydantic_ai.providers.anthropic import AnthropicProvider + +bedrock_client = AsyncAnthropicBedrock() # Uses AWS credentials from environment +provider = AnthropicProvider(anthropic_client=bedrock_client) +model = AnthropicModel('us.anthropic.claude-sonnet-4-5-20250929-v1:0', provider=provider) +agent = Agent(model) +... +``` + +!!! note "Bedrock vs BedrockConverseModel" + This approach uses Anthropic's SDK with AWS Bedrock credentials. For an alternative using AWS SDK (boto3) directly, see [`BedrockConverseModel`](bedrock.md). + +### Google Vertex AI + +To use Claude models via [Google Cloud Vertex AI](https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude), follow the [Anthropic documentation](https://docs.anthropic.com/en/api/claude-on-vertex-ai) on how to set up an `AsyncAnthropicVertex` client and then pass it to `AnthropicProvider`: + +```python {test="skip"} +from anthropic import AsyncAnthropicVertex + +from pydantic_ai import Agent +from pydantic_ai.models.anthropic import AnthropicModel +from pydantic_ai.providers.anthropic import AnthropicProvider + +vertex_client = AsyncAnthropicVertex(region='us-east5', project_id='your-project-id') +provider = AnthropicProvider(anthropic_client=vertex_client) +model = AnthropicModel('claude-sonnet-4-5', provider=provider) +agent = Agent(model) +... +``` + +!!! note "Vertex vs GoogleModel" + This approach uses Anthropic's SDK with Vertex AI credentials. For an alternative using Google's Vertex AI SDK directly, see [`GoogleModel`](google.md). + +### Microsoft Foundry + +To use Claude models via [Microsoft Foundry](https://ai.azure.com/), follow the [Anthropic documentation](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) on how to set up an `AsyncAnthropicFoundry` client and then pass it to `AnthropicProvider`: + +```python {test="skip"} +from anthropic import AsyncAnthropicFoundry + +from pydantic_ai import Agent +from pydantic_ai.models.anthropic import AnthropicModel +from pydantic_ai.providers.anthropic import AnthropicProvider + +foundry_client = AsyncAnthropicFoundry( + api_key='your-foundry-api-key', # Or set ANTHROPIC_FOUNDRY_API_KEY + resource='your-resource-name', +) +provider = AnthropicProvider(anthropic_client=foundry_client) +model = AnthropicModel('claude-sonnet-4-5', provider=provider) +agent = Agent(model) +... +``` + +See [Anthropic's Microsoft Foundry documentation](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry) for setup instructions including Entra ID authentication. + ## Prompt Caching Anthropic supports [prompt caching](https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching) to reduce costs by caching parts of your prompts. Pydantic AI provides four ways to use prompt caching: diff --git a/pydantic_ai_slim/pydantic_ai/providers/anthropic.py b/pydantic_ai_slim/pydantic_ai/providers/anthropic.py index 2afdbeeef6..28a6be399b 100644 --- a/pydantic_ai_slim/pydantic_ai/providers/anthropic.py +++ b/pydantic_ai_slim/pydantic_ai/providers/anthropic.py @@ -15,7 +15,7 @@ from .._json_schema import JsonSchema, JsonSchemaTransformer try: - from anthropic import AsyncAnthropic, AsyncAnthropicBedrock, AsyncAnthropicVertex + from anthropic import AsyncAnthropic, AsyncAnthropicBedrock, AsyncAnthropicFoundry, AsyncAnthropicVertex except ImportError as _import_error: raise ImportError( 'Please install the `anthropic` package to use the Anthropic provider, ' @@ -23,7 +23,7 @@ ) from _import_error -AsyncAnthropicClient: TypeAlias = AsyncAnthropic | AsyncAnthropicBedrock | AsyncAnthropicVertex +AsyncAnthropicClient: TypeAlias = AsyncAnthropic | AsyncAnthropicBedrock | AsyncAnthropicFoundry | AsyncAnthropicVertex class AnthropicProvider(Provider[AsyncAnthropicClient]): @@ -67,8 +67,12 @@ def __init__( api_key: The API key to use for authentication, if not provided, the `ANTHROPIC_API_KEY` environment variable will be used if available. base_url: The base URL to use for the Anthropic API. - anthropic_client: An existing [`AsyncAnthropic`](https://github.com/anthropics/anthropic-sdk-python) - client to use. If provided, the `api_key` and `http_client` arguments will be ignored. + anthropic_client: An existing Anthropic client to use. Accepts + [`AsyncAnthropic`](https://github.com/anthropics/anthropic-sdk-python), + [`AsyncAnthropicBedrock`](https://docs.anthropic.com/en/api/claude-on-amazon-bedrock), + [`AsyncAnthropicFoundry`](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry), or + [`AsyncAnthropicVertex`](https://docs.anthropic.com/en/api/claude-on-vertex-ai). + If provided, the `api_key` and `http_client` arguments will be ignored. http_client: An existing `httpx.AsyncClient` to use for making HTTP requests. """ if anthropic_client is not None: