
    ^h
                     R    S r SSKJrJr  SSKJr  SSKJr  SSK	J
r
   " S S	\
5      rg
)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   )OpenAIChatCompletionc                   t    \ rS rSrS\S\S\4S jr    SS\S\S\S\\   S	\\   S
\\   S\\	   4S jjr
Srg)OpenAIRealtime   api_basemodelreturnc                 X    UR                  SS5      nUR                  SS5      nU SU 3$ )zq
Example output:
"BACKEND_WS_URL = "wss://localhost:8080/v1/realtime?model=gpt-4o-realtime-preview-2024-10-01"";
zhttps://zwss://zhttp://zws://z/v1/realtime?model=)replace)selfr   r   s      ^/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/openai/realtime/handler.py_construct_urlOpenAIRealtime._construct_url   s:    
 ##J9##Iw7.ug66    N	websocketlogging_objapi_keyclienttimeoutc                   #    SS K nUc  [        S5      eUc  [        S5      eU R                  XA5      n	 UR                  U	SU 3SS.S9 IS h  vN n
[	        X*U5      nUR                  5       I S h  vN   S S S 5      IS h  vN   g  N9 N N	! , IS h  vN  (       d  f       g = f! UR                  R                   a6  nUR                  UR                  [        U5      S9I S h  vN     S nAg S nAf[         aw  n UR                  S	S
[        U5       3S9I S h  vN     S nAg ! [         a:  nS[        U5      ;   d  S[        U5      ;   a	   S nA S nAg [        SU 35      eS nAff = fS nAff = f7f)Nr   z+api_base is required for Azure OpenAI callsz*api_key is required for Azure OpenAI callszBearer zrealtime=v1)AuthorizationzOpenAI-Beta)extra_headers)codereasoni  zInternal server error: zalready completedzwebsocket.closez*Unexpected error while closing WebSocket: )
websockets
ValueErrorr   connectr   bidirectional_forward
exceptionsInvalidStatusCodeclosestatus_codestr	ExceptionRuntimeError)r   r   r   r   r   r   r   r   r!   url
backend_wsrealtime_streamingeclose_errors                 r   async_realtimeOpenAIRealtime.async_realtime   s     	JKK?IJJ!!(2	!))'.wi%8#0 *   %6;&" )>>@@@   A    $$66 	E//q}}SV/DDD 	oo(?Ax&H &      
&#k*::>OSVT ? D $D[MR 
	s   2E;B) B	B)  B3B4B8B) BB) E;	B) BB) B&BB&"B) %E;&B) )E8&C4)C,*C4/E;4E8D,!D$"D,'E;,
E06E+E3E;E++E00E33E88E; )NNNN)__name__
__module____qualname____firstlineno__r)   r   r   LiteLLMLoggingr   floatr1   __static_attributes__r3   r   r   r   r      s    7s 73 73 7 #'!% $#'11 1 $	1
 3-1 #1 1 %1 1r   r   N)__doc__typingr   r   "litellm_core_utils.litellm_loggingr   r8   %litellm_core_utils.realtime_streamingr   openair	   r   r3   r   r   <module>r@      s%    ! L G );) ;r   