§
    æ˜ºh#"  ã                  óè   — 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 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  ej        e¦  «        Z G d
„ de¦  «        Z G d„ dee¦  «        ZdS )é    )ÚannotationsN)Úcached_property)ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptional)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLM)ÚSerializable)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úroot_validatorc                  óÈ  — 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<   	 ed(d„¦   «         Zed)d„¦   «         Zed*d „¦   «         Zed+d"„¦   «         Z e¦   «         d,d%„¦   «         Zed-d'„¦   «         ZdS ).Ú_BaseGigaChatNz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Ú	profanityFÚ	streamingÚtemperaturezOptional[int]Ú
max_tokensÚreturnÚstrc                ó   — dS )Nzgiga-chat-model© ©Úselfs    úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/gigachat.pyÚ	_llm_typez_BaseGigaChat._llm_type;   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#   r,   r-   s    r/   Ú
lc_secretsz_BaseGigaChat.lc_secrets?   s   € ð 2Ø3Ø+Ø!=ð	
ð 
ð 	
r1   c                ó   — dS )NTr,   r-   s    r/   Úlc_serializablez_BaseGigaChat.lc_serializableH   s   € àˆtr1   r   c                óÜ   — ddl }|                     | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        ¬¦  «        S )zReturns GigaChat API clientr   N)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )ÚgigachatÚGigaChatr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )r.   r<   s     r/   Ú_clientz_BaseGigaChat._clientL   su   € ð 	ˆˆˆà× Ò Ø”]Ø”]ØÔ(Ø”*ØÔ*Ø”*Ø”Ø”]Ø”LØ!Ô2ØÔ.Ø”nØ”]Ø"Ô4ð !ñ 
ô 
ð 	
r1   Úvaluesr   c                óL   — 	 ddl }n# t          $ r t          d¦  «        ‚w xY w|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`.)r<   ÚImportError)Úclsr?   r<   s      r/   Úvalidate_environmentz"_BaseGigaChat.validate_environmentb   sL   € ð	ØˆOˆOˆOˆOøÝð 	ð 	ð 	ÝðAñô ð ð	øøøð
 ˆs   ‚ ‡!úDict[str, Any]c                óD   — | j         | j        | j        | j        | j        dœS )zGet the identifying parameters.©r'   r   r%   r&   r(   rF   r-   s    r/   Ú_identifying_paramsz!_BaseGigaChat._identifying_paramsn   s-   € ð  Ô+Ø”ZØœØœØœ/ð
ð 
ð 	
r1   )r)   r*   )r)   r2   )r)   r$   )r)   r   )r?   r   r)   r   )r)   rD   )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r(   Úpropertyr0   r8   r:   r   r>   r   rC   rG   r,   r1   r/   r   r      s=  € € € € € € Ø"€HÐ"Ð"Ð"Ñ"ØØ"€HÐ"Ð"Ð"Ñ"ØØ!%€KÐ%Ð%Ð%Ñ%ØØ€EÐÐÐÑØ-à"&€LÐ&Ð&Ð&Ñ&Ø%à€EÐÐÐÑØØ€DÐÐÐÑØ%Ø"€HÐ"Ð"Ð"Ñ"Ø%à#€GÐ#Ð#Ð#Ñ#ØØ'+ÐÐ+Ð+Ð+Ñ+Ø/à$(€NÐ(Ð(Ð(Ñ(Ø#€IÐ#Ð#Ð#Ñ#Ø"€HÐ"Ð"Ð"Ñ"Ø'+ÐÐ+Ð+Ð+Ñ+ð €IÐÐÐÑØØ€IÐÐÐÑØ1Ø#'€KÐ'Ð'Ð'Ñ'Ø+Ø $€JÐ$Ð$Ð$Ñ$Ø0àð!ð !ð !ñ „Xð!ð ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð ð
ð 
ð 
ñ „_ð
ð* €^ÑÔð	ð 	ð 	ñ Ôð	ð ð
ð 
ð 
ñ „Xð
ð 
ð 
r1   r   c                  óf   — e Zd ZdZd d„Zd!d
„Z	 	 	 d"d#d„Z	 	 	 d"d$d„Z	 	 d%d&d„Z	 	 d%d'd„Z	d(d„Z
dS ))r=   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=..., verify_ssl_certs=False)
    Úmessagesú	List[str]r)   rD   c                óØ   — d„ |D ¦   «         | j         dœ}| j        �
| j        |d<   | j        �
| j        |d<   | j        r
| j        |d<   | j        rt
                               d|¦  «         |S )Nc                ó   — g | ]}d |dœ‘ŒS )r   )ÚroleÚcontentr,   )Ú.0Úms     r/   ú
<listcomp>z+GigaChat._build_payload.<locals>.<listcomp>ˆ   s    € ÐJÐJÐJ¸A &°QÐ7Ð7ÐJÐJÐJr1   )rN   Úprofanity_checkr'   r(   r   zGiga request: %s)r%   r'   r(   r   ÚverboseÚloggerÚinfo)r.   rN   Úpayloads      r/   Ú_build_payloadzGigaChat._build_payload†   sŠ   € àJÐJÀÐJÑJÔJØ#œ~ð#
ð #
ˆð ÔÐ'Ø%)Ô%5ˆG�MÑ"ØŒ?Ð&Ø$(¤OˆG�LÑ!ØŒ:ð 	*Ø#œzˆG�GÑàŒ<ð 	5Ý�KŠKÐ*¨GÑ4Ô4Ð4àˆr1   Ú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)ÚtextÚgeneration_infoÚstopz'Giga generation stopped with reason: %szGiga response: %s)Útoken_usageÚ
model_name)ÚgenerationsÚ
llm_output)Úchoicesr_   r   ÚmessagerS   ÚappendrY   ÚwarningrX   rZ   Úusager   r   )r.   r]   re   Úresr_   Úgenrc   rf   s           r/   Ú_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ÐHr1   NÚpromptsrb   ú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   )rb   rq   )re   )r&   Ú_streamr   r\   r>   Úchatrn   ©r.   ro   rb   rq   rs   rt   Úshould_streamÚ
generationÚstream_iterÚchunkr[   r]   s               r/   Ú	_generatezGigaChat._generate«   sÙ   € ð #)Ð"4˜˜¸$¼.ˆØð 	9Ø48ˆJØ&˜$œ,Ø˜”
ðØ!%°;ðð ØBHðð ˆKð %ð (ð (�ØÐ%Ø!&�J�Jà %Ñ'�J�JØÐ)Ð)Ð)Ý¨:¨,¨Ð8Ñ8Ô8Ð8à×%Ò% gÑ.Ô.ˆØ”<×$Ò$ WÑ-Ô-ˆà×&Ò& xÑ0Ô0Ð0r1   ú'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 rv   )r&   Ú_astreamr   r\   r>   Úachatrn   ry   s               r/   Ú
_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   «=Úpromptr*   úIterator[GenerationChunk]c              +  óþ   K  — |                       |g¦  «        }| j                             |¦  «        D ]I}|j        r@|j        d         j        j        }t          |¬¦  «        V — |r|                     |¦  «         ŒJd S ©Nr   )r`   )r\   r>   rs   rg   ÚdeltarS   r   Úon_llm_new_token©r.   r„   rb   rq   rt   r[   r}   rS   s           r/   rw   zGigaChat._streamá   s–   è è € ð ×%Ò% v hÑ/Ô/ˆà”\×(Ò(¨Ñ1Ô1ð 	:ð 	:ˆEØŒ}ð :Øœ-¨Ô*Ô0Ô8�Ý%¨7Ð3Ñ3Ô3Ð3Ð3Ð3Øð :Ø×0Ò0°Ñ9Ô9Ð9øð	:ð 	:r1   úAsyncIterator[GenerationChunk]c               ó  K  — |                       |g¦  «        }| j                             |¦  «        2 3 d {V —†}|j        rG|j        d         j        j        }t          |¬¦  «        W V — |r|                     |¦  «        ƒ d {V —† ŒV6 d S r‡   )r\   r>   Úastreamrg   rˆ   rS   r   r‰   rŠ   s           r/   r�   zGigaChat._astreamñ   sÎ   è è € ð ×%Ò% v hÑ/Ô/ˆàœ<×/Ò/°Ñ8Ô8ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@�%ØŒ}ð @Øœ-¨Ô*Ô0Ô8�Ý%¨7Ð3Ñ3Ô3Ð3Ð3Ð3Ð3Øð @Ø%×6Ò6°wÑ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?øð 9Ð8Ð8s   ³B	r`   Úintc                ó@   — t          t          |¦  «        dz  ¦  «        S )z"Count approximate number of tokensgffffff@)ÚroundÚlen)r.   r`   s     r/   Úget_num_tokenszGigaChat.get_num_tokens  s   € å•S˜‘Y”Y ‘_Ñ%Ô%Ð%r1   )rN   rO   r)   rD   )r]   r   r)   r   )NNN)ro   rO   rb   rp   rq   rr   rs   r   rt   r   r)   r   )ro   rO   rb   rp   rq   r   rs   r   rt   r   r)   r   )NN)
r„   r*   rb   rp   rq   rr   rt   r   r)   r…   )
r„   r*   rb   rp   rq   r   rt   r   r)   r‹   )r`   r*   r)   rŽ   )rH   rI   rJ   Ú__doc__r\   rn   r~   rƒ   rw   r�   r’   r,   r1   r/   r=   r=   z   sí   € € € € € ð	ð 	ðð ð ð ð"Ið Ið Ið Ið. %)Ø:>Ø!%ð1ð 1ð 1ð 1ð 1ð< %)Ø?CØ!%ð1ð 1ð 1ð 1ð 1ð< %)Ø:>ð	:ð :ð :ð :ð :ð& %)Ø?Cð	@ð @ð @ð @ð @ð &ð &ð &ð &ð &ð &r1   r=   )Ú
__future__r   ÚloggingÚ	functoolsr   Útypingr   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.pydantic_v1r   Ú	getLoggerrH   rY   r   r=   r,   r1   r/   ú<module>rž      se  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eðð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5à	ˆÔ	˜8Ñ	$Ô	$€ðd
ð d
ð d
ð d
ð d
�Lñ d
ô d
ð d
ðNI&ð I&ð I&ð I&ð I&ˆ}˜gñ I&ô I&ð I&ð I&ð I&r1   