Ë
    uPêjl&  ã                   óŠ   — d dl mZ d dlmZ d dlZd dlmZmZ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  G d„ de
«      Zy)é    )ÚFinal)ÚOpenAIN)ÚAsyncHTTPHandlerÚHTTPHandlerÚget_async_httpx_client)ÚOpenAIChatCompletion)ÚImageEmbeddingRequest)ÚEmbeddingResponse)Ú convert_to_model_response_objecté   )ÚAzureAICohereConfigc                   ó^  ‡ — e Zd Zdedz  dedz  dee   dedef
d„Z	 dded	ed
e	dede
dedz  dedz  deez  dz  defd„Z	 dded	ed
e	dede
dedz  dedz  deez  dz  fd„Z	 	 	 ddeded
e	dede
dedz  dedz  defˆ fd„Z	 	 	 	 	 	 ddeded
e	dede
dedz  dedz  dedz  defˆ fd„Zˆ xZS )ÚAzureAIEmbeddingÚimage_embedding_responsesNÚtext_embedding_responsesÚimage_embeddings_idxÚmodel_responseÚinputc                 ó$  — g }|�^|�\d}d}t        t        |«      «      D ]9  }	|	|v r|j                  ||   «       |dz  }Œ!|j                  ||   «       |dz  }Œ; ||_        n|�||_        n	|�||_        t	        «       j                  |¬«      }
|
S )Nr   r   )Úresponse)ÚrangeÚlenÚappendÚdatar   Ú_transform_response)Úselfr   r   r   r   r   Úcombined_responsesÚtext_idxÚ	image_idxÚidxr   s              úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/azure_ai/embed/handler.pyÚ_process_responsez"AzureAIEmbedding._process_response   s¼   € ð %'ÐØ$Ð0Ð5MÐ5YàˆHØˆIäœS ›ZÓ(ò "�ØÐ.Ñ.Ø&×-Ñ-Ð.GÈ	Ñ.RÔSØ ‘N‘Ià&×-Ñ-Ð.FÀxÑ.PÔQØ ‘M‘Hð"ð #5ˆNÕØ&Ð2Ø";ˆNÕØ%Ð1Ø":ˆNÔä-Ó/×CÑCÈ^ÐCÓ\ˆàˆó    Úmodelr   ÚtimeoutÚoptional_paramsÚapi_keyÚapi_baseÚclientÚreturnc
              ƒ   ó:  K  — |	�t        |	t        «      s't        t        j                  j
                  d|i¬«      }	|› d�}
|	j                  |
|dd|› �i¬«      ƒ d {  –—† }|j                  «       }t        |j                  «      }t        ||dd|¬	«      }|S 7 Œ;­w)
Nr%   )Úllm_providerÚparamsú/images/embeddingsÚAuthorizationúBearer ©ÚurlÚjsonÚheadersÚ	embeddingF©Úresponse_objectÚmodel_response_objectÚresponse_typeÚstreamÚ_response_headers)Ú
isinstancer   r   ÚlitellmÚLlmProvidersÚAZURE_AIÚpostr3   Údictr4   r   ©r   r$   r   r%   Úlogging_objr   r&   r'   r(   r)   r2   r   Úembedding_responseÚembedding_headersÚreturned_responses                  r!   Úasync_image_embeddingz&AzureAIEmbedding.async_image_embedding4   sº   è ø€ ð ˆ>¤¨FÔ4DÔ!EÜ+Ü$×1Ñ1×:Ñ:Ø! 7Ð+ôˆFð
 !�zÐ!3Ð4ˆà &§¡ØØØ$¨°¨yÐ&9Ð:ð !,ó !
÷ 
ˆð %-§M¡M£OÐÜ#'¨×(8Ñ(8Ó#9ÐÜ6VØ.Ø"0Ø%ØØ/ô7
Ðð !Ð ð
ús   ‚ABÁBÁ<Bc
                 ó  — |€t        d«      ‚|€t        d«      ‚|	�t        |	t        «      st        |d¬«      }	|› d�}
|	j                  |
|dd|› �i¬«      }|j	                  «       }t        |j                  «      }t        ||d	d
|¬«      }|S )Nzhapi_base is None. Please set AZURE_AI_API_BASE or dynamically via `api_base` param, to make the request.zeapi_key is None. Please set AZURE_AI_API_KEY or dynamically via `api_key` param, to make the request.r   )r%   Úconcurrent_limitr.   r/   r0   r1   r5   Fr6   )Ú
ValueErrorr<   r   r@   r3   rA   r4   r   rB   s                  r!   Úimage_embeddingz AzureAIEmbedding.image_embeddingY   sÃ   € ð ÐÜØzóð ð ˆ?ÜØwóð ð ˆ>¤¨F´KÔ!@Ü ¨À1ÔEˆFà �zÐ!3Ð4ˆà Ÿ+™+ØØØ$¨°¨yÐ&9Ð:ð &ó 
ˆð %-§M¡M£OÐÜ#'¨×(8Ñ(8Ó#9ÐÜ6VØ.Ø"0Ø%ØØ/ô7
Ðð !Ð r#   c
              ƒ   ó†  •K  — t        «       j                  |||¬«      \  }
}}d }d }|
d   r;| j                  ||
|||||||	¬«	      ƒ d {  –—† }|j                  }|€t	        d«      ‚|d   r:t
        ‰| �  |||||||||	d¬«
      ƒ d {  –—† }|j                  }|€t	        d«      ‚| j                  |||||¬«      S 7 Œr7 Œ5­w)	N©r   r&   r$   r   ©	r$   r   r%   rC   r   r&   r'   r(   r)   ú1/image/embeddings route returned None Embeddings.T)
r$   r   r%   rC   r   r&   r'   r(   r)   Ú
aembeddingú./v1/embeddings route returned None Embeddings.©r   r   r   r   r   )r   Ú_transform_requestrG   r   Ú	ExceptionÚsuperr5   r"   )r   r$   r   r%   rC   r   r&   r'   r(   r)   Úimage_embeddings_requestÚv1_embeddings_requestr   r   r   Úimage_responser   Ú	__class__s                    €r!   Úasync_embeddingz AzureAIEmbedding.async_embedding„   s.  øè ø€ ô   Ó!×4Ñ4¸5ÐRaÐinÐ4Óoñ		
Ø$Ø!Ø ð 26Ð!Ø04Ð à# GÒ,Ø*.×*DÑ*DØØ-ØØ'Ø-Ø /ØØ!Øð +Eó 
+÷ 
%ˆNð )7×(;Ñ(;Ð%Ø(Ð0ÜÐ SÓTÐTà  Ò)Ü7<±wÑ7HØØØØ'Ø-Ø /ØØ!ØØð 8Ió 8÷ 2ˆHð (0§}¡}Ð$Ø'Ð/ÜÐ PÓQÐQà×%Ñ%Ø&?Ø%=Ø!5Ø)Øð &ó 
ð 	
ðC
%øð"2ús$   ƒACÁ
B=Á>CÂ	B?Â
4CÂ?CÚmax_retriesc                 óº  •— |
du r| j                  |||||||||	«	      S t        «       j                  |||¬«      \  }}}d}d}|d   r3| j                  |||||||||	¬«	      }|j                  }|€t        d«      ‚|d   rGt        ‰| �  |||||||||	�t        |	t        «      r|	nd|
|¬«      }|j                  }|€t        d«      ‚| j                  |||||¬	«      S )
zÓ
        - Separate image url from text
        -> route image url call to `/image/embeddings`
        -> route text call to `/v1/embeddings` (OpenAI route)

        assemble result in-order, and return
        TrM   Nr   rN   rO   )r)   rP   Úshared_sessionrQ   rR   )rZ   r   rS   rK   r   rT   rU   r5   r<   r   r"   )r   r$   r   r%   rC   r   r&   r'   r(   r)   rP   r[   r]   rV   rW   r   r   r   rX   r   rY   s                       €r!   r5   zAzureAIEmbedding.embeddingÃ   s_  ø€ ð, ˜ÑØ×'Ñ'ØØØØØØØØØó
ð 
ô   Ó!×4Ñ4¸5ÐRaÐinÐ4Óoñ		
Ø$Ø!Ø ð 26Ð!Ø04Ð à# GÒ,Ø$(×$8Ñ$8ØØ-ØØ'Ø-Ø /ØØ!Øð %9ó 
%ˆNð )7×(;Ñ(;Ð%Ø(Ð0ÜÐ SÓTÐTà  Ò)Ü16±Ñ1BØØØØØØØØØ"(Ð"4¼ÀFÌFÔ9S™ÐY]Ø%Ø-ð 2Có 2ˆHð (0§}¡}Ð$Ø'Ð/ÜÐ PÓQÐQà×%Ñ%Ø&?Ø%=Ø!5Ø)Øð &ó 
ð 	
r#   )N)NNN)NNNNNN)Ú__name__Ú
__module__Ú__qualname__ÚlistÚintr
   r"   Ústrr	   ÚfloatrA   r   r   rG   rK   rZ   r5   Ú__classcell__)rY   s   @r!   r   r      s  ø„ ðà#'¨$¡;ðð #'¨¡+ðð # 3™ið	ð
 *ðð óðT 9=ñ#!àð#!ð $ð#!ð ð	#!ð *ð#!ð ð#!ð �t‘ð#!ð ˜‘*ð#!ð Ð.Ñ.°Ñ5ð#!ð 
ó#!ð^ 9=ñ)!àð)!ð $ð)!ð ð	)!ð *ð)!ð ð)!ð �t‘ð)!ð ˜‘*ð)!ð Ð.Ñ.°Ñ5ó)!ðf #Ø#Øñ=
àð=
ð ð=
ð ð	=
ð *ð=
ð ð=
ð �t‘ð=
ð ˜‘*ð=
ð 
õ=
ðN #Ø#ØØØ"&ØñV
àðV
ð ðV
ð ð	V
ð *ðV
ð ðV
ð �t‘ðV
ð ˜‘*ðV
ð ˜4‘ZðV
ð 
÷V
ñ V
r#   r   )Útypingr   Úopenair   r=   Ú&litellm.llms.custom_httpx.http_handlerr   r   r   Úlitellm.llms.openai.openair   Úlitellm.types.llms.azure_air	   Úlitellm.types.utilsr
   Úlitellm.utilsr   Úcohere_transformationr   r   © r#   r!   ú<module>ro      s8   ðÝ å ã ÷ñ õ
 <Ý =Ý 1Ý :å 6ôF
Ð+õ F
r#   