
    g
                     b    d Z ddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ded	efd
Z G d de
      Zy)z
This file contains the calling Azure OpenAI's `/openai/realtime` endpoint.

This requires websockets, and is currently only supported on LiteLLM Proxy.
    )AnyOptional   )Logging)RealTimeStreaming   )AzureChatCompletion	client_ws
backend_wsc                    K   dd l }	 	 |j                          d {   }| j                  |       d {    27 7 # |j                  j                  $ r Y y w xY ww)Nr   )
websocketsrecv	send_text
exceptionsConnectionClosed)r
   r   r   messages       X/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/azure/realtime/handler.pyforward_messagesr      s]     &OO--G%%g... -.  11 s4   A? ;? =? ? AAAAc                       e Zd ZdedededefdZ	 	 	 	 	 	 	 ddededee   dee   dee   d	ee   d
ee   dee   dee   fdZ	y)AzureOpenAIRealtimeapi_basemodelapi_versionreturnc                 :    |j                  dd      }| d| d| S )z
        Example output:
        "wss://my-endpoint-sweden-berri992.openai.azure.com/openai/realtime?api-version=2024-10-01-preview&deployment=gpt-4o-realtime-preview";

        zhttps://zwss://z/openai/realtime?api-version=z&deployment=)replace)selfr   r   r   s       r   _construct_urlz"AzureOpenAIRealtime._construct_url   s0     ##J9j5k],ugV	
    N	websocketapi_keyazure_ad_tokenclientlogging_objtimeoutc
                 
  K   dd l }
|t        d      |t        d      | j                  |||      }	 |
j                  |d|i      4 d {   }t	        |||      }|j                          d {    d d d       d {    y 7 :7 7 	# 1 d {  7  sw Y   y xY w# |
j                  j                  $ r9}|j                  |j                  t        |             d {  7   Y d }~y d }~wt        $ r Y y w xY ww)Nr   z+api_base is required for Azure OpenAI callsz.api_version is required for Azure OpenAI callszapi-key)extra_headers)codereason)r   
ValueErrorr   connectr   bidirectional_forwardr   InvalidStatusCodeclosestatus_codestr	Exception)r   r   r    r   r!   r   r"   r#   r$   r%   r   urlr   realtime_streaminges                  r   async_realtimez"AzureOpenAIRealtime.async_realtime'   s     	JKKMNN!!(E;?	!))w *  
 %6z;&" )>>@@@   A    $$66 	E//q}}SV/DDD 		s   2DB$ B	B$ !B3B4B8B$ BB$ D	B$ BB$ B!BB!B$  D!B$ $D =)C1&C)'C1,D1D =D?D  D)NNNNNNN)
__name__
__module____qualname__r0   r   r   r   LiteLLMLoggingfloatr5    r   r   r   r      s    	
s 	
3 	
S 	
S 	
 #'!%%)(, $04#'$$ $ 3-	$
 #$ c]$ !$ $ n-$ %$r   r   N)__doc__typingr   r   "litellm_core_utils.litellm_loggingr   r9   %litellm_core_utils.realtime_streamingr   azurer	   r   r   r;   r   r   <module>rA      s8    ! L G '
c s 0- 0r   