
    qi\                         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 ddlmZ e G d	 d
e
             Z G d de      Zy)zAAzure OpenAI service implementation for the Pipecat AI framework.    )	dataclass)Optional)logger)AsyncAzureOpenAI)OpenAILLMSettings)OpenAILLMService)_warn_deprecated_paramc                       e Zd ZdZy)AzureLLMSettingszSettings for AzureLLMService.N)__name__
__module____qualname____doc__     L/opt/pipecat/venv/lib/python3.12/site-packages/pipecat/services/azure/llm.pyr   r      s    'r   r   c                   Z     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
ZddZ	 x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                    t        d      }|t        dt         d       ||_        ||j                  |       || _        || _        t        |   d||d| y)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-4o".

                .. deprecated:: 0.0.105
                    Use ``settings=OpenAILLMSettings(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-4o)r   Nr   )r   r   r   )r   r	   r   apply_update	_endpoint_api_versionsuper__init__)	selfr   r   r   r   r   kwargsdefault_settings	__class__s	           r   r   zAzureLLMService.__init__$   sm    4 ,(; "7,<gF%*"
 ))(3 "'N3CNvNr   c                     t        j                  d| j                          t        || j                  | j                        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!   s       r   create_clientzAzureLLMService.create_clientQ   s=     	B4>>BRST>>))
 	
r   )NN)r   r   r   r   r   Settingsstrr   r   r(   __classcell__)r#   s   @r   r   r      sg      H  $//3+O +O 	+O
 }+O +O +,+OZ
r   r   N)r   dataclassesr   typingr   logurur   openair    pipecat.services.openai.base_llmr   pipecat.services.openai.llmr   pipecat.services.settingsr	   r   r   r   r   r   <module>r3      sK    H !   # > 8 < 	( 	 	F
& F
r   