§
    šŠtjT  ã                   óØ   — 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       ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/solar.pyÚ
completionz_SolarClient.completion   s    € Ø"Ð$O¨d¬l×.KÒ.KÑ.MÔ.MÐ$OÐ$OÐPˆÝ”=ØŒ}Ð/Ð/Ð/ØØð
ñ 
ô 
ˆð
 Œ{ð 	TÝÐR XÔ%9ÐRÐRÀ8Ä=Ð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Ø*€HˆcÐ*Ð*Ñ*ð	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-miniÚ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   € àE�7˜DœOÐ,Ð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 '™lœl¨aÒ/Ð/ÝÐ?Ñ@Ô@Ð@å"7¸Ñ"@Ô"@ˆˆÑà˜VÐ#Ð#Ý!7ˆF�:Ñà˜ÐÐ¨¨zÔ(:×(EÒ(EÅmÑ(TÔ(TÐÝÐ9½MÑIÑJÔJÐJå(Ø˜?Ô+°f¸ZÔ6Hð
ñ 
ô 
ˆˆ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ý  € € € € € € Ø.Ð.àÐÐÑØ*€HˆcÐ*Ð*Ñ*Ø).¨°tÀ9Ð)MÑ)MÔ)M€M�8˜IÔ&ÐMÐMÑMØOØ�e L¸Ð@Ñ@Ô@€J�Ð@Ð@Ñ@Ø]Ø�e DÐ)Ñ)Ô)€J�Ð)Ð)Ñ)Ø€K�ÐÐÑà�:ØØ $ØØð	ñ ô €Lð ð2˜Dð 2ð 2ð 2ñ „Xð2ð ð
  c¨3 h¤ð 
ð 
ð 
ñ „Xð
ð ðF D¨¨c¨¤Nð Fð Fð Fñ „XðFð €_˜(Ð#Ñ#Ô#Øð  c¨3 h¤ð °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 )ÚSolarzÂSolar 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Ñ/Ô/ˆØÐõ ' t¨TÑ2Ô2ˆDàˆr*   )NN)r+   r,   r-   r.   r   rZ   r1   r   r   r   r   ri   r2   r*   r(   r_   r_   h   s™   € € € € € ðð ð �:Øðñ ô €Lð %)Ø:>ð	ð àðð �t˜C”yÔ!ðð Ð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*   