§
    šŠtjÏ-  ã                  ó  — d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlmZm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 d d
lmZ d dlmZ er
d dlZd dlm Z!  ej"        e#¦  «        Z$ G d„ de¦  «        Z% G d„ de%e¦  «        Z&dS )é    )ÚannotationsN)Úcached_property)ÚTYPE_CHECKINGÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptional)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLM)ÚSerializable)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úpre_init)Ú
get_fields)Ú
ConfigDictc                  óX  — e Zd ZU dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZ	ded<   	 dZ
ded	<   	 dZded
<   	 dZded<   	 dZded<   	 dZded<   dZded<   dZded<   dZded<   dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded <   	 ed<d#„¦   «         Zed=d%„¦   «         Zed>d&„¦   «         Ze d?d(„¦   «         Z!e"d@d+„¦   «         Z#edAd-„¦   «         Z$	 dBdCd1„Z%	 dBdCd2„Z&dDd4„Z'dDd5„Z(dEd7„Z)dEd8„Z*dFd;„Z+dS )GÚ_BaseGigaChatNú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_intervalÚreturnÚstrc                ó   — dS )Nzgiga-chat-model© ©Úselfs    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/gigachat.pyÚ	_llm_typez_BaseGigaChat._llm_typeM   s   € à Ð ó    úDict[str, str]c                ó   — dddddœS )NÚGIGACHAT_CREDENTIALSÚGIGACHAT_ACCESS_TOKENÚGIGACHAT_PASSWORDÚGIGACHAT_KEY_FILE_PASSWORD)r   r   r    r'   r6   r7   s    r9   Ú
lc_secretsz_BaseGigaChat.lc_secretsQ   s   € ð 2Ø3Ø+Ø!=ð	
ð 
ð 	
r;   c                ó   — dS )NTr6   r7   s    r9   Úlc_serializablez_BaseGigaChat.lc_serializableZ   s   € àˆtr;   úgigachat.GigaChatc                ó   — ddl } |j        di d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d	| j        “d
| j	        “d| j
        “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “d| j        “ŽS )zReturns GigaChat API clientr   Nr   r   r   r   r   r   r*   r   r    r!   r#   r$   r%   r&   r'   r/   r6   )ÚgigachatÚGigaChatr   r   r   r   r   r   r*   r   r    r!   r#   r$   r%   r&   r'   r/   )r8   rG   s     r9   Ú_clientz_BaseGigaChat._client^   s  € ð 	ˆˆˆà ˆxÔ ð 
ð 
ð 
Ø”]�]ð
à”]�]ð
ð Ô(Ð(ð
ð ”*�*ð	
ð
 Ô*Ð*ð
ð ”*�*ð
ð !Ô0Ð0ð
ð ”�ð
ð ”]�]ð
ð ”L�Lð
ð "Ô2Ð2ð
ð  Ô.Ð.ð
ð ”n�nð
ð ”]�]ð
ð #Ô4Ð4ð
ð  ”L�Lð!
ð 	
r;   Úvaluesr   c                óô  — 	 ddl }n# t          $ r t          d¦  «        ‚w xY wt          t          | ¦  «                             ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        |z
  }|rt
                               d|› d�¦  «         d|v r^|                     d¦  «        du rGt
                               d¦  «         |                     d	¦  «        €|                     d¦  «        |d	<   |S )
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)ÚclsrJ   rG   ÚfieldsÚdiffs        r9   Úvalidate_environmentz"_BaseGigaChat.validate_environmentv   s  € ð	ØˆOˆOˆOˆOøÝð 	ð 	ð 	ÝðAñô ð ð	øøøõ
 •Z ‘_”_×)Ò)Ñ+Ô+Ñ,Ô,ˆÝ�6—;’;‘=”=Ñ!Ô! FÑ*ˆØð 	EÝ�NŠNÐC¨4ÐCÐCÐCÑDÔDÐDØ˜&Ð Ð  V§Z¢Z°Ñ%<Ô%<ÀÐ%EÐ%EÝ�NŠNØQñô ð ð �zŠzÐ+Ñ,Ô,Ð4Ø,2¯JªJ°{Ñ,CÔ,C�Ð(Ñ)Øˆs   ‚ ‡!úDict[str, Any]c                ó\   — | j         | j        | j        | j        | j        | j        | j        dœS )zGet the identifying parameters.)r,   r   r)   r+   r-   r0   r1   )r,   r   r*   r+   r-   r0   r1   r7   s    r9   Ú_identifying_paramsz!_BaseGigaChat._identifying_paramsŒ   s9   € ð  Ô+Ø”ZØÔ-ØœØœ/Ø”ZØ"&Ô"9ð
ð 
ð 	
r;   Úinput_ú	List[str]úList[gm.TokensCount]c                ó8   — | j                              ||¦  «        S )zGet tokens of string list)rI   Útokens_count©r8   rY   r   s      r9   r]   z_BaseGigaChat.tokens_count™   s   € ð Œ|×(Ò(¨°Ñ7Ô7Ð7r;   c              ƒ  óH   K  — | j                              ||¦  «        ƒ d{V —†S )z"Get tokens of strings list (async)N)rI   Úatokens_countr^   s      r9   r`   z_BaseGigaChat.atokens_countŸ   s2   è è € ð ”\×/Ò/°¸Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r;   ú	gm.Modelsc                ó4   — | j                              ¦   «         S )z Get available models of Gigachat)rI   Ú
get_modelsr7   s    r9   rc   z_BaseGigaChat.get_models¥   s   € àŒ|×&Ò&Ñ(Ô(Ð(r;   c              ƒ  óD   K  — | j                              ¦   «         ƒ d{V —†S )z(Get available models of Gigachat (async)N)rI   Úaget_modelsr7   s    r9   re   z_BaseGigaChat.aget_models©   s,   è è € à”\×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r;   úgm.Modelc                ó6   — | j                              |¦  «        S )zGet info about model)rI   Ú	get_model©r8   r   s     r9   rh   z_BaseGigaChat.get_model­   s   € àŒ|×%Ò% eÑ,Ô,Ð,r;   c              ƒ  óF   K  — | j                              |¦  «        ƒ d{V —†S )zGet info about model (async)N)rI   Ú
aget_modelri   s     r9   rk   z_BaseGigaChat.aget_model±   s.   è è € à”\×,Ò,¨UÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3r;   ÚtextÚintc                ó�   — | j         r!|                      |g¦  «        d         j        S t          t	          |¦  «        dz  ¦  «        S )z"Count approximate number of tokensr   gffffff@)r.   r]   ÚtokensÚroundÚlen)r8   rl   s     r9   Úget_num_tokensz_BaseGigaChat.get_num_tokensµ   sC   € àÔ"ð 	*Ø×$Ò$ d VÑ,Ô,¨QÔ/Ô6Ð6å�˜T™œ S™Ñ)Ô)Ð)r;   )r3   r4   )r3   r<   )r3   r(   )r3   rE   )rJ   r   r3   r   )r3   rV   )N)rY   rZ   r   r   r3   r[   )r3   ra   )r   r4   r3   rf   )rl   r4   r3   rm   ),Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   r   r   r   r    r!   r#   r$   r%   r&   r'   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   Úpropertyr:   rB   rD   r   rI   r   rU   rX   r]   r`   rc   re   rh   rk   rr   r6   r;   r9   r   r      sN  € € € € € € Ø"€HÐ"Ð"Ð"Ñ"ØØ"€HÐ"Ð"Ð"Ñ"ØØ!%€KÐ%Ð%Ð%Ñ%ØØ€EÐÐÐÑØ-à"&€LÐ&Ð&Ð&Ñ&Ø%à€EÐÐÐÑØØ€DÐÐÐÑØ%Ø"€HÐ"Ð"Ð"Ñ"Ø%à#€GÐ#Ð#Ð#Ñ#ØØ'+ÐÐ+Ð+Ð+Ñ+Ø/à$(€NÐ(Ð(Ð(Ñ(Ø#€IÐ#Ð#Ð#Ñ#Ø"€HÐ"Ð"Ð"Ñ"Ø'+ÐÐ+Ð+Ð+Ñ+ð €IÐÐÐÑØ+Ø&*€OÐ*Ð*Ð*Ñ*ØØ€IÐÐÐÑØ1Ø#'€KÐ'Ð'Ð'Ñ'Ø-Ø $€JÐ$Ð$Ð$Ñ$Ø0Ø$ÐÐ$Ð$Ð$Ñ$Ø-Ø€GÐÐÐÑØØ!€EÐ!Ð!Ð!Ñ!ØPØ*.ÐÐ.Ð.Ð.Ñ.Ø2Ø'+€OÐ+Ð+Ð+Ñ+ØKàð!ð !ð !ñ „Xð!ð ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð ð
ð 
ð 
ñ „_ð
ð. ðð ð ñ „Xðð* ð

ð 

ð 

ñ „Xð

ð 9=ð8ð 8ð 8ð 8ð 8ð 9=ð?ð ?ð ?ð ?ð ?ð)ð )ð )ð )ð0ð 0ð 0ð 0ð-ð -ð -ð -ð4ð 4ð 4ð 4ð*ð *ð *ð *ð *ð *r;   r   c                  ó†   — e Zd ZU dZdZded<   d!d	„Zd"d„Z	 	 	 d#d$d„Z	 	 	 d#d%d„Z		 	 d&d'd„Z
	 	 d&d(d„Z ed¬ ¦  «        ZdS ))rH   a7  `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   r4   Úpayload_roleÚmessagesrZ   r3   rV   c                óZ  ‡ — dˆ fd„|D ¦   «         i}‰ j         r
‰ j         |d<   ‰ j        �
‰ j        |d<   ‰ j        �
‰ j        |d<   ‰ j        �
‰ j        |d<   ‰ j        �
‰ j        |d<   ‰ j        �
‰ j        |d<   ‰ j        �
‰ j        |d	<   ‰ j        rt           	                    d
|¦  «         |S )Nrz   c                ó$   •— g | ]}‰j         |d œ‘ŒS ))ÚroleÚcontent)ry   )Ú.0Úmr8   s     €r9   ú
<listcomp>z+GigaChat._build_payload.<locals>.<listcomp>Í   s$   ø€ ÐUÐUÐUÀq $Ô"3ÀÐBÐBÐUÐUÐUr;   r   r*   r,   r0   r-   r1   r2   zGiga request: %s)
r   r*   r,   r0   r-   r1   r2   r/   rO   Úinfo)r8   rz   Úpayloads   `  r9   Ú_build_payloadzGigaChat._build_payloadË   sã   ø€ àÐUÐUÐUÐUÈHÐUÑUÔUð#
ˆð Œ:ð 	*Ø#œzˆG�GÑØÔÐ+Ø)-Ô)=ˆGÐ%Ñ&ØÔÐ'Ø%)Ô%5ˆG�MÑ"ØŒ:Ð!Ø#œzˆG�GÑØŒ?Ð&Ø$(¤OˆG�LÑ!ØÔ"Ð.Ø,0Ô,CˆGÐ(Ñ)ØÔÐ+Ø)-Ô)=ˆGÐ%Ñ&àŒ<ð 	5Ý�KŠKÐ*¨GÑ4Ô4Ð4àˆr;   Úresponser   r   c                ól  — g }|j         D ]‰}|j        }t          |j        j        d|i¬¦  «        }|                     |g¦  «         |dk    rt                               d|¦  «         | j        r%t           	                    d|j        j        ¦  «         ŒŠ|j
        }||j        dœ}t          ||¬¦  «        S )NÚfinish_reason)rl   Úgeneration_infoÚstopz'Giga generation stopped with reason: %szGiga response: %s)Útoken_usageÚ
model_name)ÚgenerationsÚ
llm_output)Úchoicesr‡   r   Úmessager~   ÚappendrO   rP   r/   r‚   Úusager   r   )r8   r…   rŒ   Úresr‡   ÚgenrŠ   r�   s           r9   Ú_create_llm_resultzGigaChat._create_llm_resultã   s×   € ØˆØÔ#ð 	Fð 	FˆCØÔ-ˆMÝØ”[Ô(Ø!0°-Ð @ðñ ô ˆCð ×Ò ˜uÑ%Ô%Ð%Ø Ò&Ð&Ý—’Ø=Ø!ñô ð ð Œ|ð FÝ—’Ð/°´Ô1DÑEÔEÐEøà”nˆØ%0ÀÄÐOÐOˆ
Ý [¸ZÐHÑHÔHÐHr;   NÚpromptsr‰   úOptional[List[str]]Úrun_managerú"Optional[CallbackManagerForLLMRun]Ústreamr"   Úkwargsc                ó   — |�|n| j         }|r>d } | j        |d         f||dœ|¤Ž}|D ]}	|€|	}Œ||	z  }Œ|€J ‚t          |gg¬¦  «        S |                      |¦  «        }
| j                             |
¦  «        }|                      |¦  «        S ©Nr   )r‰   r—   )rŒ   )r+   Ú_streamr   r„   rI   Úchatr”   ©r8   r•   r‰   r—   r™   rš   Úshould_streamÚ
generationÚstream_iterÚchunkrƒ   r…   s               r9   Ú	_generatezGigaChat._generateø   sÙ   € ð #)Ð"4˜˜¸$¼.ˆØð 	9Ø48ˆJØ&˜$œ,Ø˜”
ðØ!%°;ðð ØBHðð ˆKð %ð (ð (�ØÐ%Ø!&�J�Jà %Ñ'�J�JØÐ)Ð)Ð)Ý¨:¨,¨Ð8Ñ8Ô8Ð8à×%Ò% gÑ.Ô.ˆØ”<×$Ò$ WÑ-Ô-ˆà×&Ò& xÑ0Ô0Ð0r;   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  ó<  K  — |�|n| j         }|rDd } | j        |d         f||dœ|¤Ž}|2 3 d {V —†}	|€|	}Œ||	z  }Œ6 |€J ‚t          |gg¬¦  «        S |                      |¦  «        }
| j                             |
¦  «        ƒ d {V —†}|                      |¦  «        S rœ   )r+   Ú_astreamr   r„   rI   Úachatr”   rŸ   s               r9   Ú
_ageneratezGigaChat._agenerate  s  è è € ð #)Ð"4˜˜¸$¼.ˆØð 	9Ø48ˆJØ'˜$œ-Ø˜”
ðØ!%°;ðð ØBHðð ˆKð  +ð (ð (ð (ð (ð (ð (ð (�eØÐ%Ø!&�J�Jà %Ñ'�J�Jð	  +ð
 Ð)Ð)Ð)Ý¨:¨,¨Ð8Ñ8Ô8Ð8à×%Ò% gÑ.Ô.ˆØœ×+Ò+¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆà×&Ò& xÑ0Ô0Ð0s   «=ÚpromptúIterator[GenerationChunk]c              +  óþ   K  — |                       |g¦  «        }| j                             |¦  «        D ]I}|j        r@|j        d         j        j        }|r|                     |¦  «         t          |¬¦  «        V — ŒJd S ©Nr   )rl   )r„   rI   r™   rŽ   Údeltar~   Úon_llm_new_tokenr   ©r8   rª   r‰   r—   rš   rƒ   r£   r~   s           r9   r�   zGigaChat._stream.  s–   è è € ð ×%Ò% v hÑ/Ô/ˆà”\×(Ò(¨Ñ1Ô1ð 	4ð 	4ˆEØŒ}ð 4Øœ-¨Ô*Ô0Ô8�Øð :Ø×0Ò0°Ñ9Ô9Ð9Ý%¨7Ð3Ñ3Ô3Ð3Ð3Ð3øð	4ð 	4r;   úAsyncIterator[GenerationChunk]c               ó  K  — |                       |g¦  «        }| j                             |¦  «        2 3 d {V —†}|j        rG|j        d         j        j        }|r|                     |¦  «        ƒ d {V —† t          |¬¦  «        W V — ŒV6 d S r­   )r„   rI   ÚastreamrŽ   r®   r~   r¯   r   r°   s           r9   r§   zGigaChat._astream>  sÆ   è è € ð ×%Ò% v hÑ/Ô/ˆàœ<×/Ò/°Ñ8Ô8ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4�%ØŒ}ð 4Øœ-¨Ô*Ô0Ô8�Øð @Ø%×6Ò6°wÑ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ý%¨7Ð3Ñ3Ô3Ð3Ð3Ð3Ð3øð 9Ð8Ð8s   ³B	Úallow)Úextra)rz   rZ   r3   rV   )r…   r   r3   r   )NNN)r•   rZ   r‰   r–   r—   r˜   r™   r"   rš   r   r3   r   )r•   rZ   r‰   r–   r—   r¥   r™   r"   rš   r   r3   r   )NN)
rª   r4   r‰   r–   r—   r˜   rš   r   r3   r«   )
rª   r4   r‰   r–   r—   r¥   rš   r   r3   r±   )rs   rt   ru   Ú__doc__ry   rv   r„   r”   r¤   r©   r�   r§   r   Úmodel_configr6   r;   r9   rH   rH   ½   sþ   € € € € € € ð	ð 	ð €LÐÐÐÑðð ð ð ð0Ið Ið Ið Ið0 %)Ø:>Ø!%ð1ð 1ð 1ð 1ð 1ð< %)Ø?CØ!%ð1ð 1ð 1ð 1ð 1ð< %)Ø:>ð	4ð 4ð 4ð 4ð 4ð& %)Ø?Cð	4ð 4ð 4ð 4ð 4ð  �:Øðñ ô €L€L€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Ú	getLoggerrs   rO   r   rH   r6   r;   r9   ú<module>rÇ      s²  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tðð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ )Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð àð !Ø€O€O€OØ Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ða*ð a*ð a*ð a*ð a*�Lñ a*ô a*ð a*ðHSð Sð Sð Sð Sˆ}˜gñ Sô Sð Sð Sð Sr;   