aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py')
-rw-r--r--.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py198
1 files changed, 198 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py b/.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py
new file mode 100644
index 00000000..be7d0fa3
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/litellm/llms/azure/audio_transcriptions.py
@@ -0,0 +1,198 @@
+import uuid
+from typing import Any, Coroutine, Optional, Union
+
+from openai import AsyncAzureOpenAI, AzureOpenAI
+from pydantic import BaseModel
+
+from litellm.litellm_core_utils.audio_utils.utils import get_audio_file_name
+from litellm.types.utils import FileTypes
+from litellm.utils import (
+ TranscriptionResponse,
+ convert_to_model_response_object,
+ extract_duration_from_srt_or_vtt,
+)
+
+from .azure import AzureChatCompletion
+from .common_utils import AzureOpenAIError
+
+
+class AzureAudioTranscription(AzureChatCompletion):
+ def audio_transcriptions(
+ self,
+ model: str,
+ audio_file: FileTypes,
+ optional_params: dict,
+ logging_obj: Any,
+ model_response: TranscriptionResponse,
+ timeout: float,
+ max_retries: int,
+ api_key: Optional[str] = None,
+ api_base: Optional[str] = None,
+ api_version: Optional[str] = None,
+ client=None,
+ azure_ad_token: Optional[str] = None,
+ atranscription: bool = False,
+ litellm_params: Optional[dict] = None,
+ ) -> Union[TranscriptionResponse, Coroutine[Any, Any, TranscriptionResponse]]:
+ data = {"model": model, "file": audio_file, **optional_params}
+
+ if atranscription is True:
+ return self.async_audio_transcriptions(
+ audio_file=audio_file,
+ data=data,
+ model_response=model_response,
+ timeout=timeout,
+ api_key=api_key,
+ api_base=api_base,
+ client=client,
+ max_retries=max_retries,
+ logging_obj=logging_obj,
+ model=model,
+ litellm_params=litellm_params,
+ )
+
+ azure_client = self.get_azure_openai_client(
+ api_version=api_version,
+ api_base=api_base,
+ api_key=api_key,
+ model=model,
+ _is_async=False,
+ client=client,
+ litellm_params=litellm_params,
+ )
+ if not isinstance(azure_client, AzureOpenAI):
+ raise AzureOpenAIError(
+ status_code=500,
+ message="azure_client is not an instance of AzureOpenAI",
+ )
+
+ ## LOGGING
+ logging_obj.pre_call(
+ input=f"audio_file_{uuid.uuid4()}",
+ api_key=azure_client.api_key,
+ additional_args={
+ "headers": {"Authorization": f"Bearer {azure_client.api_key}"},
+ "api_base": azure_client._base_url._uri_reference,
+ "atranscription": True,
+ "complete_input_dict": data,
+ },
+ )
+
+ response = azure_client.audio.transcriptions.create(
+ **data, timeout=timeout # type: ignore
+ )
+
+ if isinstance(response, BaseModel):
+ stringified_response = response.model_dump()
+ else:
+ stringified_response = TranscriptionResponse(text=response).model_dump()
+
+ ## LOGGING
+ logging_obj.post_call(
+ input=get_audio_file_name(audio_file),
+ api_key=api_key,
+ additional_args={"complete_input_dict": data},
+ original_response=stringified_response,
+ )
+ hidden_params = {"model": "whisper-1", "custom_llm_provider": "azure"}
+ final_response: TranscriptionResponse = convert_to_model_response_object(response_object=stringified_response, model_response_object=model_response, hidden_params=hidden_params, response_type="audio_transcription") # type: ignore
+ return final_response
+
+ async def async_audio_transcriptions(
+ self,
+ audio_file: FileTypes,
+ model: str,
+ data: dict,
+ model_response: TranscriptionResponse,
+ timeout: float,
+ logging_obj: Any,
+ api_version: Optional[str] = None,
+ api_key: Optional[str] = None,
+ api_base: Optional[str] = None,
+ client=None,
+ max_retries=None,
+ litellm_params: Optional[dict] = None,
+ ) -> TranscriptionResponse:
+ response = None
+ try:
+ async_azure_client = self.get_azure_openai_client(
+ api_version=api_version,
+ api_base=api_base,
+ api_key=api_key,
+ model=model,
+ _is_async=True,
+ client=client,
+ litellm_params=litellm_params,
+ )
+ if not isinstance(async_azure_client, AsyncAzureOpenAI):
+ raise AzureOpenAIError(
+ status_code=500,
+ message="async_azure_client is not an instance of AsyncAzureOpenAI",
+ )
+
+ ## LOGGING
+ logging_obj.pre_call(
+ input=f"audio_file_{uuid.uuid4()}",
+ api_key=async_azure_client.api_key,
+ additional_args={
+ "headers": {
+ "Authorization": f"Bearer {async_azure_client.api_key}"
+ },
+ "api_base": async_azure_client._base_url._uri_reference,
+ "atranscription": True,
+ "complete_input_dict": data,
+ },
+ )
+
+ raw_response = (
+ await async_azure_client.audio.transcriptions.with_raw_response.create(
+ **data, timeout=timeout
+ )
+ ) # type: ignore
+
+ headers = dict(raw_response.headers)
+ response = raw_response.parse()
+
+ if isinstance(response, BaseModel):
+ stringified_response = response.model_dump()
+ else:
+ stringified_response = TranscriptionResponse(text=response).model_dump()
+ duration = extract_duration_from_srt_or_vtt(response)
+ stringified_response["duration"] = duration
+
+ ## LOGGING
+ logging_obj.post_call(
+ input=get_audio_file_name(audio_file),
+ api_key=api_key,
+ additional_args={
+ "headers": {
+ "Authorization": f"Bearer {async_azure_client.api_key}"
+ },
+ "api_base": async_azure_client._base_url._uri_reference,
+ "atranscription": True,
+ "complete_input_dict": data,
+ },
+ original_response=stringified_response,
+ )
+ hidden_params = {"model": "whisper-1", "custom_llm_provider": "azure"}
+ response = convert_to_model_response_object(
+ _response_headers=headers,
+ response_object=stringified_response,
+ model_response_object=model_response,
+ hidden_params=hidden_params,
+ response_type="audio_transcription",
+ )
+ if not isinstance(response, TranscriptionResponse):
+ raise AzureOpenAIError(
+ status_code=500,
+ message="response is not an instance of TranscriptionResponse",
+ )
+ return response
+ except Exception as e:
+ ## LOGGING
+ logging_obj.post_call(
+ input=input,
+ api_key=api_key,
+ original_response=str(e),
+ )
+ raise e