o
    i                  
   @   s   d Z ddlZddlmZ ddlmZ ddlmZ zddlm	Z
 W n  ey@ Z zede  ed	 ed
e dZ[ww eG dd dejZG dd deZdS )z6Azure OpenAI Realtime Beta LLM service implementation.    N)	dataclass)logger   )OpenAIRealtimeBetaLLMService)connectzException: zvIn order to use OpenAI, you need to `pip install pipecat-ai[openai]`. Also, set `OPENAI_API_KEY` environment variable.zMissing module: c                   @   s   e Zd ZdZdS )AzureRealtimeBetaLLMSettingsz)Settings for AzureRealtimeBetaLLMService.N)__name__
__module____qualname____doc__ r   r   _/home/ubuntu/.local/lib/python3.10/site-packages/pipecat/services/openai_realtime_beta/azure.pyr      s    r   c                       s@   e Zd ZU dZeZeed< dedef fddZdd Z	  Z
S )	AzureRealtimeBetaLLMServicea  Azure OpenAI Realtime Beta LLM service with Azure-specific authentication.

    .. deprecated:: 0.0.84
        `AzureRealtimeBetaLLMService` is deprecated, use `AzureRealtimeLLMService` instead.
        This class will be removed in version 1.0.0.

    Extends the OpenAI Realtime service to work with Azure OpenAI endpoints,
    using Azure's authentication headers and endpoint format. Provides the same
    real-time audio and text communication capabilities as the base OpenAI service.
    	_settingsapi_keybase_urlc                   sj   t  jd||d| t  td tjdtdd W d   n1 s(w   Y  || _|| _dS )a  Initialize Azure Realtime Beta LLM service.

        Args:
            api_key: The API key for the Azure OpenAI service.
            base_url: The full Azure WebSocket endpoint URL including api-version and deployment.
                Example: "wss://my-project.openai.azure.com/openai/realtime?api-version=2024-10-01-preview&deployment=my-realtime-deployment"
            **kwargs: Additional arguments passed to parent OpenAIRealtimeBetaLLMService.
        )r   r   alwaysztAzureRealtimeBetaLLMService is deprecated and will be removed in version 1.0.0. Use AzureRealtimeLLMService instead.   )
stacklevelNr   )	super__init__warningscatch_warningssimplefilterwarnDeprecationWarningr   r   )selfr   r   kwargs	__class__r   r   r   0   s   

	
z$AzureRealtimeBetaLLMService.__init__c              
      s   z(| j rW d S td| j  t| jd| jidI d H | _ | |  | _W d S  t	yL } z| j
d| |dI d H  d | _ W Y d }~d S d }~ww )NzConnecting to zapi-key)uriadditional_headerszError connecting: )	error_msg	exception)
_websocketr   infor   websocket_connectr   create_task_receive_task_handler_receive_task	Exception
push_error)r   er   r   r   _connectM   s    z$AzureRealtimeBetaLLMService._connect)r   r	   r
   r   r   Settings__annotations__strr   r-   __classcell__r   r   r   r   r   !   s   
 r   )r   r   dataclassesr   logurur   openair   websockets.asyncio.clientr   r&   ModuleNotFoundErrorr,   errorr*   r.   r   r   r   r   r   r   <module>   s$   