Skip to content

Commit 306c758

Browse files
author
adtyavrdhn
committed
Fold Files API beta detection into _get_betas_and_extra_headers
1 parent 10a4fe1 commit 306c758

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

‎pydantic_ai_slim/pydantic_ai/models/anthropic.py‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -753,10 +753,8 @@ async def _messages_create(
753753
)
754754
output_config = self._build_output_config(model_request_parameters, model_settings)
755755
anthropic_profile = self.profile
756-
betas, extra_headers = self._get_betas_and_extra_headers(model_settings, anthropic_profile)
756+
betas, extra_headers = self._get_betas_and_extra_headers(model_settings, anthropic_profile, messages)
757757
betas.update(native_tool_betas)
758-
if self._messages_use_anthropic_uploaded_file(messages):
759-
betas.add(_ANTHROPIC_FILES_API_BETA)
760758
context_management = self._add_compaction_params(messages, betas, model_settings)
761759
self._validate_task_budget_vs_context_management(model_settings, context_management)
762760
container = self._get_container(messages, model_settings)
@@ -815,10 +813,12 @@ def _get_betas_and_extra_headers(
815813
self,
816814
model_settings: AnthropicModelSettings,
817815
anthropic_profile: AnthropicModelProfile,
816+
messages: list[ModelMessage],
818817
) -> tuple[set[str], dict[str, str]]:
819818
"""Prepare beta features list and extra headers for API request.
820819
821-
Handles merging custom `anthropic-beta` header from `extra_headers` into betas set
820+
Handles merging custom `anthropic-beta` header from `extra_headers` into betas set,
821+
auto-attaching the Files API beta when messages contain an Anthropic `UploadedFile`,
822822
and ensuring `User-Agent` is set.
823823
"""
824824
extra_headers = dict(model_settings.get('extra_headers', {}))
@@ -840,6 +840,9 @@ def _get_betas_and_extra_headers(
840840
if beta_header := extra_headers.pop('anthropic-beta', None):
841841
betas.update({stripped_beta for beta in beta_header.split(',') if (stripped_beta := beta.strip())})
842842

843+
if self._messages_use_anthropic_uploaded_file(messages):
844+
betas.add(_ANTHROPIC_FILES_API_BETA)
845+
843846
return betas, extra_headers
844847

845848
def _messages_use_anthropic_uploaded_file(self, messages: list[ModelMessage]) -> bool:
@@ -952,10 +955,8 @@ async def _messages_count_tokens(
952955
)
953956
output_config = self._build_output_config(model_request_parameters, model_settings)
954957
anthropic_profile = self.profile
955-
betas, extra_headers = self._get_betas_and_extra_headers(model_settings, anthropic_profile)
958+
betas, extra_headers = self._get_betas_and_extra_headers(model_settings, anthropic_profile, messages)
956959
betas.update(native_tool_betas)
957-
if self._messages_use_anthropic_uploaded_file(messages):
958-
betas.add(_ANTHROPIC_FILES_API_BETA)
959960
context_management = self._add_compaction_params(messages, betas, model_settings)
960961
self._validate_task_budget_vs_context_management(model_settings, context_management)
961962
if isinstance(self.client, AsyncAnthropicBedrock):

0 commit comments

Comments
 (0)