
    dh                     p    S r SSKJrJrJr  SSKrSSKJr  SSKJ	r	J
r
Jr  SSKJrJrJr   " S S\\5      rg)	z#This file is for LLMRails Embedding    )DictListOptionalN)
Embeddings)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDict	SecretStrc                       \ rS rSr% SrSr\\S'    Sr\	\
   \S'    \" SS9r\S	\S
\4S j5       rS\\   S
\\\      4S jrS\S
\\   4S jrSrg)LLMRailsEmbeddings   a  LLMRails embedding models.

To use, you should have the  environment
variable ``LLM_RAILS_API_KEY`` set with your API key or pass it
as a named parameter to the constructor.

Model can be one of ["embedding-english-v1","embedding-multi-v1"]

Example:
    .. code-block:: python

        from langchain_community.embeddings import LLMRailsEmbeddings
        cohere = LLMRailsEmbeddings(
            model="embedding-english-v1", api_key="my-api-key"
        )
zembedding-english-v1modelNapi_keyforbid)extravaluesreturnc                 :    [        [        USS5      5      nX!S'   U$ )z,Validate that api key exists in environment.r   LLM_RAILS_API_KEY)r   r   )clsr   r   s      `/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/llm_rails.pyvalidate_environment'LLMRailsEmbeddings.validate_environment'   s*     ( 4GH
 $y    textsc                     [         R                  " SSU R                  R                  5       0XR                  S.SS9nUR                  5       S    Vs/ sH  o3S   PM	     sn$ s  snf )zCall out to Cohere's embedding endpoint.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
z&https://api.llmrails.com/v1/embeddingsz	X-API-KEY)inputr   <   )headersjsontimeoutdata	embedding)requestspostr   get_secret_valuer   r"   )selfr   responseitems       r   embed_documents"LLMRailsEmbeddings.embed_documents0   sa     ==4 $,,"?"?"AB ::6	
 /7mmof.EF.Ed[!.EFFFs   A#textc                 ,    U R                  U/5      S   $ )ztCall out to Cohere's embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r   )r,   )r)   r.   s     r   embed_queryLLMRailsEmbeddings.embed_queryA   s     ##TF+A..r    )__name__
__module____qualname____firstlineno____doc__r   str__annotations__r   r   r   r   model_configr	   r   r   r   floatr,   r0   __static_attributes__r2   r   r   r   r      s    " (E3'#'GXi 'L $ 4  GT#Y G4U3D G"	/ 	/U 	/r   r   )r7   typingr   r   r   r&   langchain_core.embeddingsr   langchain_core.utilsr   r   r	   pydanticr
   r   r   r   r2   r   r   <module>rA      s.    ) ' '  0 V V 5 5?/J ?/r   