
    i-                         d Z ddlmZmZmZmZ ddlZddlmZ ddl	m
Z ddlmZmZ ddlmZmZmZ ddlmZ  G d	 d
      Zy)z?
Legacy /v1/embedding transformation logic for Bedrock Cohere.
    )AnyListOptionalUnionN)#COHERE_DEFAULT_EMBEDDING_INPUT_TYPE)Logging)CohereEmbeddingRequestCohereEmbeddingRequestWithModel)EmbeddingResponsePromptTokensDetailsWrapperUsage)is_base64_encodedc                       e Zd ZdZddZdee   fdZdededefdZ	d	ede
fd
Zd	edee   dedefdZdee   dededefdZdej$                  dee   dedeeef   ded	edededefdZy)CohereEmbeddingConfigz?
    Reference: https://docs.cohere.com/v2/reference/embed
    returnNc                      y )N selfs    |/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/cohere/embed/v1_transformation.py__init__zCohereEmbeddingConfig.__init__   s        c                     dgS )Nencoding_formatr   r   s    r   get_supported_openai_paramsz1CohereEmbeddingConfig.get_supported_openai_params   s    !""r   non_default_paramsoptional_paramsc                 L    |j                         D ]  \  }}|dk(  s||d<    |S )Nr   embedding_types)items)r   r   r   kvs        r   map_openai_paramsz'CohereEmbeddingConfig.map_openai_params   s7     ',,.DAq%%56 12 / r   modelc                 
    d|v S )N3r   )r   r$   s     r   _is_v3_modelz"CohereEmbeddingConfig._is_v3_model&   s    e|r   inputinference_paramsc                     d}|D ]  }t        |      } |rt        ||d      }nt        ||t              }|j                         D ]
  \  }}|||<    |S )NFimage)r$   images
input_type)r$   textsr-   )r   r
   r   r    )	r   r$   r(   r)   
is_encoded	input_strtransformed_requestr!   r"   s	            r   _transform_requestz(CohereEmbeddingConfig._transform_request)   sy     
I*95J  "A"# #B># %**,DAq%&" - #"r   encodingmetac                 4   d}|j                  di       j                  d      }|j                  di       j                  d      }d }|'|%|D ]  }|t        |j                  |            z  }! nt        ||      }|r||z  }|r||z  }t	        |d||      S )Nr   billed_unitsinput_tokensr,   )image_tokenstext_tokens)prompt_tokenscompletion_tokenstotal_tokensprompt_tokens_details)getlenencoder   r   )	r   r(   r3   r4   r7   r9   r8   r=   texts	            r   _calculate_usagez&CohereEmbeddingConfig._calculate_usageB   s    %)XXnb%A%E%En%U&*hh~r&B&F&Fx&PFJK$7HOOD$9 ::  %?)'%! ,+&%"7	
 	
r   responseapi_keylogging_objdatamodel_responsec	                 >   |j                         }	|j                  ||d|i|	       	 |	d   }
g }|	j                  d      dk(  }t        |
t              rd}|r4|
D ].  }t        |
|         D ]  \  }}|j                  d|||d        0 n(t        |
      D ]  \  }}|j                  d||d	        d
|_        ||_        ||_	        d}|D ]  }|t        |j                  |            z  }! t        |d| j                  |||	j                  di                    |S )Ncomplete_input_dict)r(   rD   additional_argsoriginal_response
embeddingsresponse_typeembeddings_by_typeT	embedding)objectindexrO   type)rP   rQ   rO   listr   usager4   )json	post_callr>   
isinstancedict	enumerateappendrP   rF   r$   r?   r@   setattrrB   )r   rC   rD   rE   rF   rG   r$   r3   r(   response_jsonrL   output_datais_embeddings_by_typeembedding_typeidxrO   r7   rA   s                     r   _transform_responsez)CohereEmbeddingConfig._transform_response^   s^    !2D9+	 	 	

	 #<0
o.2FF 	 j$'$(! ",&/
>0J&KNC&&&1%()2$2	 'L #- #,J"7Y""*SyQ #8 !')$DC 566L  	!!%=3D3DVR3PQ	
 r   )r   N)__name__
__module____qualname____doc__r   r   strr   rX   r#   boolr'   r
   r2   r   r   rB   httpxResponser   LiteLLMLoggingObjr   r	   r   rS   ra   r   r   r   r   r      s   #T#Y #"&9=	# $ ##!%c#>B#	(#2
d3i 
3 
d 
u 
8D..D #D '	D
 D001D *D D D D 
Dr   r   )re   typingr   r   r   r   rh   litellmr   *litellm.litellm_core_utils.litellm_loggingr   rj   litellm.types.llms.bedrockr	   r
   litellm.types.utilsr   r   r   litellm.utilsr   r   r   r   r   <module>rq      s8    . -  7 S U T +O Or   