
    Ng[                         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mZ d dlmZmZmZmZmZ d dlmZ dZd	Z G d
 de          Z G d de          Z G d dee	          ZdS )    )AnyDictListOptionalN)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStrmodel_validator)enforce_stop_tokenszhttps://api.upstage.ai/v1/solarzhttps://api.upstage.aic                   >    e Zd ZU dZeed<   	 eZeed<   de	de	fdZ
dS )_SolarClientz-An API client that talks to the Solar server.api_keybase_urlrequestreturnc                     dd| j                                          i}t          j        | j         d||          }|j        st          d|j         d|j                   |	                                d         d         d	         d
         S )NAuthorizationzBearer z/chat/completions)headersjsonzHTTP z error: choicesr   messagecontent)
r   get_secret_valuerequestspostr   ok
ValueErrorstatus_codetextr   )selfr   r   responses       Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/solar.py
completionz_SolarClient.completion   s    "$Odl.K.K.M.M$O$OP=}///
 
 

 { 	TRX%9RR8=RRSSS}}y)!,Y7	BB    N)__name__
__module____qualname____doc__r   __annotations__SOLAR_SERVICE_URL_BASEr   strr   r)    r*   r(   r   r      se         770*Hc***	C# 	C# 	C 	C 	C 	C 	C 	Cr*   r   c                      e Zd ZU dZeed<   eZeed<    e	dd          Z
ee         ed<   	  e	dd	          Zeed
<   	  e	d          Zeed<   dZeed<    edddd          Zedefd            Zedeeef         fd            Zedeeef         fd            Z ed          edeeef         defd                        Zededefd            Zedefd            Z dS )SolarCommonz$Common configuration for Solar LLMs._clientr   Nr   )defaultaliassolar_api_keyzsolar-1-mini-chatmodel
model_namei   )r6   
max_tokensg333333?temperatureTignorer2   )populate_by_namearbitrary_types_allowedextraprotected_namespacesr   c                 
    ddiS )Nr8   SOLAR_API_KEYr2   r&   s    r(   
lc_secretszSolarCommon.lc_secrets;   s    11r*   c                 ,    | j         | j        | j        dS )N)r9   r;   r<   )r:   r;   r<   rD   s    r(   _default_paramszSolarCommon._default_params?   s#     _/+
 
 	
r*   c                 &    i d| j         i| j        S )Nr9   )r:   rG   rD   s    r(   _invocation_paramszSolarCommon._invocation_paramsG   s    E7DO,E0DEEr*   before)modevaluesc                     |S )Nr2   )clsrL   s     r(   build_extrazSolarCommon.build_extraK   s	     r*   c                 f   t          |dd          }|t          |          dk    rt          d          t          |          |d<   d|vr
t          |d<   d|v r7|d                             t                    st          dt          z             t          |d         |d                   |d<   |S )	Nr8   rC   r   z SOLAR_API_KEY must be configuredr   zbase_url must match with: )r   r   r5   )r
   lenr#   r	   r0   
startswithSOLAR_SERVICEr   )rN   rL   r   s      r(   validate_environmentz SolarCommon.validate_environmentP   s    &vPP?c'lla//?@@@"7"@"@V##!7F:z(:(E(Em(T(T9MIJJJ(?+fZ6H
 
 
y r*   c                     dS )Nsolarr2   rD   s    r(   	_llm_typezSolarCommon._llm_typec   s    wr*   )!r+   r,   r-   r.   r   r/   r0   r   r1   r   r8   r   r   r:   r;   intr<   floatr   model_configpropertydictrE   r   r   rG   rI   r   classmethodrO   r   rT   rW   r2   r*   r(   r4   r4   (   s        ..*Hc***).t9)M)M)MM8I&MMMOe$7wGGGJGGG]eD)))J)))K: $	  L 2D 2 2 2 X2 
c3h 
 
 
 X
 FDcN F F F XF _(###c3h C    [ $# $ 4    X$ 3    X  r*   r4   c                   p    e Zd ZdZ ed          Z	 	 ddedeee                  dee	         de
d	ef
d
ZdS )SolarzSolar large language models.

    To use, you should have the environment variable
    ``SOLAR_API_KEY`` set with your API key.
    Referenced from https://console.upstage.ai/services/solar
    T)r>   Npromptstoprun_managerkwargsr   c                     | j         }d|dg|d<   |                    |           | j                            |          }|t	          ||          }|S )Nuser)roler   messages)rI   updater5   r)   r   )r&   r`   ra   rb   rc   r   r%   s          r(   _callzSolar._callt   sd     )(.6BBC
v|&&w// 'tT22Dr*   )NN)r+   r,   r-   r.   r   rZ   r1   r   r   r   r   ri   r2   r*   r(   r_   r_   h   s          :  L %):>	  tCy! 67	
  
     r*   r_   )typingr   r   r   r   r    langchain_core.callbacksr   langchain_core.language_modelsr   langchain_core.utilsr	   r
   r   pydanticr   r   r   r   r   langchain_community.llms.utilsr   r0   rS   r   r4   r_   r2   r*   r(   <module>rp      sl   , , , , , , , , , , , ,  = = = = = = . . . . . . V V V V V V V V V V              ? > > > > >: (C C C C C9 C C C&= = = = =) = = =@    K     r*   