Skip to content

Commit 7e74268

Browse files
authored
Add claude-sonnet-4-5 to known model names (#3033)
1 parent 0242b66 commit 7e74268

File tree

5 files changed

+30
-101
lines changed

5 files changed

+30
-101
lines changed

pydantic_ai_slim/pydantic_ai/models/__init__.py

Lines changed: 2 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@
6565
'anthropic:claude-opus-4-20250514',
6666
'anthropic:claude-sonnet-4-0',
6767
'anthropic:claude-sonnet-4-20250514',
68+
'anthropic:claude-sonnet-4-5',
69+
'anthropic:claude-sonnet-4-5-20250929',
6870
'bedrock:amazon.titan-tg1-large',
6971
'bedrock:amazon.titan-text-lite-v1',
7072
'bedrock:amazon.titan-text-express-v1',
@@ -121,23 +123,6 @@
121123
'cerebras:qwen-3-32b',
122124
'cerebras:qwen-3-coder-480b',
123125
'cerebras:qwen-3-235b-a22b-thinking-2507',
124-
'claude-3-5-haiku-20241022',
125-
'claude-3-5-haiku-latest',
126-
'claude-3-5-sonnet-20240620',
127-
'claude-3-5-sonnet-20241022',
128-
'claude-3-5-sonnet-latest',
129-
'claude-3-7-sonnet-20250219',
130-
'claude-3-7-sonnet-latest',
131-
'claude-3-haiku-20240307',
132-
'claude-3-opus-20240229',
133-
'claude-3-opus-latest',
134-
'claude-4-opus-20250514',
135-
'claude-4-sonnet-20250514',
136-
'claude-opus-4-0',
137-
'claude-opus-4-1-20250805',
138-
'claude-opus-4-20250514',
139-
'claude-sonnet-4-0',
140-
'claude-sonnet-4-20250514',
141126
'cohere:c4ai-aya-expanse-32b',
142127
'cohere:c4ai-aya-expanse-8b',
143128
'cohere:command',
@@ -163,54 +148,6 @@
163148
'google-vertex:gemini-2.5-flash',
164149
'google-vertex:gemini-2.5-flash-lite',
165150
'google-vertex:gemini-2.5-pro',
166-
'gpt-3.5-turbo',
167-
'gpt-3.5-turbo-0125',
168-
'gpt-3.5-turbo-0301',
169-
'gpt-3.5-turbo-0613',
170-
'gpt-3.5-turbo-1106',
171-
'gpt-3.5-turbo-16k',
172-
'gpt-3.5-turbo-16k-0613',
173-
'gpt-4',
174-
'gpt-4-0125-preview',
175-
'gpt-4-0314',
176-
'gpt-4-0613',
177-
'gpt-4-1106-preview',
178-
'gpt-4-32k',
179-
'gpt-4-32k-0314',
180-
'gpt-4-32k-0613',
181-
'gpt-4-turbo',
182-
'gpt-4-turbo-2024-04-09',
183-
'gpt-4-turbo-preview',
184-
'gpt-4-vision-preview',
185-
'gpt-4.1',
186-
'gpt-4.1-2025-04-14',
187-
'gpt-4.1-mini',
188-
'gpt-4.1-mini-2025-04-14',
189-
'gpt-4.1-nano',
190-
'gpt-4.1-nano-2025-04-14',
191-
'gpt-4o',
192-
'gpt-4o-2024-05-13',
193-
'gpt-4o-2024-08-06',
194-
'gpt-4o-2024-11-20',
195-
'gpt-4o-audio-preview',
196-
'gpt-4o-audio-preview-2024-10-01',
197-
'gpt-4o-audio-preview-2024-12-17',
198-
'gpt-4o-audio-preview-2025-06-03',
199-
'gpt-4o-mini',
200-
'gpt-4o-mini-2024-07-18',
201-
'gpt-4o-mini-audio-preview',
202-
'gpt-4o-mini-audio-preview-2024-12-17',
203-
'gpt-4o-mini-search-preview',
204-
'gpt-4o-mini-search-preview-2025-03-11',
205-
'gpt-4o-search-preview',
206-
'gpt-4o-search-preview-2025-03-11',
207-
'gpt-5',
208-
'gpt-5-2025-08-07',
209-
'gpt-5-chat-latest',
210-
'gpt-5-mini',
211-
'gpt-5-mini-2025-08-07',
212-
'gpt-5-nano',
213-
'gpt-5-nano-2025-08-07',
214151
'grok:grok-4',
215152
'grok:grok-4-0709',
216153
'grok:grok-3',
@@ -271,22 +208,6 @@
271208
'moonshotai:kimi-latest',
272209
'moonshotai:kimi-thinking-preview',
273210
'moonshotai:kimi-k2-0711-preview',
274-
'o1',
275-
'o1-2024-12-17',
276-
'o1-mini',
277-
'o1-mini-2024-09-12',
278-
'o1-preview',
279-
'o1-preview-2024-09-12',
280-
'o1-pro',
281-
'o1-pro-2025-03-19',
282-
'o3',
283-
'o3-2025-04-16',
284-
'o3-deep-research',
285-
'o3-deep-research-2025-06-26',
286-
'o3-mini',
287-
'o3-mini-2025-01-31',
288-
'o3-pro',
289-
'o3-pro-2025-06-10',
290211
'openai:chatgpt-4o-latest',
291212
'openai:codex-mini-latest',
292213
'openai:gpt-3.5-turbo',

pydantic_ai_slim/pydantic_ai/models/anthropic.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555

5656
try:
57-
from anthropic import NOT_GIVEN, APIStatusError, AsyncStream
57+
from anthropic import NOT_GIVEN, APIStatusError, AsyncStream, omit as OMIT
5858
from anthropic.types.beta import (
5959
BetaBase64PDFBlockParam,
6060
BetaBase64PDFSourceParam,
@@ -285,18 +285,18 @@ async def _messages_create(
285285

286286
return await self.client.beta.messages.create(
287287
max_tokens=model_settings.get('max_tokens', 4096),
288-
system=system_prompt or NOT_GIVEN,
288+
system=system_prompt or OMIT,
289289
messages=anthropic_messages,
290290
model=self._model_name,
291-
tools=tools or NOT_GIVEN,
292-
tool_choice=tool_choice or NOT_GIVEN,
291+
tools=tools or OMIT,
292+
tool_choice=tool_choice or OMIT,
293293
stream=stream,
294-
thinking=model_settings.get('anthropic_thinking', NOT_GIVEN),
295-
stop_sequences=model_settings.get('stop_sequences', NOT_GIVEN),
296-
temperature=model_settings.get('temperature', NOT_GIVEN),
297-
top_p=model_settings.get('top_p', NOT_GIVEN),
294+
thinking=model_settings.get('anthropic_thinking', OMIT),
295+
stop_sequences=model_settings.get('stop_sequences', OMIT),
296+
temperature=model_settings.get('temperature', OMIT),
297+
top_p=model_settings.get('top_p', OMIT),
298298
timeout=model_settings.get('timeout', NOT_GIVEN),
299-
metadata=model_settings.get('anthropic_metadata', NOT_GIVEN),
299+
metadata=model_settings.get('anthropic_metadata', OMIT),
300300
extra_headers=extra_headers,
301301
extra_body=model_settings.get('extra_body'),
302302
)
@@ -763,6 +763,8 @@ def _map_server_tool_use_block(item: BetaServerToolUseBlock, provider_name: str)
763763
args=cast(dict[str, Any], item.input) or None,
764764
tool_call_id=item.id,
765765
)
766+
elif item.name in ('web_fetch', 'bash_code_execution', 'text_editor_code_execution'): # pragma: no cover
767+
raise NotImplementedError(f'Anthropic built-in tool {item.name!r} is not currently supported.')
766768
else:
767769
assert_never(item.name)
768770

pydantic_ai_slim/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ openai = ["openai>=1.107.2"]
7171
cohere = ["cohere>=5.18.0; platform_system != 'Emscripten'"]
7272
vertexai = ["google-auth>=2.36.0", "requests>=2.32.2"]
7373
google = ["google-genai>=1.31.0"]
74-
anthropic = ["anthropic>=0.61.0"]
74+
anthropic = ["anthropic>=0.69.0"]
7575
groq = ["groq>=0.25.0"]
7676
mistral = ["mistralai>=1.9.10"]
7777
bedrock = ["boto3>=1.39.0"]

tests/models/test_model_names.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ def get_model_names(model_name_type: Any) -> Iterator[str]:
5858
else:
5959
yield from get_model_names(arg)
6060

61-
anthropic_names = [f'anthropic:{n}' for n in get_model_names(AnthropicModelName)] + [
62-
n for n in get_model_names(AnthropicModelName) if n.startswith('claude')
63-
]
61+
anthropic_names = [f'anthropic:{n}' for n in get_model_names(AnthropicModelName)]
6462
cohere_names = [f'cohere:{n}' for n in get_model_names(CohereModelName)]
6563
google_names = [f'google-gla:{n}' for n in get_model_names(GeminiModelName)] + [
6664
f'google-vertex:{n}' for n in get_model_names(GeminiModelName)
@@ -69,9 +67,7 @@ def get_model_names(model_name_type: Any) -> Iterator[str]:
6967
groq_names = [f'groq:{n}' for n in get_model_names(GroqModelName)]
7068
moonshotai_names = [f'moonshotai:{n}' for n in get_model_names(MoonshotAIModelName)]
7169
mistral_names = [f'mistral:{n}' for n in get_model_names(MistralModelName)]
72-
openai_names = [f'openai:{n}' for n in get_model_names(OpenAIModelName)] + [
73-
n for n in get_model_names(OpenAIModelName) if n.startswith('o1') or n.startswith('gpt') or n.startswith('o3')
74-
]
70+
openai_names = [f'openai:{n}' for n in get_model_names(OpenAIModelName)]
7571
bedrock_names = [f'bedrock:{n}' for n in get_model_names(BedrockModelName)]
7672
deepseek_names = ['deepseek:deepseek-chat', 'deepseek:deepseek-reasoner']
7773
huggingface_names = [f'huggingface:{n}' for n in get_model_names(HuggingFaceModelName)]

uv.lock

Lines changed: 14 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)