
    dh                         S SK Jr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JrJr  S SKJr  \" SSS	S
9 " S S\\5      5       rg)    )AnyDictListOptional)
deprecated)
Embeddings)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validator)_create_retry_decoratorz0.0.30z1.0z!langchain_cohere.CohereEmbeddings)sinceremovalalternative_importc            	          \ rS rSr% SrSr\\S'    Sr\\S'    Sr	\
\S'    Sr\\
   \S'    Sr\\
   \S	'   S
r\\S'    Sr\\   \S'    Sr\
\S'    \" SS9r\" SS9\S\S\4S j5       5       rS\S\4S jrS\S\4S jrSS.S\\
   S\\
   S\\\      4S jjrSS.S\\
   S\\
   S\\\      4S jjrS\\
   S\\\      4S jrS\\
   S\\\      4S jrS \
S\\   4S! jr S \
S\\   4S" jr!S#r"g)$CohereEmbeddings   a  Cohere embedding models.

To use, you should have the ``cohere`` python package installed, and the
environment variable ``COHERE_API_KEY`` set with your API key or pass it
as a named parameter to the constructor.

Example:
    .. code-block:: python

        from langchain_community.embeddings import CohereEmbeddings
        cohere = CohereEmbeddings(
            model="embed-english-light-v3.0",
            cohere_api_key="my-api-key"
        )
Nclientasync_clientzembed-english-v2.0modeltruncatecohere_api_key   max_retriesrequest_timeout	langchain
user_agentforbid)extrabefore)modevaluesreturnc                     [        USS5      nUR                  S5      n SSKnUS   nUR                  UUUS9US'   UR	                  UUUS9US	'   U$ ! [
         a    [        S
5      ef = f)z?Validate that api key and python package exists in environment.r   COHERE_API_KEYr   r   Nr   )timeoutclient_namer   r   zTCould not import cohere python package. Please install it with `pip install cohere`.)r	   getcohereClientAsyncClientImportError)clsr"   r   r   r)   r'   s         ]/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/cohere.pyvalidate_environment%CohereEmbeddings.validate_environment8   s     .$&6
 !**%67	 .K%}}''  -  F8
 &,%7%7'' &8 &F>"   	? 	s   1A A)kwargsc                 p   ^  [        T R                  5      nUS[        S[        4U 4S jj5       nU" S0 UD6$ )%Use tenacity to retry the embed call.r1   r#   c                  <   > TR                   R                  " S0 U D6$ N )r   embedr1   selfs    r.   _embed_with_retry<CohereEmbeddings.embed_with_retry.<locals>._embed_with_retryZ   s    ;;$$.v..    r6   r   r   r   r9   r1   retry_decoratorr:   s   `   r.   embed_with_retry!CohereEmbeddings.embed_with_retryV   sC    1$2B2BC		/ 	/ 	/ 
	/ !*6**r<   c                 p   ^  [        T R                  5      nUS[        S[        4U 4S jj5       nU" S0 UD6$ )r3   r1   r#   c                  X   >#    TR                   R                  " S0 U D6I S h  vN $  N7fr5   )r   r7   r8   s    r.   r:   =CohereEmbeddings.aembed_with_retry.<locals>._embed_with_retryd   s&     **00:6::::s    *(*r6   r=   r>   s   `   r.   aembed_with_retry"CohereEmbeddings.aembed_with_retry`   sC    1$2B2BC		;c 	;c 	; 
	; !*6**r<   
input_typetextsrH   c          	          U R                  U R                  UUU R                  S9R                  nU Vs/ sH  n[	        [        [        U5      5      PM     sn$ s  snf N)r   rI   rH   r   )r@   r   r   
embeddingslistmapfloatr9   rI   rH   rL   es        r.   r7   CohereEmbeddings.embedj   s\     ****!]]	 + 

 * 	 .88ZS]#Z888s   "Ac          	         #    U R                  U R                  UUU R                  S9I S h  vN R                  nU Vs/ sH  n[	        [        [        U5      5      PM     sn$  N7s  snf 7frK   )rE   r   r   rL   rM   rN   rO   rP   s        r.   aembedCohereEmbeddings.aembedu   sk      ((jj%	 )   * 	 .88ZS]#Z88 9s    *A+A$A+"A&!A+&A+c                 "    U R                  USS9$ )zEmbed a list of document texts.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
search_documentrG   r7   r9   rI   s     r.   embed_documents CohereEmbeddings.embed_documents   s     zz%,=z>>r<   c                 >   #    U R                  USS9I Sh  vN $  N7f)zAsync call out to Cohere's embedding endpoint.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
rW   rG   NrT   rY   s     r.   aembed_documents!CohereEmbeddings.aembed_documents   s!      [[3D[EEEEs   textc                 *    U R                  U/SS9S   $ )ztCall out to Cohere's embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
search_queryrG   r   rX   r9   r`   s     r.   embed_queryCohereEmbeddings.embed_query   s     zz4&^z<Q??r<   c                 F   #    U R                  U/SS9I Sh  vN S   $  N7f)zzAsync call out to Cohere's embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
rb   rG   Nr   r]   rc   s     r.   aembed_queryCohereEmbeddings.aembed_query   s'      kk4&^kDDaHHDs   !!r6   )#__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   strr   r   r   r   intr   rO   r   r   model_configr   classmethodr   r/   r@   rE   r   r7   rT   rZ   r^   rd   rg   __static_attributes__r6   r<   r.   r   r      s     FCL#%E3%"Hhsm"X$(NHSM(K<'+OXe_+8!J!<L (#$ 3   $8+ + ++# +# + @D	9#Y	9/7}	9	d5k		9 @D9#Y9/7}9	d5k	9	?T#Y 	?4U3D 	?	FDI 	F$tE{:K 	F	@ 	@U 	@	Is 	ItE{ 	Ir<   r   N)typingr   r   r   r   langchain_core._api.deprecationr   langchain_core.embeddingsr   langchain_core.utilsr	   pydanticr
   r   r   langchain_community.llms.coherer   r   r6   r<   r.   <module>rz      sN    , , 6 0 5 ; ; C 
:
\Iy* \I
\Ir<   