
    h                         d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dl d dl d dlmZ er	d dlmZ eZneZ G d d	e      Zy
)    )TYPE_CHECKINGAnyDictLiteralOptionalTuple)verbose_logger)BaseAzureLLM)OpenAIResponsesAPIConfig)*)GenericLiteLLMParams)Loggingc                   B   e Zd Zdededee   defdZdedefdZdede	ee
f   dedededefd	Zd
ee   dedefdZd
ededefdZded
edededeeef   f
dZded
edededeeef   f
dZ	 	 	 	 	 dded
edededee   dee   deee      deded   deeef   fdZy)AzureOpenAIResponsesAPIConfigheadersmodellitellm_paramsreturnc                 0    t        j                  ||      S )N)r   r   )r
    _base_validate_azure_environment)selfr   r   r   s       g/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/azure/responses/transformation.pyvalidate_environmentz2AzureOpenAIResponsesAPIConfig.validate_environment   s     <<N
 	
    c                 ^    d|v r|j                  dd      }d|v r|j                  dd      }|S )Nz
responses/ o_seriesz	o_series/)replace)r   r   s     r   get_stripped_model_namez5AzureOpenAIResponsesAPIConfig.get_stripped_model_name   s7    5 MM,3EMM+r2Er   input$response_api_optional_request_paramsc                 R    | j                  |      }t        t        d||d|      S )z<No transform applied since inputs are in OpenAI spec already)r   r     )r   dictResponsesAPIRequestParams)r   r   r    r!   r   r   stripped_model_names          r   transform_responses_api_requestz=AzureOpenAIResponsesAPIConfig.transform_responses_api_request"   s?     #::5A% ) 7
 	
r   api_basec                 2    t        j                  ||d      S )ag  
        Constructs a complete URL for the API request.

        Args:
        - api_base: Base URL, e.g.,
            "https://litellm8397336933.openai.azure.com"
            OR
            "https://litellm8397336933.openai.azure.com/openai/responses?api-version=2024-05-01-preview"
        - model: Model name.
        - optional_params: Additional query parameters, including "api_version".
        - stream: If streaming is required (optional).

        Returns:
        - A complete URL string, e.g.,
        "https://litellm8397336933.openai.azure.com/openai/responses?api-version=2024-05-01-preview"
        z/openai/responses)r(   r   route)r
   _get_base_azure_url)r   r(   r   s      r   get_complete_urlz.AzureOpenAIResponsesAPIConfig.get_complete_url4   s    * //nDW
 	
r   response_idc                     ddl m}m}  ||      }|j                  j	                  d      }| d| } ||j
                  |j                  ||j                  |j                  |j                  f      }|S )zX
        Constructs a URL for the API request with the response_id in the path.
        r   )urlparse
urlunparse/)
urllib.parser/   r0   pathrstripschemenetlocparamsqueryfragment)	r   r(   r-   r/   r0   
parsed_urlr3   new_pathconstructed_urls	            r   &_construct_url_for_response_id_in_pathzDAzureOpenAIResponsesAPIConfig._construct_url_for_response_id_in_pathP   s     	6 h'
 %%c*V1[M* %!!!!!!  ##	
 r   c                 d    | j                  ||      }i }t        j                  d|        ||fS )a_  
        Transform the delete response API request into a URL and data

        Azure OpenAI API expects the following request:
        - DELETE /openai/responses/{response_id}?api-version=xxx

        This function handles URLs with query parameters by inserting the response_id
        at the correct location (before any query parameters).
        r(   r-   zdelete response url=r=   r	   debug)r   r-   r(   r   r   
delete_urldatas          r   %transform_delete_response_api_requestzCAzureOpenAIResponsesAPIConfig.transform_delete_response_api_requestm   sG      @@; A 

 3J<@A4r   c                 d    | j                  ||      }i }t        j                  d|        ||fS )z
        Transform the get response API request into a URL and data

        OpenAI API expects the following request
        - GET /v1/responses/{response_id}
        r?   zget response url=r@   )r   r-   r(   r   r   get_urlrC   s          r   "transform_get_response_api_requestz@AzureOpenAIResponsesAPIConfig.transform_get_response_api_request   sE     ==; > 
 0	:;}r   Nafterbeforeincludelimitorder)ascdescc
                     | j                  ||      dz   }
i }|||d<   |||d<   |rdj                  |      |d<   |||d<   |	|	|d<   t        j                  d	|
        |
|fS )
Nr?   z/input_itemsrH   rI   ,rJ   rK   rL   zlist input items url=)r=   joinr	   rA   )r   r-   r(   r   r   rH   rI   rJ   rK   rL   urlr7   s               r   "transform_list_input_items_requestz@AzureOpenAIResponsesAPIConfig.transform_list_input_items_request   s     77!{ 8   	 "$#F7O%F8 # 1F9#F7O#F7O4SE:;F{r   )NNN   rN   )__name__
__module____qualname__r$   strr   r   r   r   UnionResponseInputParamr   r'   r,   r=   r   rD   rG   Listintr   rS   r#   r   r   r   r      s   

$'
9ABV9W
	
S S 

 S,,-
 /3	

 -
 
 

$
3-
 
 
	
8*-	:     -	 
   
sDy	 6  -	
  
sDy	4  $ $'+(.  -	
  }  $s)$  }% 
sDy	r   r   N)typingr   r   r   r   r   r   litellm._loggingr	   litellm.llms.azure.common_utilsr
   ,litellm.llms.openai.responses.transformationr   litellm.types.llms.openailitellm.types.responses.mainlitellm.types.routerr   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjLiteLLMLoggingObjr   r#   r   r   <module>rg      s>    E E + 8 Q ' * 5X*h$< hr   