§
    šŠtj,!  ã                   ób  — d dl Z d dlZd dl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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$  ej%        e&¦  «        Z'd	Z(d
ede)fd„Z*dee+ef         de	edf         fd„Z,dee+ef         defd„Z- G d„ de¦  «        Z.dS )é    N)ÚAnyÚDictÚIteratorÚListÚMappingÚOptionalÚUnion)ÚCallbackManagerForLLMRun)ÚBaseChatModelÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚHumanMessageÚHumanMessageChunk)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úconvert_to_secret_strÚget_from_dict_or_env)Ú
ConfigDictÚFieldÚ	SecretStrÚmodel_validatorzhttps://api.coze.comÚmessageÚreturnc                 ó^   — t          | t          ¦  «        rd| j        ddœ}nd| j        ddœ}|S )NÚuserÚtext)ÚroleÚcontentÚcontent_typeÚ	assistant)Ú
isinstancer   r$   )r   Úmessage_dicts     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/coze.pyÚ_convert_message_to_dictr*   !   sN   € å�'�<Ñ(Ô(ð 
àØ”Ø"ð
ð 
ˆˆð  Ø”Ø"ð
ð 
ˆð
 Ðó    Ú_dictc                 óð   — | d         }|dk    rd S | d         }|dk    rt          | d         ¬¦  «        S |dk    r&t          |                      dd¦  «        pd¬¦  «        S t          | d         |¬	¦  «        S )
NÚtypeÚanswerr#   r!   r$   ©r$   r&   Ú ©r$   r#   )r   r   Úgetr   )r,   Úmsg_typer#   s      r)   Ú_convert_dict_to_messager5   2   sŠ   € Ø�VŒ}€HØ�8ÒÐØˆtØ�Œ=€DØˆv‚~€~Ý E¨)Ô$4Ð5Ñ5Ô5Ð5Ø	�Ò	Ð	Ý §¢¨9°bÑ!9Ô!9Ð!?¸RÐ@Ñ@Ô@Ð@å 5¨Ô#3¸$Ð?Ñ?Ô?Ð?r+   c                 óÔ   — |                       d¦  «        }|                       d¦  «        pd}|dk    rt          |¬¦  «        S |dk    rt          |¬¦  «        S t          ||¬¦  «        S )Nr#   r$   r1   r!   r0   r&   r2   )r3   r   r   r   )r,   r#   r$   s      r)   Ú_convert_delta_to_message_chunkr7   ?   sr   € Ø�9Š9�VÑÔ€DØ�iŠi˜	Ñ"Ô"Ð( b€Gàˆv‚~€~Ý ¨Ð1Ñ1Ô1Ð1Ø	�Ò	Ð	Ý gÐ.Ñ.Ô.Ð.å¨°dÐ;Ñ;Ô;Ð;r+   c                   óè  — e Zd ZU dZedeeef         fd„¦   «         Zedefd„¦   «         Z	 e
e¬¦  «        Zeed<   	 dZee         ed<   	  e
d	d
¬¦  «        Zeed<   	  e
d¬¦  «        Zeed<   	  e
d¬¦  «        Zeed<   	  e
d¬¦  «        Zeed<   	 dZeed<   	  ed¬¦  «        Z ed¬¦  «        ededefd„¦   «         ¦   «         Zedeeef         fd„¦   «         Z	 	 d#dee         deee                  dee          dede!f
d„Z"	 	 d#dee         deee                  dee          dede#e$         f
d„Z%dee         dede&j'        fd „Z(dee)eef                  de!fd!„Z*edefd"„¦   «         Z+dS )$ÚChatCozezlChatCoze chat models API by coze.com

    For more information, see https://www.coze.com/open/docs/chat
    r   c                 ó
   — ddiS )NÚcoze_api_keyÚCOZE_API_KEY© ©Úselfs    r)   Ú
lc_secretszChatCoze.lc_secretsQ   s   € ð ˜Nð
ð 	
r+   c                 ó   — dS )NTr=   r>   s    r)   Úlc_serializablezChatCoze.lc_serializableW   s   € àˆtr+   )ÚdefaultÚcoze_api_baseNr;   é<   Útimeout)rC   ÚaliasÚrequest_timeoutr1   Úbot_idÚconversation_idr!   FÚ	streamingT)Úpopulate_by_nameÚbefore)ÚmodeÚvaluesc                 ó|   — t          |ddt          ¦  «        |d<   t          t          |dd¦  «        ¦  «        |d<   |S )NrD   ÚCOZE_API_BASEr;   r<   )r   ÚDEFAULT_API_BASEr   )ÚclsrO   s     r)   Úvalidate_environmentzChatCoze.validate_environmentv   sW   € õ #7ØØØÝñ	#
ô #
ˆˆÑõ "7Ý ØØØñô ñ"
ô "
ˆˆ~Ñð ˆr+   c                 ó8   — | j         | j        | j        | j        dœS )z0Get the default parameters for calling Coze API.©rI   rJ   r!   rK   rV   r>   s    r)   Ú_default_paramszChatCoze._default_params‰   s(   € ð ”kØ#Ô3Ø”IØœð	
ð 
ð 	
r+   ÚmessagesÚstopÚrun_managerÚkwargsc           
      óx  — | j         r  | j        d
|||dœ|¤Ž}t          |¦  «        S  | j        |fi |¤Ž}|                     ¦   «         }|d         dk    r<t          d|d         › d|d         › d|j                             d¦  «        › �¦  «        ‚|                      |                     d	¦  «        pg ¦  «        S )N)rX   rY   rZ   Úcoder   úError from Coze api response: z: Úmsgú	, logid: ú
X-Tt-LogidrX   r=   )	rK   Ú_streamr   Ú_chatÚjsonÚ
ValueErrorÚheadersr3   Ú_create_chat_result)r?   rX   rY   rZ   r[   Ústream_iterÚrÚress           r)   Ú	_generatezChatCoze._generate“   sø   € ð Œ>ð 	5Ø&˜$œ,ð Ø!¨¸+ðð ØIOðð ˆKõ (¨Ñ4Ô4Ð4àˆDŒJ�xÐ*Ð* 6Ð*Ð*ˆØ�fŠf‰hŒhˆØˆvŒ;˜!ÒÐÝð8°°V´ð 8ð 8ÀÀEÄ
ð 8ð 8Øœ)Ÿ-š-¨Ñ5Ô5ð8ð 8ñô ð ð
 ×'Ò'¨¯ª°
Ñ(;Ô(;Ð(A¸rÑBÔBÐBr+   c              +   ó<  K  —  | j         |fi |¤Ž}|                     ¦   «         D ]ö}|                     d¦  «                             d¦  «        }|                     dd¦  «        }t          |¦  «        dk    r|d         nd }|€Œ`t          j        |¦  «        }|d         dk    r d S |d         dk    s|d         d         d	k    rŒ¢t          |d         ¦  «        }t          |¬
¦  «        }	|r)| 
                    t          |j        ¦  «        |	¬¦  «         |	V — Œ÷d S )Nzutf-8z
zdata:é   ÚeventÚdoner   r.   r/   ©r   )Úchunk)rc   Ú
iter_linesÚdecodeÚstripÚsplitÚlenrd   Úloadsr7   r   Úon_llm_new_tokenÚstrr$   )
r?   rX   rY   rZ   r[   rj   rq   ÚpartsÚresponseÚcg_chunks
             r)   rb   zChatCoze._streamª   s@  è è € ð ˆdŒj˜Ð,Ð, VÐ,Ð,ˆØ—^’^Ñ%Ô%ð 	ð 	ˆEØ—L’L Ñ)Ô)×/Ò/°Ñ7Ô7ˆEØ—K’K ¨Ñ+Ô+ˆEÝ # E¡
¤
¨Q¢ �E˜!”H�H°DˆEØˆ}ØÝ”z %Ñ(Ô(ˆHØ˜Ô  FÒ*Ð*Ø��à˜Ô! YÒ.Ð.Ø˜IÔ& vÔ.°(Ò:Ð:àÝ3°H¸YÔ4GÑHÔHˆEÝ*°5Ð9Ñ9Ô9ˆHØð QØ×,Ò,­S°´Ñ-?Ô-?ÀxÐ,ÑPÔPÐPØˆNˆNˆNˆNð%	ð 	r+   c                 ó†  — i | j         ¥|¥}d}g }|D ]A}t          |t          ¦  «        r|j        › }|                     t          |¦  «        ¦  «         ŒB|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }	|                     d¦  «        }
|||	||
dœ}|r||d<   | j        dz   }d}| j        r| j         	                    ¦   «         }t          j        || j        d	d
|› �dœ||
¬¦  «        }|j        dk    r/|j                             d¦  «        }t!          d|› d|› �¦  «        ‚|S )Nr1   rJ   rI   r!   rK   )rJ   rI   r!   ÚqueryÚstreamÚchat_historyz/open_api/v2/chatzapplication/jsonzBearer )zContent-TypeÚAuthorization)ÚurlrF   rf   rd   r   éÈ   ra   r^   r`   )rW   r'   r   r$   Úappendr*   ÚpoprD   r;   Úget_secret_valueÚrequestsÚpostrH   Ústatus_coderf   r3   re   )r?   rX   r[   Ú
parametersr~   r€   r_   rJ   rI   r!   rK   Úpayloadr‚   Úapi_keyrj   Úlogids                   r)   rc   zChatCoze._chatÆ   s–  € Ø7˜Ô,Ð7°Ð7ˆ
àˆØˆØð 	?ð 	?ˆCÝ˜#�|Ñ,Ô,ð )Øœ;Ð(�Ø×ÒÕ 8¸Ñ =Ô =Ñ>Ô>Ð>Ð>à$Ÿ.š.Ð):Ñ;Ô;ˆØ—’ Ñ)Ô)ˆØ�~Š~˜fÑ%Ô%ˆØ—N’N ;Ñ/Ô/ˆ	ð  /ØØØØð
ð 
ˆð ð 	3Ø&2ˆG�NÑ#àÔ Ð#6Ñ6ˆØˆØÔð 	;ØÔ'×8Ò8Ñ:Ô:ˆGåŒmØØÔ(à 2Ø!4¨7Ð!4Ð!4ðð ð Øð	
ñ 	
ô 	
ˆð Œ?˜cÒ!Ð!Ø”K—O’O LÑ1Ô1ˆEÝÐS¸cÐSÐSÈEÐSÐSÑTÔTÐTØˆ
r+   c                 ó¤   — g }|D ]6}t          |¦  «        }|r#|                     t          |¬¦  «        ¦  «         Œ7dddœ}t          ||¬¦  «        S )Nrp   r1   )Útoken_usageÚmodel)ÚgenerationsÚ
llm_output)r5   r„   r   r   )r?   rX   r‘   Úcr_   r’   s         r)   rg   zChatCoze._create_chat_resultó   sn   € ØˆØð 	@ð 	@ˆAÝ*¨1Ñ-Ô-ˆCØð @Ø×"Ò"¥>¸#Ð#>Ñ#>Ô#>Ñ?Ô?Ð?øà%'°"Ð5Ð5ˆ
Ý k¸jÐIÑIÔIÐIr+   c                 ó   — dS )Nz	coze-chatr=   r>   s    r)   Ú	_llm_typezChatCoze._llm_typeý   s   € àˆ{r+   )NN),Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   ry   r@   ÚboolrB   r   rR   rD   Ú__annotations__r;   r   r   rH   ÚintrI   rJ   r!   rK   r   Úmodel_configr   Úclassmethodr   rT   rW   r   r   r
   r   rk   r   r   rb   r‡   ÚResponserc   r   rg   r•   r=   r+   r)   r9   r9   K   sF  € € € € € € ðð ð
 ð
˜D  c œNð 
ð 
ð 
ñ „Xð
ð
 ð ð ð ð ñ „Xðð ˜Ð'7Ð8Ñ8Ô8€M�3Ð8Ð8Ñ8ØØ(,€L�(˜9Ô%Ð,Ð,Ñ,ØØ ˜5¨°9Ð=Ñ=Ô=€O�SÐ=Ð=Ñ=Ø0Ø�% Ð#Ñ#Ô#€FˆCÐ#Ð#Ñ#Ø8Ø ˜5¨Ð,Ñ,Ô,€O�SÐ,Ð,Ñ,ð6ð �˜bÐ!Ñ!Ô!€Dˆ#Ð!Ð!Ñ!Ø:Ø€IˆtÐÐÑðSð �:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð¨$ð °3ð ð ð ñ „[ñ $Ô#ðð" ð
  c¨3 h¤ð 
ð 
ð 
ñ „Xð
ð %)Ø:>ð	Cð Cà�{Ô#ðCð �t˜C”yÔ!ðCð Ð6Ô7ð	Cð
 ðCð 
ðCð Cð Cð Cð4 %)Ø:>ð	ð à�{Ô#ðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
Ð%Ô	&ðð ð ð ð8+˜d ;Ô/ð +¸3ð +À8ÔCTð +ð +ð +ð +ðZJ¨D°¸¸c¸Ô1BÔ,Cð JÈ
ð Jð Jð Jð Jð ð˜3ð ð ð ñ „Xðð ð r+   r9   )/rd   ÚloggingÚtypingr   r   r   r   r   r   r	   r‡   Úlangchain_core.callbacksr
   Ú*langchain_core.language_models.chat_modelsr   r   Úlangchain_core.messagesr   r   r   r   r   r   r   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   r   Úpydanticr   r   r   r   Ú	getLoggerr–   ÚloggerrR   Údictr*   ry   r5   r7   r9   r=   r+   r)   ú<module>r¬      sC  ðØ €€€Ø €€€Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà €€€Ø =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rðð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà	ˆÔ	˜8Ñ	$Ô	$€à)Ð ð kð °dð ð ð ð ð"
@ G¨C°¨HÔ$5ð 
@¸%ÀÈTÐ@QÔ:Rð 
@ð 
@ð 
@ð 
@ð	<¨7°3¸°8Ô+<ð 	<ÐAQð 	<ð 	<ð 	<ð 	<ðtð tð tð tð tˆ}ñ tô tð tð tð tr+   