Ë
    uPêjj  ã                   óœ   — d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZmZ  G d
„ de
«      Z G d„ de«      Zy)zÆ
Support for Mistral Voxtral audio transcription via ``/v1/audio/transcriptions``.

API reference: https://docs.mistral.ai/api/#tag/audio/operation/audio_transcriptions_v1_audio_transcriptions_post
é    )ÚFinalN)Úprocess_audio_file)ÚAudioTranscriptionRequestDataÚBaseAudioTranscriptionConfig)ÚBaseLLMException)Úget_secret_str)ÚAllMessageValuesÚ&OpenAIAudioTranscriptionOptionalParams)Ú	FileTypesÚTranscriptionResponsec                   ó   — e Zd Zy)Ú"MistralAudioTranscriptionExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    ú|/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/mistral/audio_transcription/transformation.pyr   r      s   „ Ør   r   c                   ó*  — e Zd Zdedee   fd„Zdededededef
d„Z		 dd	edz  d
edz  dededededz  defd„Z
dededeej                  z  defd„Z	 	 ddededee   deded
edz  d	edz  defd„Zdededededef
d„Zdej*                  defd„Zy)ÚMistralAudioTranscriptionConfigÚmodelÚreturnc                 ó
   — g d¢S )N)ÚlanguageÚtemperatureÚtimestamp_granularitiesÚresponse_formatr   )Úselfr   s     r   Úget_supported_openai_paramsz;MistralAudioTranscriptionConfig.get_supported_openai_params   s   € ò
ð 	
r   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 ól   — | j                  |«      }|j                  «       D ]  \  }}||v sŒ|||<   Œ |S ©N)r   Úitems)r   r    r!   r   r"   Úsupported_paramsÚkÚvs           r   Úmap_openai_paramsz1MistralAudioTranscriptionConfig.map_openai_params&   sL   € ð #'×"BÑ"BÀ5Ó"IÐØ&×,Ñ,Ó.ò 	'‰DˆAˆqØÐ$Ò$Ø%&� Ò"ð	'ð Ðr   NÚapi_baseÚapi_keyÚlitellm_paramsÚstreamc                 ó6   — |€dn|j                  d«      }|› d�S )Nzhttps://api.mistral.ai/v1ú/z/audio/transcriptions)Úrstrip)r   r*   r+   r   r!   r,   r-   s          r   Úget_complete_urlz0MistralAudioTranscriptionConfig.get_complete_url3   s)   € ð 3;Ð2BÑ.ÈÏÉÐX[ÓH\ˆØ�Ð0Ð1Ð1r   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N©Úmessager3   r4   )r   )r   r2   r3   r4   s       r   Úget_error_classz/MistralAudioTranscriptionConfig.get_error_class?   s   € Ü1Ø!Ø#Øô
ð 	
r   Úmessagesc                 óZ   — |€t        d«      }d|› �ddœ}|j                  |xs i «       |S )NÚMISTRAL_API_KEYzBearer zapplication/json)ÚAuthorizationÚaccept)r   Úupdate)	r   r4   r   r9   r!   r,   r+   r*   Údefault_headerss	            r   Úvalidate_environmentz4MistralAudioTranscriptionConfig.validate_environmentF   sD   € ð ˆ?Ü$Ð%6Ó7ˆGð  ' w iÐ0Ø(ñ"
ˆð 	×Ñ˜wš}¨"Ô-ØÐr   Ú
audio_filec                 óÆ  — t        |«      }d|i}| j                  |«      D ]  }|j                  |«      }|€Œ|||<   Œ | j                  ||| j                  |«      ¬«      }	|	j	                  «       D ]<  \  }}t        |t        «      rt        |«      j                  «       n
t        |«      ||<   Œ> d|j                  |j                  |j                  fi}
t        ||
¬«      S )Nr   )r   r!   Úopenai_paramsÚfile)ÚdataÚfiles)r   r   ÚgetÚget_provider_specific_paramsr%   Ú
isinstanceÚboolÚstrÚlowerÚfilenameÚfile_contentÚcontent_typer   )r   r   rA   r!   r,   Úprocessed_audioÚform_fieldsÚkeyÚvalueÚprovider_specific_paramsrF   s              r   Ú%transform_audio_transcription_requestzEMistralAudioTranscriptionConfig.transform_audio_transcription_requestZ   s	  € ô "4°JÓ!?ˆð �Uð$
ˆð
 ×3Ñ3°EÓ:ò 	)ˆCØ#×'Ñ'¨Ó,ˆEØÑ Ø#(�˜CÒ ð	)ð +/×*KÑ*KØØ+Ø×:Ñ:¸5ÓAð +Ló +
Ð ð
 3×8Ñ8Ó:ò 	]‰JˆC�Ü5?ÀÄtÔ5Lœs 5›z×/Ñ/Ô1ÔRUÐV[ÓR\ˆK˜Òð	]ð Ø×(Ñ(Ø×,Ñ,Ø×,Ñ,ðð
ˆô -°+ÀUÔKÐKr   Úraw_responsec                 ó  — 	 |j                  «       }|j                  d«      xs d}t        |¬«      }d|v r|d   |d<   d|v r|d   |d<   ||_        |S # t        $ r- t        |j                  |j                  |j
                  ¬«      ‚w xY w)Nr6   ÚtextÚ )rX   Úsegmentsr   )	ÚjsonÚ	Exceptionr   rX   r3   r4   rG   r   Ú_hidden_params)r   rV   Úresponse_jsonrX   Úresponses        r   Ú&transform_audio_transcription_responsezFMistralAudioTranscriptionConfig.transform_audio_transcription_response€   s¬   € ð	Ø#/×#4Ñ#4Ó#6ˆMð $×'Ñ'¨Ó/Ò5°2ˆÜ/°TÔ:ˆð ˜Ñ&Ø#0°Ñ#<ˆH�ZÑ Ø˜Ñ&Ø#0°Ñ#<ˆH�ZÑ à"/ˆÔØˆøô# ò 	Ü4Ø$×)Ñ)Ø(×4Ñ4Ø$×,Ñ,ôð ð	ús   ‚A Á6B
r$   )NN)r   r   r   rK   Úlistr
   r   ÚdictrJ   r)   r1   ÚintÚhttpxÚHeadersr   r8   r	   r@   r   r   rU   ÚResponser   r`   r   r   r   r   r      s˜  „ ð
°ð 
¸Ð>dÑ9eó 
ðà ðð ðð ð	ð
 ðð 
óð( #ñ
2à˜‘*ð
2ð �t‘ð
2ð ð	
2ð
 ð
2ð ð
2ð �t‘ð
2ð 
ó
2ð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ð #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð($Làð$Lð ð$Lð ð	$Lð
 ð$Lð 
'ó$LðLà—n‘nðð 
ôr   r   )Ú__doc__Útypingr   rd   Ú,litellm.litellm_core_utils.audio_utils.utilsr   Ú8litellm.llms.base_llm.audio_transcription.transformationr   r   Ú)litellm.llms.base_llm.chat.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair	   r
   Úlitellm.types.utilsr   r   r   r   r   r   r   ú<module>ro      sJ   ðñõ ã å K÷õ GÝ 7÷÷ Aô	Ð)9ô 	ôzÐ&Bõ zr   