
    dh.                     ^   S SK r S SKrS SKJr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  S SK	JrJrJr  S SKJrJrJrJrJr  S S	KJr  S
r Sr!\RD                  " \#5      r$ " S S\5      r%\  \! 3S4S\%S\&S\&S\\   S\4
S jjr'S\%S\\/\4   4S jr(S\%S\S\4S jr)g)    N)AnyCallableDictListMappingOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)
ConfigDict	SecretStr)ConnectTimeoutReadTimeoutRequestException)before_sleep_logretryretry_if_exception_typestop_after_attemptwait_exponentialenforce_stop_tokenszhttps://api-nebula.symbl.aiz/v1/model/generatec                      \ 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r\\   \S'   Sr\\   \S'   Sr\\\
      \S'   Sr\\   \S'   \" SS9r\S\S\4S j5       r\S\\
\4   4S j5       r \S\!\
\4   4S j5       r"\S\
4S j5       r#S\\\
      S\S\4S jr$\%S \S!\\\
      S\
4S" j5       r&  S'S#\
S!\\\
      S$\\'   S\S\
4
S% jjr(S&r)g)(Nebula   a  Nebula Service models.

To use, you should have the environment variable ``NEBULA_SERVICE_URL``,
``NEBULA_SERVICE_PATH`` and ``NEBULA_API_KEY`` set with your Nebula
Service, or pass it as a named parameter to the constructor.

Example:
    .. code-block:: python

        from langchain_community.llms import Nebula

        nebula = Nebula(
            nebula_service_url="NEBULA_SERVICE_URL",
            nebula_service_path="NEBULA_SERVICE_PATH",
            nebula_api_key="NEBULA_API_KEY",
        )
Nmodel_kwargsnebula_service_urlnebula_service_pathnebula_api_keymodel   max_new_tokensg333333?temperaturegffffff?top_pg      ?repetition_penalty   top_kstop_sequences
   max_retriesforbid)extravaluesreturnc                     [        USS[        5      n[        USS[        5      n[        [        USSS5      5      nUR	                  S5      (       a  USS	 nUR                  S5      (       d  SU-   nX!S'   X1S'   XAS'   U$ )
z?Validate that api key and python package exists in environment.r   NEBULA_SERVICE_URLr   NEBULA_SERVICE_PATHr    NEBULA_API_KEYN/)r   DEFAULT_NEBULA_SERVICE_URLDEFAULT_NEBULA_SERVICE_PATHr   endswith
startswith)clsr.   r   r   r    s        _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/symblai_nebula.pyvalidate_environmentNebula.validate_environmentC   s     2  &	
 3!!'	
 / )9;KTR
 &&s++!3CR!8"--c22"%(;";'9#$(;$%#1     c                 v    U R                   U R                  U R                  U R                  U R                  S.$ )z2Get the default parameters for calling Cohere API.r#   r$   r(   r%   r&   r@   selfs    r;   _default_paramsNebula._default_paramsa   s7     #11++ZZZZ"&"9"9
 	
r>   c                 f    U R                   =(       d    0 nU R                  U R                  S.SU0E$ )zGet the identifying parameters.)r   r   r   )r   r   r   )rB   _model_kwargss     r;   _identifying_paramsNebula._identifying_paramsl   s?     ))/R"&"9"9#'#;#;
 }-
 	
r>   c                     g)zReturn type of llm.nebula rA   s    r;   	_llm_typeNebula._llm_typev   s     r>   kwargsc                     U R                   nU R                  b  Ub  [        S5      eU R                  b  U R                  US'   OXS'   0 UEUE$ )Nz2`stop` found in both the input and default params.r)   )rC   r)   
ValueError)rB   r)   rN   paramss       r;   _invocation_paramsNebula._invocation_params{   sb     %%*~/IQRR  ,'+':':F#$'5#$#&#F##r>   responsestopc                 :    U S   S   nU(       a  [        X!5      nU$ )Noutputtextr   )rT   rU   rX   s      r;   _process_responseNebula._process_response   s#    !&)&t2Dr>   promptrun_managerc                     U R                   " U40 UD6nUR                  5       n[        U UUU R                   U R                   3S9nUR                  S5      nU R                  Xg5      $ )a  Call out to Nebula Service endpoint.
Args:
    prompt: The prompt to pass into the model.
    stop: Optional list of stop words to use when generating.
Returns:
    The string generated by the model.
Example:
    .. code-block:: python
        response = nebula("Tell me a joke.")
)r[   rQ   urlr)   )rR   stripcompletion_with_retryr   r   getrY   )rB   r[   rU   r\   rN   rQ   rT   _stops           r;   _callNebula._call   ss    " ((88(**+D,D,D+EF	
 

+,%%h66r>   rK   )NN)*__name__
__module____qualname____firstlineno____doc__r   r   dict__annotations__r   strr   r    r   r!   r#   intr$   floatr%   r&   r(   r)   r   r+   r   model_configr   r   r<   propertyr   rC   r   rG   rL   rR   staticmethodrY   r	   rc   __static_attributes__rK   r>   r;   r   r      s   $ L#'L(4.'(,,)-#-*.NHY'.E8C=$'NHSM'#&K%&!E8E?!*--E8C=*.NHT#Y'.!#K##L $ 4  : 
c3h 
 
 
WS#X%6 
 
 3  
$&tCy1
$=@
$	
$ C xS	/B s   %):>	77 tCy!7 67	7
 7 
7 7r>   r   rB   r[   r^   rQ   r/   c                    U=(       d    0 nSnU R                   b  U R                   R                  5       nSU S.nSU0nUR                  5        H	  u  pxXU'   M     [        R                  " X%US9n	U	R
                  S:w  a%  [        SU	R
                   SU	R                   35      e[        R                  " U	R                  5      $ )	zGenerate text from the model.Nzapplication/json)zContent-TypeApiKeyr[   )headersjson   z Request failed with status code z and message )
r    get_secret_valueitemsrequestspoststatus_code	ExceptionrX   rv   loads)
rB   r[   r^   rQ   api_keyru   bodykeyvaluerT   s
             r;   make_requestr      s     \rFG&%%668*IG
 fD lln
S	 % }}S=Hs".x/C/C.DHMM?,
 	

 ::hmm$$r>   llmc           
          SnSnU R                   b  U R                   OSn[        S[        U5      [        SXS9[	        [
        [        [        45      [        [        [        R                  5      S9$ )N   r*      Tr'   )
multiplierminmax)reraiserU   waitr   before_sleep)r+   r   r   r   r   r   r   r   r   loggerloggingWARNING)r   min_secondsmax_secondsr+   s       r;   _create_retry_decoratorr      sb    KK &)__%@#//aK,M#%5~{$ST%fgoo> r>   rN   c                 \   ^  [        T 5      nUS[        S[        4U 4S jj5       nU" S0 UD6$ )z*Use tenacity to retry the completion call._kwargsr/   c                     > [        T40 U D6$ )N)r   )r   r   s    r;   _completion_with_retry5completion_with_retry.<locals>._completion_with_retry   s    C+7++r>   rK   )r   r   )r   rN   retry_decoratorr   s   `   r;   r`   r`      s=    -c2O,# ,# , , "+F++r>   )*rv   r   typingr   r   r   r   r   r   rz   langchain_core.callbacksr	   #langchain_core.language_models.llmsr
   langchain_core.utilsr   r   r   pydanticr   r   r   r   r   tenacityr   r   r   r   r   langchain_community.llms.utilsr   r6   r7   	getLoggerre   r   r   rl   r   r   r`   rK   r>   r;   <module>r      s      ? ?  = 3 V V * B B  ?: 2 			8	$N7S N7h --.I-JK!	%
%% 
% TN	%
 	%D HcUCZ,@ ",v , , ,r>   