
    g                     (   d Z ddlmZmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ dd	lmZ dd
lmZ ddlmZ  e       Z e       Ze	 	 	 	 	 	 ddededee   dee   dee   dee   dee   dee   fd       Z	 	 ddededee   dee   dee   f
dZy)z.Abstraction function for OpenAI's realtime API    )AnyOptionalN)get_llm_provider)get_secret_str)GenericLiteLLMParams   )Logging)AzureOpenAIRealtime)OpenAIRealtime)clientmodel	websocketapi_baseapi_keyapi_versionazure_ad_tokenr   timeoutc                   K   |j                  d      }	|j                  dd      }
|j                  dd      }|j                  dd      }|j                  di       }|j                  dd      }t        di |}t        | ||      \  } }}}|	j                  | |i |
|||di d	|
       |dk(  r|xs+ |j                  xs t
        j                  xs t        d      }|xs/ t
        j                  xs t
        j                  xs t        d      }t        j                  | |||ddd||		       d{    y|dk(  r~|xs" |j                  xs t
        j                  xs d}|xs/ t
        j                  xs t
        j                  xs t        d      }t        j                  | ||	||d|       d{    yt        d|        7 7 w)zT
    Private function to handle the realtime API call.

    For PROXY use only.
    litellm_logging_objlitellm_call_idNproxy_server_request
model_infometadatauser)r   r   r   )r   r   r   r   preset_cache_keystream_response)r   r   optional_paramslitellm_paramscustom_llm_providerazureAZURE_API_BASEAZURE_API_KEY2024-10-01-preview)	r   r   r   r   r   r   r   r   logging_objopenaihttps://api.openai.com/OPENAI_API_KEY)r   r   r$   r   r   r   r   zUnsupported model:  )getr   r   update_environment_variablesr   litellmr   r   
openai_keyazure_realtimeasync_realtimeopenai_realtime
ValueError)r   r   r   r   r   r   r   r   kwargsr   r   r   r   r   r   r   _custom_llm_providerdynamic_api_keydynamic_api_bases                      N/var/www/openai/venv/lib/python3.12/site-packages/litellm/realtime_api/main.py
_arealtimer6      s=    " +1**5J*K%+ZZ0A4%HO!::&<dCL$/Jzz*b)H::fd#D)3F3NEUFBE2B 44.$8$  $!
 1 5  w& 0&&00 ./	 	  //!!/ o.	 	 ++,+ , 

 
	
 
	
 
	) )&&)) )	 	  00!!0 ./	 	 ,,+ - 
 	
 	
 .ug677I
	
4	
s%   D/G1G2BG4G
5G
Gr   c                 4  K   ddl }d}|dk(  r!t        j                  |xs d| |xs d      }n |dk(  rt        j                  |xs d| 	      }|j	                  |d
|i      4 d{    	 ddd      d{    y7 7 # 1 d{  7  sw Y   yxY ww)a  
    Health check for realtime API - tries connection to the realtime API websocket

    Args:
        model: str - model name
        api_base: str - api base
        api_version: Optional[str] - api version
        api_key: str - api key
        custom_llm_provider: str - custom llm provider

    Returns:
        bool - True if connection is successful, False otherwise
    Raises:
        Exception - if the connection is not successful
    r   Nr     r#   )r   r   r   r%   r&   )r   r   zapi-key)extra_headersT)
websocketsr-   _construct_urlr/   connect)r   r   r   r   r   r:   urls          r5   _realtime_health_checkr>   w   s     , Cg%++^#;'; , 

 
	(,,:!:% - 
 !!w
 "         sH   A&B(A?)B,B.B9B:BBB	B
BB)NNNNNN)NN)__doc__typingr   r   r+   r   litellm.secret_managers.mainr   litellm.types.routerr   "litellm_core_utils.litellm_loggingr	   LiteLLMLoggingllms.azure.realtime.handlerr
   llms.openai.realtime.handlerr   utilsr   wrapper_clientr-   r/   strfloatr6   r>   r(       r5   <module>rL      s   4    $ 7 5 J = 9 ,$& "  #!!%$( #`8`8`8 sm`8 c]	`8
 #`8 SM`8 SM`8 e_`8 `8N #!%))) c]) sm	)
 #)rK   