
    dh-                       S SK Jr  S SKrS SKJr  S SKJrJrJrJ	r	J
r
JrJr  S SKJrJ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  S S
KJr  S SKJr  \(       a
  S SKrS SKJ r!  \RD                  " \#5      r$ " S S\5      r% " S S\%\5      r&g)    )annotationsN)cached_property)TYPE_CHECKINGAnyAsyncIteratorDictIteratorListOptional)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)BaseLLM)Serializable)
GenerationGenerationChunk	LLMResult)pre_init)
get_fields)
ConfigDictc                  l   \ rS rSr% SrS\S'    SrS\S'    SrS\S'    SrS\S'    Sr	S\S'    Sr
S\S	'    SrS\S
'    SrS\S'    SrS\S'    SrS\S'    SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S '    SrS\S!'    \S0S" j5       r\S1S# j5       r\S2S$ j5       r \!S3S% j5       r"\#S4S& j5       r$\S5S' j5       r% S6     S7S( jjr& S6     S7S) jjr'S8S* jr(S8S+ jr)S9S, jr*S9S- jr+S:S. jr,S/r-g);_BaseGigaChat   NOptional[str]base_urlauth_urlcredentialsscopeaccess_tokenmodeluserpasswordzOptional[float]timeoutOptional[bool]verify_ssl_certsca_bundle_file	cert_filekey_filekey_file_passwordTbool	profanityprofanity_checkF	streamingtemperaturezOptional[int]
max_tokensuse_api_for_tokensverbosetop_prepetition_penaltyupdate_intervalc                    g)Nzgiga-chat-model selfs    Y/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/gigachat.py	_llm_type_BaseGigaChat._llm_typeM   s         c                    SSSSS.$ )NGIGACHAT_CREDENTIALSGIGACHAT_ACCESS_TOKENGIGACHAT_PASSWORDGIGACHAT_KEY_FILE_PASSWORD)r   r   r!   r(   r5   r6   s    r8   
lc_secrets_BaseGigaChat.lc_secretsQ   s     23+!=	
 	
r;   c                    g)NTr5   r6   s    r8   lc_serializable_BaseGigaChat.lc_serializableZ   s    r;   c                   SSK nUR                  " S0 SU R                  _SU R                  _SU R                  _SU R
                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                   _SU R"                  _6$ )zReturns GigaChat API clientr   Nr   r   r   r   r   r   r+   r    r!   r"   r$   r%   r&   r'   r(   r0   r5   )gigachatGigaChatr   r   r   r   r   r   r+   r    r!   r"   r$   r%   r&   r'   r(   r0   )r7   rG   s     r8   _client_BaseGigaChat._client^   s    	   
]]
]]
 ((
 **	

 **
 **
 !00
 
 ]]
 LL
 "22
  ..
 nn
 ]]
 #44
  LL!
 	
r;   c                    SSK n[        [        U 5      R	                  5       5      n[        UR	                  5       5      U-
  nU(       a  [
        R                  SU S35        SU;   aO  UR                  S5      SL a;  [
        R                  S5        UR                  S	5      c  UR                  S5      US	'   U$ ! [         a    [        S5      ef = f)
zJValidate authenticate data in environment and python package is installed.r   NzXCould not import gigachat python package. Please install it with `pip install gigachat`.zExtra fields z in GigaChat classr*   Fz?'profanity' field is deprecated. Use 'profanity_check' instead.r+   )rG   ImportErrorsetr   keysloggerwarningget)clsvaluesrG   fieldsdiffs        r8   validate_environment"_BaseGigaChat.validate_environmentv   s    	 Z_))+,6;;=!F*NN]4&0BCD& VZZ%<%ENNQ zz+,4,2JJ{,C()  	A 	s   B; ;Cc                    U R                   U R                  U R                  U R                  U R                  U R
                  U R                  S.$ )zGet the identifying parameters.)r-   r   r*   r,   r.   r1   r2   )r-   r   r+   r,   r.   r1   r2   r6   s    r8   _identifying_params!_BaseGigaChat._identifying_params   sE      ++ZZ--//ZZ"&"9"9
 	
r;   c                8    U R                   R                  X5      $ )zGet tokens of string list)rI   tokens_countr7   input_r   s      r8   r\   _BaseGigaChat.tokens_count   s     ||((77r;   c                T   #    U R                   R                  X5      I Sh  vN $  N7f)z"Get tokens of strings list (async)N)rI   atokens_countr]   s      r8   ra   _BaseGigaChat.atokens_count   s"      \\//>>>>   (&(c                6    U R                   R                  5       $ )z Get available models of Gigachat)rI   
get_modelsr6   s    r8   re   _BaseGigaChat.get_models   s    ||&&((r;   c                R   #    U R                   R                  5       I Sh  vN $  N7f)z(Get available models of Gigachat (async)N)rI   aget_modelsr6   s    r8   rh   _BaseGigaChat.aget_models   s     \\--////s   '%'c                8    U R                   R                  U5      $ )zGet info about model)rI   	get_modelr7   r   s     r8   rk   _BaseGigaChat.get_model   s    ||%%e,,r;   c                T   #    U R                   R                  U5      I Sh  vN $  N7f)zGet info about model (async)N)rI   
aget_modelrl   s     r8   ro   _BaseGigaChat.aget_model   s      \\,,U3333rc   c                    U R                   (       a  U R                  U/5      S   R                  $ [        [	        U5      S-  5      $ )z"Count approximate number of tokensr   gffffff@)r/   r\   tokensroundlen)r7   texts     r8   get_num_tokens_BaseGigaChat.get_num_tokens   s<    ""$$dV,Q/666TS))r;   r5   )returnstr)rx   zDict[str, str])rx   r)   )rx   zgigachat.GigaChat)rS   r   rx   r   )rx   Dict[str, Any])N)r^   	List[str]r   r   rx   zList[gm.TokensCount])rx   z	gm.Models)r   ry   rx   zgm.Model)ru   ry   rx   int).__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   r   r   r    r!   r"   r$   r%   r&   r'   r(   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   propertyr9   rA   rD   r   rI   r   rV   rY   r\   ra   re   rh   rk   ro   rv   __static_attributes__r5   r;   r8   r   r      s   "Hm""Hm"!%K%E=-"&L-&%E=D-%"Hm"%#G_#'+n+/$(NM(#I}#"Hm"'+}+ It+&*O^*It1#'K'- $J$0$$-GT!E?!P*..2'+O_+K! ! 
 
   
 
.  * 

 

 9=88(58	8 9=??(5?	?)0-4*r;   r   c                      \ rS rSr% SrSrS\S'   SS jrSS jr   S           SS	 jjr	   S           SS
 jjr
  S         SS jjr  S         SS jjr\" SS9rSrg)rH      a  `GigaChat` large language models API.

To use, you should pass login and password to access GigaChat API or use token.

Example:
    .. code-block:: python

        from langchain_community.llms import GigaChat
        giga = GigaChat(credentials=..., scope=..., verify_ssl_certs=False)
r    ry   payload_rolec                .   SU Vs/ sH  o R                   US.PM     sn0nU R                  (       a  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R
                  b  U R
                  US'   U R                  b  U R                  US'   U R                  b  U R                  US	'   U R                  (       a  [        R                  S
U5        U$ s  snf )Nmessages)rolecontentr   r+   r-   r1   r.   r2   r3   zGiga request: %s)r   r   r+   r-   r1   r.   r2   r3   r0   rO   info)r7   r   mpayloads       r8   _build_payloadGigaChat._build_payload   s   HUHq"3"3BHU#
 ::#zzGG+)-)=)=G%&'%)%5%5GM"::!#zzGG??&$(OOGL!"".,0,C,CG()+)-)=)=G%&<<KK*G4) Vs   Dc                   / nUR                    H  nUR                  n[        UR                  R                  SU0S9nUR                  U/5        US:w  a  [        R                  SU5        U R                  (       d  Mp  [        R                  SUR                  R                  5        M     UR                  nXaR                  S.n[        X'S9$ )Nfinish_reason)ru   generation_infostopz'Giga generation stopped with reason: %szGiga response: %s)token_usage
model_name)generations
llm_output)choicesr   r   messager   appendrO   rP   r0   r   usager   r   )r7   responser   resr   genr   r   s           r8   _create_llm_resultGigaChat._create_llm_result   s    ##C--M[[((!0- @C u%&=! |||/1D1DE $ nn%0O
[HHr;   Nc                (   Ub  UOU R                   nU(       a>  S nU R                  " US   4X#S.UD6nU H  n	Uc  U	nM
  Xy-  nM     Uc   e[        U//S9$ U R                  U5      n
U R                  R                  U
5      nU R                  U5      $ Nr   )r   run_manager)r   )r,   _streamr   r   rI   chatr   r7   promptsr   r   streamkwargsshould_stream
generationstream_iterchunkr   r   s               r8   	_generateGigaChat._generate   s     #)"4$..48J,,
!%BHK %%!&J'J	 %
 ))):,88%%g.<<$$W-&&x00r;   c                R  #    Ub  UOU R                   nU(       a2  S nU R                  " US   4X#S.UD6nU  S h  vN n	Uc  U	nM  Xy-  nM  U R                  U5      n
U R                  R                  U
5      I S h  vN nU R                  U5      $  NV
 Uc   e[        U//S9$  N(7fr   )r,   _astreamr   r   rI   achatr   r   s               r8   
_agenerateGigaChat._agenerate  s      #)"4$..48J--
!%BHK  + (e%!&J'J %%g.++G44&&x00({
 ))):,88 5s1   5B'BBB=B'<B%=B'BB'c              +  &  #    U R                  U/5      nU R                  R                  U5       H\  nUR                  (       d  M  UR                  S   R                  R
                  nU(       a  UR                  U5        [        US9v   M^     g 7fNr   )ru   )r   rI   r   r   deltar   on_llm_new_tokenr   r7   promptr   r   r   r   r   r   s           r8   r   GigaChat._stream.  sq      %%vh/\\((1E}}}--*0088009%733 2s   A BABc               J  #    U R                  U/5      nU R                  R                  U5        S h  vN nUR                  (       d  M  UR                  S   R                  R
                  nU(       a  UR                  U5      I S h  vN   [        US97v   Mm   Nh N
 g 7fr   )r   rI   astreamr   r   r   r   r   r   s           r8   r   GigaChat._astream>  s      %%vh/<<//8 	4%}}}--*0088%66w???%733	4 @	 9s=   .B#B!BB!B#>B#
BB#B!B#!B#allow)extrar5   )r   r{   rx   rz   )r   r   rx   r   )NNN)r   r{   r   Optional[List[str]]r   "Optional[CallbackManagerForLLMRun]r   r#   r   r   rx   r   )r   r{   r   r   r   'Optional[AsyncCallbackManagerForLLMRun]r   r#   r   r   rx   r   )NN)
r   ry   r   r   r   r   r   r   rx   zIterator[GenerationChunk])
r   ry   r   r   r   r   r   r   rx   zAsyncIterator[GenerationChunk])r}   r~   r   r   __doc__r   r   r   r   r   r   r   r   r   model_configr   r5   r;   r8   rH   rH      s;   	 L#0I0 %):>!%11 "1 8	1
 1 1 
1< %)?C!%11 "1 =	1
 1 1 
1< %):>	44 "4 8	4
 4 
#4& %)?C	44 "4 =	4
 4 
(4  Lr;   rH   )'
__future__r   logging	functoolsr   typingr   r   r   r   r	   r
   r   langchain_core.callbacksr   r   #langchain_core.language_models.llmsr    langchain_core.load.serializabler   langchain_core.outputsr   r   r   langchain_core.utilsr   langchain_core.utils.pydanticr   pydanticr   rG   gigachat.modelsmodelsgm	getLoggerr}   rO   r   rH   r5   r;   r8   <module>r      sk    "  % T T T 8 9 I I ) 4  			8	$a*L a*HS}g Sr;   