o
    i+                     @   sv   d 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G dd	 d	e
jZG d
d deZdS )zAAzure OpenAI service implementation for the Pipecat AI framework.    )	dataclass)Optional)logger)AsyncAzureOpenAI)BaseOpenAILLMService)OpenAILLMServicec                   @   s   e Zd ZdZdS )AzureLLMSettingszSettings for AzureLLMService.N)__name__
__module____qualname____doc__ r   r   N/home/ubuntu/.local/lib/python3.10/site-packages/pipecat/services/azure/llm.pyr      s    r   c                       sV   e Zd ZdZeZdddddededee ded	ee f
 fd
dZdddZ	  Z
S )AzureLLMServicezA service for interacting with Azure OpenAI using the OpenAI-compatible interface.

    This service extends OpenAILLMService to connect to Azure's OpenAI endpoint while
    maintaining full compatibility with OpenAI's interface and functionality.
    Nz2024-09-01-preview)modelapi_versionsettingsapi_keyendpointr   r   r   c                   s`   | j dd}|dur| dd ||_|dur|| || _|| _t jd||d| dS )a  Initialize the Azure LLM service.

        Args:
            api_key: The API key for accessing Azure OpenAI.
            endpoint: The Azure endpoint URL.
            model: The model identifier to use. Defaults to "gpt-4.1".

                .. deprecated:: 0.0.105
                    Use ``settings=AzureLLMService.Settings(model=...)`` instead.

            api_version: Azure API version. Defaults to "2024-09-01-preview".
            settings: Runtime-updatable settings. When provided alongside deprecated
                parameters, ``settings`` values take precedence.
            **kwargs: Additional keyword arguments passed to OpenAILLMService.
        zgpt-4.1)r   Nr   )r   r   r   )Settings"_warn_init_param_moved_to_settingsr   apply_update	_endpoint_api_versionsuper__init__)selfr   r   r   r   r   kwargsdefault_settings	__class__r   r   r   #   s   
zAzureLLMService.__init__c                 K   s$   t d| j  t|| j| jdS )a  Create OpenAI-compatible client for Azure OpenAI endpoint.

        Args:
            api_key: API key for authentication. Uses instance key if None.
            base_url: Base URL for the client. Ignored for Azure implementation.
            **kwargs: Additional keyword arguments. Ignored for Azure implementation.

        Returns:
            AsyncAzureOpenAI: Configured Azure OpenAI client instance.
        z+Creating Azure OpenAI client with endpoint )r   azure_endpointr   )r   debugr   r   r   )r   r   base_urlr   r   r   r   create_clientP   s   zAzureLLMService.create_client)NN)r	   r
   r   r   r   r   strr   r   r$   __classcell__r   r   r   r   r      s$    -r   N)r   dataclassesr   typingr   logurur   openair    pipecat.services.openai.base_llmr   pipecat.services.openai.llmr   r   r   r   r   r   r   r   <module>   s   