§
    šŠtjºM  ã            	       óD  — d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlZd dlmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z' d d	l(m)Z)m*Z* d d
l+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 dZ3 e j4        e5¦  «        Z6dedee         defd„Z7dedee8ef         fd„Z9dedefd„Z:dedefd„Z;dee         dee         fd„Z<dej=        ddfd„Z>dej=        ddfd„Z? G d„ de¦  «        Z@	 d!de@de	eeef                  deegef         fd „ZAdS )"é    N)ÚAnyÚAsyncContextManagerÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚOptionalÚTupleÚTypeÚUnionÚcast)ÚSSEError)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚLangSmithParams)Úcreate_base_retry_decorator)
Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessageÚSystemMessageChunk)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úconvert_to_secret_strÚget_from_env)ÚAliasChoicesÚ
ConfigDictÚFieldÚ	SecretStrÚmodel_validator)ÚSelfz%https://clovastudio.stream.ntruss.comÚsseÚdefault_classÚreturnc                 ó  — |                       ¦   «         }| j        dk    r t          |¦  «        }t          d|¬¦  «        S |                     d¦  «        }|                     d¦  «        }|                     d¦  «        pd}|dk    s|t
          k    rt          |¬¦  «        S |d	k    s|t          k    rt          |¬¦  «        S |d
k    s|t          k    rt          |¬¦  «        S |s|t          k    rt          ||¬¦  «        S  ||¬¦  «        S )NÚresultÚ )ÚcontentÚresponse_metadataÚmessageÚroler0   Úuser)r0   Ú	assistantÚsystem)r0   r3   )ÚjsonÚeventÚ_sse_data_to_response_metadatar   Úgetr   r   r   )r*   r+   Ússe_datar1   r2   r3   r0   s          úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/naver.pyÚ_convert_chunk_to_message_chunkr=   5   s#  € ð �xŠx‰zŒz€HØ
„y�HÒÐÝ:¸8ÑDÔDÐÝ bÐ<MÐNÑNÔNÐNà�lŠl˜9Ñ%Ô%€GØ�;Š;�vÑÔ€DØ�kŠk˜)Ñ$Ô$Ð*¨€GØˆv‚~€~˜Õ*;Ò;Ð;Ý ¨Ð1Ñ1Ô1Ð1Ø	�Ò	Ð	 µÒ ?Ð ?Ý gÐ.Ñ.Ô.Ð.Ø	�Ò	Ð	˜]Õ.@Ò@Ð@Ý!¨'Ð2Ñ2Ô2Ð2Ø	ð .�Õ"2Ò2Ð2Ý¨°dÐ;Ñ;Ô;Ð;àˆ} WÐ-Ñ-Ô-Ð-ó    r;   c                 ó    — i }d| v r| d         |d<   d| v r| d         |d<   d| v r| d         |d<   d| v r| d         |d<   d| v r| d         |d	<   |S )
NÚ
stopReasonÚstop_reasonÚinputLengthÚinput_lengthÚoutputLengthÚoutput_lengthÚseedÚaiFilterÚ	ai_filter© )r;   r1   s     r<   r9   r9   L   s•   € ØÐØ�xÐÐØ+3°LÔ+AÐ˜-Ñ(Ø˜Ð Ð Ø,4°]Ô,CÐ˜.Ñ)Ø˜Ð!Ð!Ø-5°nÔ-EÐ˜/Ñ*Ø�ÐÐØ$,¨VÔ$4Ð˜&Ñ!Ø�XÐÐØ)1°*Ô)=Ð˜+Ñ&ØÐr>   r2   c                 ó¼  — t          | t          ¦  «        rt          | j        | j        ¬¦  «        S t          | t
          ¦  «        rt          d| j        ¬¦  «        S t          | t          ¦  «        rt          d| j        ¬¦  «        S t          | t          ¦  «        rt          d| j        ¬¦  «        S t           	                    d¦  «         t          d| › �¦  «        ‚)N)r3   r0   r4   r6   r5   zmFunctionMessage, ToolMessage not yet supported (https://api.ncloud-docs.com/docs/clovastudio-chatcompletions)zGot unknown type )Ú
isinstancer   Údictr3   r0   r   r   r   ÚloggerÚwarningÚ
ValueError©r2   s    r<   Ú&_convert_message_to_naver_chat_messagerQ   [   s×   € õ �'�;Ñ'Ô'ð 8Ý˜œ¨w¬Ð?Ñ?Ô?Ð?Ý	�G�\Ñ	*Ô	*ð 8Ý˜¨¬Ð9Ñ9Ô9Ð9Ý	�G�]Ñ	+Ô	+ð 	8Ý˜¨7¬?Ð;Ñ;Ô;Ð;Ý	�G�YÑ	'Ô	'ð 8Ý˜¨g¬oÐ>Ñ>Ô>Ð>å�ŠðMñ	
ô 	
ð 	
õ Ð6¨WÐ6Ð6Ñ7Ô7Ð7r>   Ú_messagec                 óR  — | d         }|dv sJ d|› �¦   «         ‚t          t          | d         ¦  «        }i }|dk    rt          ||¬¦  «        S |dk    rt          ||¬¦  «        S |dk    rt	          ||¬¦  «        S t
                               d	|¦  «         t          d
|› �¦  «        ‚)Nr3   )r5   r6   r4   z7Expected role to be 'assistant', 'system', 'user', got r0   r4   )r0   Úadditional_kwargsr6   r5   zGot unknown role %szGot unknown role )r   Ústrr   r   r   rM   rN   rO   )rR   r3   r0   rT   s       r<   Ú&_convert_naver_chat_message_to_messagerV   n   s  € ð �FÔ€DØð ð ð ð ð HÀÐGÐGñ	ô ð õ
 •3˜ Ô+Ñ,Ô,€GØ Ðàˆv‚~€~ÝØØ/ð
ñ 
ô 
ð 	
ð 
�Ò	Ð	ÝØØ/ð
ñ 
ô 
ð 	
ð 
�Ò	Ð	ÝØØ/ð
ñ 
ô 
ð 	
õ
 	�ŠÐ,¨dÑ3Ô3Ð3ÝÐ3¨TÐ3Ð3Ñ4Ô4Ð4r>   Úevent_source_mgrc                ó¸  K  — | 4 ƒd{V —†}t          |j        ¦  «        ƒ d{V —† |                     ¦   «         2 3 d{V —†}|                     ¦   «         }|j        dk    r.|                     di ¦  «        dk    r ddd¦  «        ƒd{V —† dS |j        dk    rt          |j        ¬¦  «        ‚|W V — Œz6 	 ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )z$Iterate over the server-sent events.NÚsignalÚdataú[DONE]ÚerrorrP   )Ú_araise_on_errorÚresponseÚ	aiter_sser7   r8   r:   r   rZ   )rW   Úevent_sourcer*   Ú
event_datas       r<   Ú
_aiter_sserb   Ž   sÒ  è è € ð  ð ð ð ð ð ð ð  <Ý˜|Ô4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø%×/Ò/Ñ1Ô1ð 	ð 	ð 	ð 	ð 	ð 	ð 	�#ØŸš™œˆJØŒy˜HÒ$Ð$¨¯ª¸ÀÑ)CÔ)CÀxÒ)OÐ)OØðð ð ñ ô ð ð ð ð ð ð ð ð ð ð Œy˜GÒ#Ð#Ý s¤xÐ0Ñ0Ô0Ð0ØˆIˆIˆIˆIˆIð 2Ð1ðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð s"   ‹/C	ºB4Á ;C	Â'C	Ã	
CÃCr^   c                 óú   — t           j                             | j        ¦  «        rV|                      ¦   «                              d¦  «        }t          j        d| j        › d| j        › d|› �| j        | ¬¦  «        ‚dS )ú+Raise an error if the response is an error.úutf-8úError response ú while fetching ú: ©Úrequestr^   N)	ÚhttpxÚcodesÚis_errorÚstatus_codeÚreadÚdecodeÚHTTPStatusErrorÚurlrj   ©r^   Úerror_messages     r<   Ú_raise_on_errorru   �   s•   € å„{×Ò˜HÔ0Ñ1Ô1ð 
Ø Ÿš™œ×.Ò.¨wÑ7Ô7ˆÝÔ#ð>˜hÔ2ð >ð >Ø&œlð>ð >Ø.;ð>ð >àÔ$Øð	
ñ 
ô 
ð 	
ð
ð 
r>   c              ƒ   ó
  K  — t           j                             | j        ¦  «        r\|                      ¦   «         ƒ d{V —†                     d¦  «        }t          j        d| j        › d| j        › d|› �| j        | ¬¦  «        ‚dS )rd   Nre   rf   rg   rh   ri   )	rk   rl   rm   rn   Úareadrp   rq   rr   rj   rs   s     r<   r]   r]   ©   s­   è è € å„{×Ò˜HÔ0Ñ1Ô1ð 
Ø'Ÿ~š~Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/×7Ò7¸Ñ@Ô@ˆÝÔ#ð>˜hÔ2ð >ð >Ø&œlð>ð >Ø.;ð>ð >àÔ$Øð	
ñ 
ô 
ð 	
ð
ð 
r>   c                   ó  ‡ — e Zd ZU dZ ed¬¦  «        Zeej                 e	d<    ed¬¦  «        Z
eej                 e	d<    ed edd¦  «        d	¬
¦  «        Zee	d<    edd¬¦  «        Zee         e	d<    edd¬¦  «        Zee	d<    edd¬¦  «        Zee         e	d<   	  edd¬¦  «        Zee         e	d<   	  edd¬¦  «        Zee	d<   	  eddd¬¦  «        Zee         e	d<    eddd¬¦  «        Zee         e	d <    eddd!¬¦  «        Zee         e	d"<    edd#d$¬¦  «        Zee         e	d%<    edd&d'¬¦  «        Zee         e	d(<    edd)¬¦  «        Zeee                  e	d*<    ed¬¦  «        Zee         e	d+<    edd,d¬¦  «        Z ee         e	d-<    edd.¬/¦  «        Z!ee	d0<    ed1d2¬3¦  «        Z"ee	d4<    e#d5d6¬7¦  «        Z$e%d8e&ee'f         fd9„¦   «         Z(e%d8e&ee'f         fd:„¦   «         Z)e%d8e&eef         fd;„¦   «         Z*e%d8efd<„¦   «         Z+	 dRd)ee,e                  d=e'd8e-fˆ fd>„Z.e%d8e&ee'f         fd?„¦   «         Z/e%d8efd@„¦   «         Z0 e1dA¬B¦  «        d8e2fdC„¦   «         Z3d8efdD„Z4dSdE„Z5d8e&ee'f         fdF„Z6dGe,e7         d)ee,e                  d8e8e,e&         e&ee'f         f         fdH„Z9d=e'd8e'fdI„Z:	 dRdJee;         d=e'd8e'fdK„Z<dLe&d8e=fdM„Z>	 	 dTdGe,e7         d)ee,e                  dJee?         d=e'd8e=f
dN„Z@	 	 dTdGe,e7         d)ee,e                  dJee?         d=e'd8eAeB         f
dO„ZC	 	 dTdGe,e7         d)ee,e                  dJee;         d=e'd8e=f
dP„ZD	 	 dTdGe,e7         d)ee,e                  dJee;         d=e'd8eEeB         f
dQ„ZFˆ xZGS )UÚ
ChatClovaXaã  `NCP ClovaStudio` Chat Completion API.

    following environment variables set or passed in constructor in lower case:
    - ``NCP_CLOVASTUDIO_API_KEY``
    - ``NCP_APIGW_API_KEY``

    Example:
        .. code-block:: python

            from langchain_core.messages import HumanMessage

            from langchain_community import ChatClovaX

            model = ChatClovaX()
            model.invoke([HumanMessage(content="Come up with 10 names for a song about parrots.")])
    N)ÚdefaultÚclientÚasync_clientzHCX-003Ú
model_nameÚmodelzNCP ClovaStudio chat model name)rz   Úvalidation_aliasÚdescriptionz*NCP Clova Studio chat model tuning task ID)rz   r€   Útask_idFz=false: use testapp, true: use service app on NCP Clova StudioÚservice_appÚapi_key)rz   ÚaliasÚncp_clovastudio_api_keyÚapigw_api_keyÚncp_apigw_api_keyr/   Úbase_urlg        g      ð?g      à?)ÚgtÚlerz   Útemperaturer   é€   )ÚgerŠ   rz   Útop_kgš™™™™™é?Útop_pé
   g      @Úrepeat_penaltyi   éd   Ú
max_tokensÚstopÚstop_beforeÚinclude_ai_filtersl   ÿÿ rF   éZ   )r‰   rz   Útimeouté   é   )r�   rz   Úmax_retriesTrI   )Úpopulate_by_nameÚprotected_namespacesr,   c           	      ó¨   — | j         | j        | j        | j        | j        | j        | j        | j        dœ}d„ |                     ¦   «         D ¦   «         }|S )z/Get the default parameters for calling the API.)r‹   ÚtopKÚtopPÚrepeatPenaltyÚ	maxTokensÚ
stopBeforeÚincludeAiFiltersrF   c                 ó   — i | ]
\  }}|®||“ŒS ©NrI   )Ú.0ÚkÚvs      r<   ú
<dictcomp>z.ChatClovaX._default_params.<locals>.<dictcomp>ý   s   € ÐGÐGÐG™T˜Q ¸¸�A�q¸¸¸r>   )	r‹   rŽ   r�   r‘   r“   r•   r–   rF   Úitems)ÚselfÚdefaultsÚfiltereds      r<   Ú_default_paramszChatClovaX._default_paramsð   sa   € ð  Ô+Ø”JØ”JØ!Ô0ØœØÔ*Ø $Ô 7Ø”Ið	
ð 	
ˆð HÐG X§^¢^Ñ%5Ô%5ÐGÑGÔGˆØˆr>   c                 ó.   — | j         | j        d<   | j        S )zGet the identifying parameters.r}   )r}   r¯   ©r¬   s    r<   Ú_identifying_paramszChatClovaX._identifying_params   s   € ð .2¬_ˆÔ˜\Ñ*ØÔ#Ð#r>   c                 ó<   — |                       ¦   «         sddiS dddœS )Nr…   ÚNCP_CLOVASTUDIO_API_KEYÚNCP_APIGW_API_KEY)r…   r‡   )Ú_is_new_api_keyr±   s    r<   Ú
lc_secretszChatClovaX.lc_secrets  s>   € à×#Ò#Ñ%Ô%ð 	à)Ð+Dðð ð
 ,EØ%8ðð ð r>   c                 ó   — dS )zReturn type of chat model.z
chat-naverrI   r±   s    r<   Ú	_llm_typezChatClovaX._llm_type  s	   € ð ˆ|r>   Úkwargsc                 óH   •—  t          ¦   «         j        dd|i|¤Ž}d|d<   |S )z,Get the parameters used to invoke the model.r”   ÚnaverÚls_providerrI   )ÚsuperÚ_get_ls_params)r¬   r”   rº   ÚparamsÚ	__class__s       €r<   r¿   zChatClovaX._get_ls_params  s5   ø€ ð (•‘”Ô'Ð<Ð<¨TÐ<°VÐ<Ð<ˆØ 'ˆˆ}ÑØˆr>   c                 ó   — | j         S )z'Get the parameters used for the client.)r¯   r±   s    r<   Ú_client_paramszChatClovaX._client_params  s   € ð Ô#Ð#r>   c                 óx   — | j         rdnd}| j        r| j        › d|› d| j        › d�S | j        › d|› d| j        › �S )zGET chat completion api urlÚ
serviceappÚtestappú/z
/v1/tasks/z/chat-completionsz/v1/chat-completions/)r‚   r�   rˆ   r}   )r¬   Úapp_types     r<   Ú_api_urlzChatClovaX._api_url$  sg   € ð $(Ô#3ÐB�<�<¸ˆàŒ<ð 	Wà”=ÐVÐV 8ÐVÐV°t´|ÐVÐVÐVðð ”mÐVÐV hÐVÐVÀTÄ_ÐVÐVÐVr>   Úafter)Úmodec                 ó"  — | j         s| j        st          d¦  «        ‚| j        s"t	          t          dd¦  «        ¦  «        | _        |                      ¦   «         s|                      ¦   «          | j        st          ddt          ¦  «        | _        | j
        s8t          j        | j        |                      ¦   «         | j        ¬¦  «        | _
        | j        s8t          j        | j        |                      ¦   «         | j        ¬¦  «        | _        | S )Nz6either model_name or task_id must be assigned a value.r…   r´   rˆ   ÚNCP_CLOVASTUDIO_API_BASE_URL)rˆ   Úheadersr˜   )r}   r�   rO   r…   r"   r#   r¶   Ú_init_fields_on_old_api_keyrˆ   Ú_DEFAULT_BASE_URLr{   rk   ÚClientÚdefault_headersr˜   r|   ÚAsyncClientr±   s    r<   Úvalidate_model_afterzChatClovaX.validate_model_after0  s"  € à”ð 	W 4¤<ð 	WÝÐUÑVÔVÐVàÔ+ð 	Ý+@ÝÐ6Ð8QÑRÔRñ,ô ,ˆDÔ(ð ×#Ò#Ñ%Ô%ð 	/Ø×,Ò,Ñ.Ô.Ð.àŒ}ð 	Ý(ØÐ:Õ<Mñô ˆDŒMð Œ{ð 	Ýœ,ØœØ×,Ò,Ñ.Ô.Øœðñ ô ˆDŒKð Ô ð 	Ý %Ô 1ØœØ×,Ò,Ñ.Ô.Øœð!ñ !ô !ˆDÔð ˆr>   c                 ól   — | j         r,| j                              ¦   «                              d¦  «        S dS )Nznv-F)r…   Úget_secret_valueÚ
startswithr±   s    r<   r¶   zChatClovaX._is_new_api_keyR  s5   € ØÔ'ð 	ØÔ/×@Ò@ÑBÔB×MÒMÈeÑTÔTÐTà�5r>   c                 ó^   — | j         s%t          t          ddd¦  «        ¦  «        | _         d S d S )Nr‡   rµ   r/   )r‡   r"   r#   r±   s    r<   rÏ   z&ChatClovaX._init_fields_on_old_api_keyX  s@   € ØÔ%ð 	Ý%:ÝÐ0Ð2EÀrÑJÔJñ&ô &ˆDÔ"Ð"Ð"ð	ð 	r>   c                 óî   — dddœ}| j         r| j                              ¦   «         nd }|                      ¦   «         r	d|› �|d<   n0|r||d<   | j        r| j                             ¦   «         nd }|r||d<   |S )Nzapplication/json)zContent-TypeÚAcceptzBearer ÚAuthorizationzX-NCP-CLOVASTUDIO-API-KEYzX-NCP-APIGW-API-KEY)r…   rÖ   r¶   r‡   )r¬   rÎ   Úclovastudio_api_keyr†   s       r<   rÒ   zChatClovaX.default_headers^  sÂ   € à.Ø(ð
ð 
ˆð Ô+ðˆDÔ(×9Ò9Ñ;Ô;Ð;àð 	ð ×ÒÑ!Ô!ð 	?à'FÐ1DÐ'FÐ'FˆG�OÑ$Ð$ð #ð KØ7J�Ð3Ñ4ð Ô)ð�Ô&×7Ò7Ñ9Ô9Ð9àð ð
 ð ?Ø1>�Ð-Ñ.àˆr>   Úmessagesc                 óF   — | j         }|�	d|v r||d<   d„ |D ¦   «         }||fS )Nr£   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rI   )rQ   )r§   Úms     r<   ú
<listcomp>z4ChatClovaX._create_message_dicts.<locals>.<listcomp>ƒ  s!   € ÐUÐUÐUÀqÕ?ÀÑBÔBÐUÐUÐUr>   )rÃ   )r¬   rÝ   r”   rÀ   Úmessage_dictss        r<   Ú_create_message_dictsz ChatClovaX._create_message_dicts|  sD   € ð Ô$ˆØÐ °Ð 6Ð 6Ø#'ˆF�<Ñ àUÐUÈHÐUÑUÔUˆØ˜fÐ$Ð$r>   c                 ó<  ‡ ‡‡‡— ddl m}mŠ d‰vrd‰d<   ‰d         }t          t          j        ‰ j        ¦  «        Š|r dt          |         fˆˆˆˆ fd„} |¦   «         S ‰                     ‰ j	        ‰¬¦  «        }t          |¦  «         |                     ¦   «         S )Nr   )ÚServerSentEventÚconnect_sseÚstreamFr,   c               3   ó”  •K  —  ‰‰d‰j         ‰¬¦  «        5 } t          | j        ¦  «         |                      ¦   «         D ]m}|                     ¦   «         }|j        dk    r(|                     di ¦  «        dk    r d d d ¦  «         d S |j        dk    rt          |j        ¬¦  «        ‚|V — Œn	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚPOST©r7   rY   rZ   r[   r\   rP   )	rÉ   ru   r^   Úiter_sser7   r8   r:   r   rZ   )r`   r*   ra   r{   ræ   rº   r¬   s      €€€€r<   rë   z3ChatClovaX._completion_with_retry.<locals>.iter_sse“  sG  øè è € Ø �[Ø˜F D¤M¸ðñ ô ð "à!Ý# LÔ$9Ñ:Ô:Ð:Ø+×4Ò4Ñ6Ô6ð 	"ð 	"˜Ø%(§X¢X¡Z¤Z˜
àœI¨Ò1Ð1Ø *§¢¨v°rÑ :Ô :¸hÒ FÐ Fà"ð"ð "ð "ñ "ô "ð "ð "ð "ð œ9¨Ò/Ð/Ý"*°3´8Ð"<Ñ"<Ô"<Ð<Ø!˜	˜	˜	˜	ð	"ð	"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   ˜A%B=Â
%B=Â=CÃC©rr   r7   )Ú	httpx_sserå   ræ   r   rk   rÑ   r{   r   ÚpostrÉ   ru   r7   )r¬   rº   rå   rç   rë   r^   r{   ræ   s   ``    @@r<   Ú_completion_with_retryz!ChatClovaX._completion_with_retry†  sä   øøøø€ ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
 ˜6Ð!Ð!Ø$ˆF�8Ñà˜Ô!ˆÝ•e”l D¤KÑ0Ô0ˆØð 	#ð"�h Ô7ð "ð "ð "ð "ð "ð "ð "ð "ð "ð  �8‘:”:Ðà—{’{ t¤}¸6�{ÑBÔBˆHÝ˜HÑ%Ô%Ð%Ø—=’=‘?”?Ð"r>   Úrun_managerc              ‹   ó�   ‡ ‡K  — ddl mŠ 	 t          ‰ |¬¦  «        }|dt          dt          fˆˆ fd„¦   «         } |di |¤Žƒ d {V —†S )Nr   )Úaconnect_sse)rð   rº   r,   c               ›   óH  •K  — d| vrd| d<   | d         }t          t          j        ‰j        ¦  «        }|r# ‰|d‰j        | ¬¦  «        }t          |¦  «        S |                     ‰j        | ¬¦  «        ƒ d {V —†}t          |¦  «        ƒ d {V —† |                     ¦   «         S )Nrç   Fré   rê   rì   )	r   rk   rÓ   r|   rÉ   rb   rî   r]   r7   )rº   rç   r|   r`   r^   rò   r¬   s        €€r<   rï   zBChatClovaX._acompletion_with_retry.<locals>._completion_with_retry³  sÎ   øè è € à˜vÐ%Ð%Ø#(��xÑ Ø˜HÔ%ˆFÝ¥Ô 1°4Ô3DÑEÔEˆLØð 'Ø+˜|Ø  &¨$¬-¸fð ñ  ô  �õ " ,Ñ/Ô/Ð/à!-×!2Ò!2°t´}È6Ð!2Ñ!RÔ!RÐRÐRÐRÐRÐRÐR�Ý& xÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø—}’}‘”Ð&r>   rI   )rí   rò   Ú_create_retry_decoratorr   )r¬   rð   rº   Úretry_decoratorrï   rò   s   `    @r<   Ú_acompletion_with_retryz"ChatClovaX._acompletion_with_retry©  s—   øøè è € ð
 	+Ð*Ð*Ð*Ð*Ð*à>Ý1°$ÀKÐPÑPÔPˆà	ð	'µ3ð 	'½3ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ñ 
Œð	'ð ,Ð+Ð5Ð5¨fÐ5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r>   r^   c                 ó”  — g }|                      di ¦  «        }|                      di ¦  «        }t          |¦  «        }t          |t          ¦  «        rZ|                      d¦  «        |                      d¦  «        |                      d¦  «        |                      d¦  «        z   dœ|_        t          |¬¦  «        }|                     |¦  «         |                      d¦  «        |                      d¦  «        |                      d¦  «        |                      d¦  «        |                      d	¦  «        d
œ}t          ||¬¦  «        S )Nr.   r2   rB   rD   )Úinput_tokensÚoutput_tokensÚtotal_tokensrP   r@   rF   rG   )rA   rC   rE   rF   rH   )ÚgenerationsÚ
llm_output)r:   rV   rK   r   Úusage_metadatar   Úappendr!   )r¬   r^   rû   r.   Úmsgr2   Úgenrü   s           r<   Ú_create_chat_resultzChatClovaX._create_chat_resultÅ  s6  € ØˆØ—’˜h¨Ñ+Ô+ˆØ�jŠj˜ BÑ'Ô'ˆÝ8¸Ñ=Ô=ˆå�g�yÑ)Ô)ð 	à &§
¢
¨=Ñ 9Ô 9Ø!'§¢¨NÑ!;Ô!;Ø &§
¢
¨=Ñ 9Ô 9¸F¿JºJÀ~Ñ<VÔ<VÑ Vð&ð &ˆGÔ"õ Øð
ñ 
ô 
ˆð 	×Ò˜3ÑÔÐð "Ÿ:š: lÑ3Ô3Ø"ŸJšJ }Ñ5Ô5Ø#ŸZšZ¨Ñ7Ô7Ø—J’J˜vÑ&Ô&ØŸš JÑ/Ô/ð
ð 
ˆ
õ  k¸jÐIÑIÔIÐIr>   c                 óˆ   — |                       ||¦  «        \  }}i |¥|¥} | j        dd|i|¤Ž}|                      |¦  «        S )NrÝ   rI   )rã   rï   r  ©r¬   rÝ   r”   rð   rº   râ   rÀ   r^   s           r<   Ú	_generatezChatClovaX._generateà  s^   € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆà.�4Ô.ÐPÐP¸ÐPÈÐPÐPˆà×'Ò'¨Ñ1Ô1Ð1r>   c              +   ó<  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥}t          } | j        d||dœ|¤ŽD ]^}t          ||¦  «        }	|	j        }t          |	¬¦  «        }
|r/|                     t          t          |	j	        ¦  «        |
¬¦  «         |
V — Œ_d S ©Nrç   T©rÝ   rð   rP   )ÚtokenÚchunkrI   )
rã   r   rï   r=   rÁ   r    Úon_llm_new_tokenr   rU   r0   )r¬   rÝ   r”   rð   rº   râ   rÀ   Údefault_chunk_classr*   Ú	new_chunkÚ	gen_chunks              r<   Ú_streamzChatClovaX._streamî  sï   è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆå6DÐØ.�4Ô.ð 
Ø"°ð
ð 
Ø?Eð
ð 
ð 	ð 	ˆCõ 8¸Ð=PÑQÔQˆIØ"+Ô"5ÐÝ+°IÐ>Ñ>Ô>ˆIàð Ø×,Ò,Ý�s IÔ$5Ñ6Ô6¸ið -ñ ô ð ð ˆOˆOˆOˆOð	ð 	r>   c              ‹   óš   K  — |                       ||¦  «        \  }}i |¥|¥} | j        d||dœ|¤Žƒ d {V —†}|                      |¦  «        S )Nr  rI   )rã   rö   r  r  s           r<   Ú
_ageneratezChatClovaX._agenerate  s�   è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆà5˜Ô5ð 
Ø"°ð
ð 
Ø?Eð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð ×'Ò'¨Ñ1Ô1Ð1r>   c                ób  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥}t          } | j        d||dœ|¤Žƒ d {V —†2 3 d {V —†}t          ||¦  «        }	|	j        }t          |	¬¦  «        }
|r5|                     t          t          |	j	        ¦  «        |
¬¦  «        ƒ d {V —† |
W V — Œk6 d S r  )
rã   r   rö   r=   rÁ   r    r
  r   rU   r0   )r¬   rÝ   r”   rð   rº   râ   rÀ   r  r	  r  r  s              r<   Ú_astreamzChatClovaX._astream  sK  è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆå6DÐØ!= Ô!=ð "
Ø"°ð"
ð "
Ø?Eð"
ð "
ð 
ð 
ð 
ð 
ð 
ð 
ð 	ð 	ð 	ð 	ð 	ð 	ð 	�%õ 8¸Ð?RÑSÔSˆIØ"+Ô"5ÐÝ+°IÐ>Ñ>Ô>ˆIàð Ø!×2Ò2Ý�s IÔ$5Ñ6Ô6¸ið 3ñ ô ð ð ð ð ð ð ð ð ˆOˆOˆOˆOˆOð
ð 
ð 
s   ÁB.r¦   )r,   N)NN)HÚ__name__Ú
__module__Ú__qualname__Ú__doc__r&   r{   r
   rk   rÑ   Ú__annotations__r|   rÓ   r$   r}   rU   r�   r‚   Úboolr…   r'   r‡   rˆ   r‹   ÚfloatrŽ   Úintr�   r‘   r“   r•   Úlistr–   rF   r˜   r›   r%   Úmodel_configÚpropertyr   r   r¯   r²   r·   r¹   r	   r   r¿   rÃ   rÉ   r(   r)   rÔ   r¶   rÏ   rÒ   r   r   rã   rï   r   rö   r!   r  r   r  r   r    r  r  r   r  Ú__classcell__)rÁ   s   @r<   ry   ry   µ   sa  ø€ € € € € € ðð ð" &+ U°4Ð%8Ñ%8Ô%8€FˆH�U”\Ô"Ð8Ð8Ñ8Ø05°¸dÐ0CÑ0CÔ0C€L�(˜5Ô,Ô-ÐCÐCÑCà�eØØ%˜ l°GÑ<Ô<Ø5ðñ ô €J�ð ð ñ ð
 #˜UØÐ"Nðñ ô €GˆX�cŒ]ð ð ñ ð ˜ØØSðñ ô €K�ð ð ñ ð
 49°5ÀÈYÐ3WÑ3WÔ3WÐ˜X iÔ0ÐWÐWÑWØXà-2¨U¸4ÀÐ-WÑ-WÔ-WÐ�x 	Ô*ÐWÐWÑWØRà�E "¨JÐ7Ñ7Ô7€HˆcÐ7Ð7Ñ7ðð $) 5¨C°CÀÐ#EÑ#EÔ#E€K�˜%”ÐEÐEÑEØ ˜5 A¨#°qÐ9Ñ9Ô9€Eˆ8�CŒ=Ð9Ð9Ñ9Ø"˜U a¨C¸Ð=Ñ=Ô=€Eˆ8�EŒ?Ð=Ð=Ñ=Ø&+ e¨s°rÀ3Ð&GÑ&GÔ&G€N�H˜U”OÐGÐGÑGØ % ¨¨t¸SÐ AÑ AÔ A€J�˜”ÐAÐAÑAØ', u°TÀÐ'HÑ'HÔ'H€K�˜$˜sœ)Ô$ÐHÐHÑHØ).¨°uÐ)=Ñ)=Ô)=Ð˜ œÐ=Ð=Ñ=Ø˜% 1¨¸QÐ?Ñ?Ô?€Dˆ(�3Œ-Ð?Ð?Ñ?à�5˜A rÐ*Ñ*Ô*€GˆSÐ*Ð*Ñ*Ø�u ¨1Ð-Ñ-Ô-€K�Ð-Ð-Ñ-à�:¨tÈ"ÐMÑMÔM€Làð  c¨3 h¤ð ð ð ñ „Xðð ð$ T¨#¨s¨(¤^ð $ð $ð $ñ „Xð$ð
 ð	˜D  c œNð 	ð 	ð 	ñ „Xð	ð ð˜3ð ð ð ñ „Xðð
 +/ðð Ø˜T #œYÔ'ðØ:=ðà	ðð ð ð ð ð ð ð$  S¨# X¤ð $ð $ð $ñ „Xð$ð ð	W˜#ð 	Wð 	Wð 	Wñ „Xð	Wð €_˜'Ð"Ñ"Ô"ð dð ð ð ñ #Ô"ððB ð ð ð ð ðð ð ð ð  c¨3 h¤ð ð ð ð ð<%Ø˜[Ô)ð%Ø19¸$¸s¼)Ô1Dð%à	ˆt�DŒz˜4  S œ>Ð)Ô	*ð%ð %ð %ð %ð!#¨sð !#°sð !#ð !#ð !#ð !#ðJ @Dð6ð 6àÐ;Ô<ð6ð ð6ð 
ð	6ð 6ð 6ð 6ð8J¨Dð J°Zð Jð Jð Jð Jð< %)Ø:>ð	2ð 2à�{Ô#ð2ð �t˜C”yÔ!ð2ð Ð6Ô7ð	2ð
 ð2ð 
ð2ð 2ð 2ð 2ð" %)Ø:>ð	ð à�{Ô#ðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
Ð%Ô	&ðð ð ð ð8 %)Ø?Cð	2ð 2à�{Ô#ð2ð �t˜C”yÔ!ð2ð Ð;Ô<ð	2ð
 ð2ð 
ð2ð 2ð 2ð 2ð& %)Ø?Cð	ð à�{Ô#ðð �t˜C”yÔ!ðð Ð;Ô<ð	ð
 ðð 
Ð*Ô	+ðð ð ð ð ð ð ð r>   ry   Úllmrð   c                 ó`   — t           j        t           j        g}t          || j        |¬¦  «        S )zFReturns a tenacity retry decorator, preconfigured to handle exceptions)Úerror_typesr›   rð   )rk   ÚRequestErrorÚStreamErrorr   r›   )r  rð   Úerrorss      r<   rô   rô   1  s4   € õ Ô ¥%Ô"3Ð4€FÝ&Ø¨¬À[ðñ ô ð r>   r¦   )BÚloggingÚtypingr   r   r   r   r   r   r	   r
   r   r   r   r   rk   rí   r   Úlangchain_core.callbacksr   r   Ú*langchain_core.language_models.chat_modelsr   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.messagesr   r   r   r   r   r   r   r   r   r   Úlangchain_core.outputsr   r    r!   Úlangchain_core.utilsr"   r#   Úpydanticr$   r%   r&   r'   r(   Útyping_extensionsr)   rÐ   Ú	getLoggerr  rM   r=   rU   r9   rQ   rV   rb   ÚResponseru   r]   ry   rô   rI   r>   r<   ú<module>r1     sÞ  ðØ €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð VÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "à;Ð à	ˆÔ	˜8Ñ	$Ô	$€ð.Ø	ð.Ø!Ð"2Ô3ð.àð.ð .ð .ð .ð.¨Tð °d¸3À¸8´nð ð ð ð ð8Øð8à	ð8ð 8ð 8ð 8ð&5Øð5àð5ð 5ð 5ð 5ð@Ø)¨#Ô.ðà�4Ôðð ð ð ð	
˜eœnð 	
°ð 	
ð 	
ð 	
ð 	
ð	
 U¤^ð 	
¸ð 	
ð 	
ð 	
ð 	
ðyð yð yð yð y�ñ yô yð yð@ 	ð	ð Ø	ðàØÐ+Ð-EÐEÔFôðð
 ˆsˆe�SˆjÔðð ð ð ð ð r>   