
    dh&                    b   S SK Jr  S SKrS SKJrJrJrJrJrJ	r	J
r
JrJr  S SK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JrJrJrJrJ r J!r!J"r"  S SK#J$r$J%r%J&r&  S S	K'J(r(  \(       a  S SK)J*r+  \RX                  " \-5      r.SS
 jr/SS jr0      SS jr1\" SSSS9 " S S\(\5      5       r2g)    )annotationsN)	TYPE_CHECKINGAnyAsyncIteratorDictIteratorListMappingOptionalType)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)BaseChatModelagenerate_from_streamgenerate_from_stream)	AIMessageAIMessageChunkBaseMessageBaseMessageChunkChatMessageChatMessageChunkFunctionMessageFunctionMessageChunkHumanMessageHumanMessageChunkSystemMessageSystemMessageChunk)ChatGenerationChatGenerationChunk
ChatResult)_BaseGigaChatc                   SSK JnJn  0 nU R                  =n(       a8  [	        XA5      (       a  [        U5      US'   O[	        U[
        5      (       a  XCS'   U R                  UR                  :X  a  [        U R                  S9$ U R                  UR                  :X  a  [        U R                  S9$ U R                  UR                  :X  a  [        U R                  US9$ [        SU R                   SU  35      e)Nr   )FunctionCallMessagesRolefunction_callcontentr(   additional_kwargszGot unknown role  )gigachat.modelsr$   r%   r&   
isinstancedictroleSYSTEMr   r(   USERr   	ASSISTANTr   	TypeError)messager$   r%   r*   r&   s        `/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/chat_models/gigachat.py_convert_dict_to_messager6   2   s    : ---}-m2215m1Do.t,,1>o.|||***W__55	**	*GOO44	//	/DUVV+GLL>7)DEE    c                P   SSK JnJn  [        U [        5      (       a  U" UR
                  U R                  S9$ [        U [        5      (       a  U" UR                  U R                  S9$ [        U [        5      (       a6  U" UR                  U R                  U R                  R                  SS 5      S9$ [        U [        5      (       a!  U" U" U R                  5      U R                  S9$ [        U [        5      (       a  U" UR                   U R                  S9$ [#        SU  35      e)Nr   )Messagesr%   )r/   r(   r&   )r/   r(   r&   zGot unknown type )r,   r9   r%   r-   r   r0   r(   r   r1   r   r2   r*   getr   r/   r   FUNCTIONr3   )r4   r9   r%   s      r5   _convert_message_to_dictr<   F   s    6'=))\00'//JJ	G\	*	*\..HH	GY	'	'''OO!3377N
 	

 
G[	)	)\',,7QQ	G_	-	-\22GOOLL+G9566r7   c                   U R                  S5      nU R                  S5      =(       d    Sn0 nU R                  S5      (       a#  [        U S   5      nSU;   a  US   c  SUS'   XTS'   US:X  d
  U[        :X  a	  [        US9$ US:X  d
  U[        :X  a	  [        X4S	9$ US
:X  d
  U[        :X  a	  [	        US9$ US:X  d
  U[
        :X  a  [        X0S   S9$ U(       d
  U[        :X  a	  [        X2S9$ U" US9$ )Nr/   r(    r&   nameuserr'   	assistantr)   systemfunction)r(   r?   )r(   r/   )r:   r.   r   r   r   r   r   )_dictdefault_classr/   r(   r*   r&   s         r5   _convert_delta_to_message_chunkrF   [   s     99VDii	"(bG yy!!U?34]"}V'<'D$&M&!-:/*v~*;; 11		 ?gSS		].@@!'22		}0DD#G-HH	"22;;W--r7   z0.3.5z1.0zlangchain_gigachat.GigaChat)sinceremovalalternative_importc                      \ rS rSrSr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
rg)GigaChatu   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.chat_models import GigaChat
        giga = GigaChat(credentials=..., scope=..., verify_ssl_certs=...)
c                |   SSK Jn  U" U Vs/ sH  n[        U5      PM     snS9nUR                  SS 5      Ul        U R
                  Ul        U R                  b  U R                  Ul        U R                  b  U R                  Ul        U R                  b  U R                  Ul        U R                  b  U R                  Ul	        U R                  b  U R                  Ul
        U R                  b  U R                  Ul        U R                  (       a$  [        R                  SUR                  5       5        U$ s  snf )Nr   )Chat)messages	functionszGiga request: %s)r,   rN   r<   r:   rP   modelprofanity_checktemperaturetop_p
max_tokensrepetition_penaltyupdate_intervalverboseloggerwarningr.   )selfrO   kwargsrN   mpayloads         r5   _build_payloadGigaChat._build_payload   s   (;CD8a.q18D
 #JJ{D9

+&*&:&:G#'"&"2"2G::! JJGM??&!%G"".)-)@)@G&+&*&:&:G#<<NN-w||~>- Es   D9c                   / nUR                    H  n[        UR                  5      nUR                  n[	        U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                  5        M     UR                  UR                  S.n[        X'S9$ )Nfinish_reasonr4   generation_infostopz'Giga generation stopped with reason: %szGiga response: %s)token_usage
model_name)generations
llm_output)choicesr6   r4   rb   r   appendrY   rZ   rX   r(   usagerQ   r!   )r[   responserh   resr4   rb   genri   s           r5   _create_chat_resultGigaChat._create_chat_result   s    ##C.s{{;G--M !0- @C s#&=! |||2GOOD $ &.^^8>>R
kIIr7   Nc                    Ub  UOU R                   nU(       a   U R                  " U4X#S.UD6n[        U5      $ U R                  " U40 UD6nU R                  R                  U5      n	U R                  U	5      $ N)re   run_manager)	streaming_streamr   r_   _clientchatrp   
r[   rO   re   rt   streamr\   should_streamstream_iterr^   rm   s
             r5   	_generateGigaChat._generate   s     #)"4$..,,#@FK (44%%h9&9<<$$W-''11r7   c                   #    Ub  UOU R                   nU(       a(  U R                  " U4X#S.UD6n[        U5      I S h  vN $ U R                  " U40 UD6nU R                  R                  U5      I S h  vN n	U R                  U	5      $  NK N7frs   )ru   _astreamr   r_   rw   achatrp   ry   s
             r5   
_agenerateGigaChat._agenerate   s      #)"4$..--#@FK /{;;;%%h9&9++G44''11 < 5s!   <BB
5B4B5BBc              +    #    U R                   " U40 UD6nU R                  R                  U5       H  n[        U[        5      (       d  UR	                  5       n[        US   5      S:X  a  M<  US   S   nUR                  S0 5      R                  S0 5      n[        US   [        5      nUR                  S5      n	U	b	  [	        U	S9OS n
U(       a  UR                  U5        [        XjS9v   M     g 7fNrj   r   deltar(   rb   )rb   rc   )r_   rw   rz   r-   r.   lenr:   rF   r   on_llm_new_tokenr    r[   rO   re   rt   r\   r^   chunkchoicer(   rb   rd   s              r5   rv   GigaChat._stream   s      %%h9&9\\((1EeT**

5#$)9%a(Fjj"-11)R@G3F7O^TE"JJ7M 6C5N=1TX  ,,W5%eUU' 2s   C/C1c               
  #    U R                   " U40 UD6nU R                  R                  U5        S h  vN n[        U[        5      (       d  UR	                  5       n[        US   5      S:X  a  MB  US   S   nUR                  S0 5      R                  S0 5      n[        US   [        5      nUR                  S5      n	U	b	  [	        U	S9OS n
U(       a  UR                  U5      I S h  vN   [        XjS97v   M   N N
 g 7fr   )r_   rw   astreamr-   r.   r   r:   rF   r   r   r    r   s              r5   r   GigaChat._astream   s      %%h9&9<<//8 	V%eT**

5#$)9%a(Fjj"-11)R@G3F7O^TE"JJ7M 6C5N=1TX  !227;;;%eUU'	V" <# 9s8   /DDC=DB1D*C?+D=D?DD )rO   List[BaseMessage]r\   r   returnzgm.Chat)rm   r   r   r!   )NNN)rO   r   re   Optional[List[str]]rt   "Optional[CallbackManagerForLLMRun]rz   Optional[bool]r\   r   r   r!   )rO   r   re   r   rt   'Optional[AsyncCallbackManagerForLLMRun]rz   r   r\   r   r   r!   )NN)
rO   r   re   r   rt   r   r\   r   r   zIterator[ChatGenerationChunk])
rO   r   re   r   rt   r   r\   r   r   z"AsyncIterator[ChatGenerationChunk])__name__
__module____qualname____firstlineno____doc__r_   rp   r}   r   rv   r   __static_attributes__r   r7   r5   rK   rK   u   s3   	8J. %):>!%2#2 "2 8	2
 2 2 
2. %)?C!%2#2 "2 =	2
 2 2 
2. %):>	V#V "V 8	V
 V 
'VB %)?C	V#V "V =	V
 V 
,V Vr7   rK   )r4   gm.Messagesr   r   )r4   zgm.BaseMessager   r   )rD   zMapping[str, Any]rE   zType[BaseMessageChunk]r   r   )3
__future__r   loggingtypingr   r   r   r   r   r	   r
   r   r   langchain_core._api.deprecationr   langchain_core.callbacksr   r   *langchain_core.language_models.chat_modelsr   r   r   langchain_core.messagesr   r   r   r   r   r   r   r   r   r   r   r   langchain_core.outputsr   r    r!   !langchain_community.llms.gigachatr"   r,   modelsgm	getLoggerr   rY   r6   r<   rF   rK   r   r7   r5   <module>r      s    " 
 
 
 7 
    S R ; 			8	$F(7*..-C..4 
4
^V}m ^V
^Vr7   