@@ -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