
    dhg                        S SK Jr  S SKrS SKJrJrJrJrJr  S SK	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JrJr  S SKJrJrJrJr  \R6                  " \5      rSS	 jrSS jr\" SSSS9 " S S
\\5      5       r g)    )annotationsN)AnyCallableDictListOptional)
deprecated)
Embeddings)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDict	SecretStr)before_sleep_logretrystop_after_attemptwait_exponentialc            
         Sn SnSnSn[        S[        U5      [        XUS9[        [        [
        R                  5      S9$ )z#Returns a tenacity retry decorator.         T)
multiplierminmax)reraisestopwaitbefore_sleep)r   r   r   r   loggerloggingWARNING)r   min_secondsmax_secondsmax_retriess       \/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/solar.py_create_retry_decoratorr'      sH     JKKK,+V%fgoo>	     SolarEmbeddingsc                B   ^  [        5       nUSU 4S jj5       nU" U0 UD6$ )z*Use tenacity to retry the completion call.c                 (   > TR                   " U 0 UD6$ )N)embed)argskwargs
embeddingss     r&   _embed_with_retry+embed_with_retry.<locals>._embed_with_retry)   s    000r(   )r-   r   r.   r   returnr   )r'   )r/   r-   r.   retry_decoratorr0   s   `    r&   embed_with_retryr4   %   s/    -/O1 1 d-f--r(   z0.0.34z1.0zlangchain_upstage.ChatUpstage)sinceremovalalternative_importc                      \ rS rSr% SrSrS\S'    SrS\S'    SrS	\S
'    \	" SS9r
\SS j5       r    SS jrSS jrSS jrSrg)r)   0   a  Solar's embedding service.

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

Example:
    .. code-block:: python

        from langchain_community.embeddings import SolarEmbeddings
        embeddings = SolarEmbeddings()

        query_text = "This is a test query."
        query_result = embeddings.embed_query(query_text)

        document_text = "This is a test document."
        document_result = embeddings.embed_documents([document_text])

z*https://api.upstage.ai/v1/solar/embeddingsstrendpoint_urlzembedding-querymodelNzOptional[SecretStr]solar_api_keyforbid)extrac                :    [        [        USS5      5      nX!S'   U$ )z'Validate api key exists in environment.r=   SOLAR_API_KEY)r   r   )clsvaluesr=   s      r&   validate_environment$SolarEmbeddings.validate_environmentR   s)     . /J
 #0r(   c                   U R                   US.nSU R                  R                  5        3SS.n[        R                  " U R
                  X2S9nUR                  5       n[        US   5      S:X  a  [        SUS	    35      eUS   S   S
   nU$ )N)r<   inputzBearer zapplication/json)AuthorizationzContent-Type)headersjsondatar   zSolar API returned an error: 	base_resp	embedding)	r<   r=   get_secret_valuerequestspostr;   rJ   len
ValueError)selftextpayloadrI   responseparsed_responserM   s          r&   r,   SolarEmbeddings.embed[   s    
 ZZ
  't'9'9'J'J'L&MN.
 ==!2!2GR"--/ v&'1,/0L/MN  $F+A.{;	r(   c                @    U Vs/ sH  n[        XS9PM     nnU$ s  snf )zEmbed documents using a Solar embedding endpoint.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
rT   r4   )rS   textsrT   r/   s       r&   embed_documentsSolarEmbeddings.embed_documentsx   s,     EJJED&t7E
J Ks   c                    [        XS9nU$ )z{Embed a query using a Solar embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
rZ   r[   )rS   rT   rM   s      r&   embed_querySolarEmbeddings.embed_query   s     %T5	r(    )rC   r   r2   r   )rT   r:   r2   List[List[float]])r\   z	List[str]r2   rc   )rT   r:   r2   zList[float])__name__
__module____qualname____firstlineno____doc__r;   __annotations__r<   r=   r   model_configr   rD   r,   r]   r`   __static_attributes__rb   r(   r&   r)   r)   0   st    & EL#D"E3"')-M&- L   
:

r(   )r2   zCallable[[Any], Any])r/   r)   r-   r   r.   r   r2   r   )!
__future__r   r!   typingr   r   r   r   r   rO   langchain_core._apir	   langchain_core.embeddingsr
   langchain_core.utilsr   r   r   pydanticr   r   r   tenacityr   r   r   r   	getLoggerrd   r    r'   r4   r)   rb   r(   r&   <module>rt      sy    "  6 6  * 0 V V 5 5  
		8	$ . 
E6U[i [[r(   