
    ^hO'                         S SK JrJrJr  S SKJr  S SKrS SKJrJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJr  S	S
KJr   " S S\5      rg)    )ListOptionalUnion)OpenAIN)AsyncHTTPHandlerHTTPHandlerget_async_httpx_client)OpenAIChatCompletion)ImageEmbeddingRequest)EmbeddingResponse) convert_to_model_response_object   )AzureAICohereConfigc                     ^  \ rS rSrS\\   S\\   S\\   S\S\4
S jr SS\	S	\
S
\S\R                  S\S\\	   S\\	   S\\\\4      S\4S jjr SS\	S	\
S
\S\S\S\\	   S\\	   S\\\\4      4S jjr   SS\	S\S
\S\R                  S\S\\	   S\\	   S\4U 4S jjjr     SS\	S\S
\S\S\S\\	   S\\	   S\\   S\4U 4S jjjrSrU =r$ )AzureAIEmbedding   image_embedding_responsestext_embedding_responsesimage_embeddings_idxmodel_responseinputc                 $   / nUb`  Ub]  SnSn[        [        U5      5       H:  n	X;   a  UR                  X   5        US-  nM"  UR                  X'   5        US-  nM<     Xdl        OUb  Xl        O	Ub  X$l        [	        5       R                  US9n
U
$ )Nr   r   )response)rangelenappenddatar   _transform_response)selfr   r   r   r   r   combined_responsestext_idx	image_idxidxr   s              ]/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/azure_ai/embed/handler.py_process_response"AzureAIEmbedding._process_response   s      %1(4 HISZ(.&--.G.RSNI&--.F.PQMH ) #5&2";%1":&(<<n<U    modelr   timeoutoptional_paramsapi_keyapi_baseclientreturnc
                 d  #    U	b  [        U	[        5      (       d$  [        [        R                  R
                  SU0S9n	SR                  U5      n
U	R                  U
USSR                  U5      0S9I S h  vN nUR                  5       n[        UR                  5      n[        UUSSUS	9nU$  N87f)
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formatpostr7   dictr8   r   r   r(   r   r)   logging_objr   r*   r+   r,   r-   r6   r   embedding_responseembedding_headersreturned_responses                  r$   async_image_embedding&AzureAIEmbedding.async_image_embedding8   s      >F4D!E!E+$11::!7+F
 %++H5$k&8&8&AB % 
 
 &]]_ !1!12/O."0%/0
 ! 
s   A3B05B.69B0c
                 L   Uc  [        S5      eUc  [        S5      eU	b  [        U	[        5      (       d
  [        USS9n	SR                  U5      n
U	R	                  U
USSR                  U5      0S9nUR                  5       n[        UR                  5      n[        UUS	S
US9nU$ )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_limitr2   r3   r4   r5   r9   Fr:   )	
ValueErrorr@   r   rD   rE   r7   rF   r8   r   rG   s                  r$   image_embedding AzureAIEmbedding.image_embedding]   s     z  ?w  >FK!@!@ 1EF$++H5;;$k&8&8&AB  
 &]]_ !1!12/O."0%/0
 ! r'   c
                   >#    [        5       R                  X&US9u  n
nnS nS nU
S   (       a9  U R                  UU
UUUUUUU	S9	I S h  vN nUR                  nUc  [	        S5      eUS   (       a8  [
        TU ]  UUUUUUUUU	SS9
I S h  vN nUR                  nUc  [	        S5      eU R                  UUUUUS9$  Ns N37f)	Nr   r*   r(   r   	r(   r   r)   rH   r   r*   r+   r,   r-   1/image/embeddings route returned None Embeddings.T)
r(   r   r)   rH   r   r*   r+   r,   r-   
aembedding./v1/embeddings route returned None Embeddings.r   r   r   r   r   )r   _transform_requestrL   r   	Exceptionsuperr9   r%   )r   r(   r   r)   rH   r   r*   r+   r,   r-   image_embeddings_requestv1_embeddings_requestr   r   r   image_responser   	__class__s                    r$   async_embedding AzureAIEmbedding.async_embedding   s,    "  !44 5 
		
$! 
 59!37 #G,#'#=#=-'- /! $> 
$ 
N )7(;(;%(0 STT )050A'- /! 1B 1 +H (0}}$'/ PQQ%%&?%=!5) & 
 	
C
"+s%   AC B<	AC 
B>2C >C max_retriesc                   > U
SL a  U R                  UUUUUUUUU	5	      $ [        5       R                  X&US9u  nnnSnSnUS   (       a1  U R                  UUUUUUUUU	S9	nUR                  nUc  [        S5      eUS   (       aJ  [        TU ]  UUUUUUUUU	b  [        U	[        5      (       a  U	OSU
S9
nUR                  nUc  [        S5      eU R                  UUUUUS	9$ )
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
TrT   Nr   rU   rV   )r-   rW   rX   rY   )ra   r   rZ   rQ   r   r[   r\   r9   r@   r   r%   )r   r(   r   r)   rH   r   r*   r+   r,   r-   rW   rc   r]   r^   r   r   r   r_   r   r`   s                      r$   r9   AzureAIEmbedding.embedding   sd   * ''
 
   !44 5 
		
$! 
 59!37 #G,!11-'- /! 2 
N )7(;(;%(0 STT )*/'*; )j.H.H % +< +H" (0}}$'/ PQQ%%&?%=!5) & 
 	
r'    )N)NNN)NNNNN)__name__
__module____qualname____firstlineno__r   r   intr   r%   strr   floatrA   rF   r   r   r   rL   rQ   ra   r9   __static_attributes____classcell__)r`   s   @r$   r   r      sA   !#+D>! #+4.! #3i	!
 *! !Z BF#!#! $#! 	#!  11#! #! ##! 3-#! {,<<=>#! 
#!^ BF)!)! $)! 	)! *)! )! #)! 3-)! {,<<=>)!f "&"&@
@
 @
 	@
  11@
 @
 #@
 3-@
 
@
 @
T "&"&%)Z
Z
 Z
 	Z
 *Z
 Z
 #Z
 3-Z
 c]Z
 
Z
 Z
r'   r   )typingr   r   r   openair   rA   &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   rf   r'   r$   <module>rx      s;    ( (   
 < = 1 : 6Q
+ Q
r'   