Ë
    µŒj,!  ã                   óL  — 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jJ                  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.y)é    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                 ój   — t        | t        «      rd| j                  ddœ}|S d| j                  ddœ}|S )NÚuserÚtext)ÚroleÚcontentÚcontent_typeÚ	assistant)Ú
isinstancer   r$   )r   Úmessage_dicts     ún/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/coze.pyÚ_convert_message_to_dictr*   !   sF   € ä�'œ<Ô(àØ—‘Ø"ñ
ˆð Ðð	  Ø—‘Ø"ñ
ˆð
 Ðó    Ú_dictc                 ó´   — | d   }|dk7  ry | d   }|dk(  rt        | d   ¬«      S |dk(  r t        | j                  dd«      xs 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   sk   € Ø�V‰}€HØ�8ÒØØ�‰=€DØˆv‚~Ü E¨)Ñ$4Ô5Ð5Ø	�Ò	Ü §¡¨9°bÓ!9Ò!?¸RÔ@Ð@ä 5¨Ñ#3¸$Ô?Ð?r+   c                 ó¬   — | j                  d«      }| j                  d«      xs 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   ?   sU   € Ø�9‰9�VÓ€DØ�i‰i˜	Ó"Ò( b€Gàˆv‚~Ü ¨Ô1Ð1Ø	�Ò	Ü gÔ.Ð.ä¨°dÔ;Ð;r+   c                   óH  — 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&jN                  fd „Z(dee)eef      de!fd!„Z*edefd"„«       Z+y)$Ú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                  ó   — y)NTr=   r>   s    r)   Úlc_serializablezChatCoze.lc_serializableW   s   € àr+   )ÚdefaultÚcoze_api_baseNr;   é<   Útimeout)rC   ÚaliasÚrequest_timeoutr1   Úbot_idÚconversation_idr!   FÚ	streamingT)Úpopulate_by_nameÚbefore)ÚmodeÚvaluesc                 ób   — 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   sH   € ô #7ØØØÜó	#
ˆˆÑô "7Ü ØØØóó"
ˆˆ~Ñð ˆr+   c                 ó`   — | 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‘kØ#×3Ñ3Ø—I‘IØŸ™ñ	
ð 	
r+   ÚmessagesÚstopÚrun_managerÚkwargsc           
      ó`  — | j                   r! | j                  d
|||dœ|¤Ž}t        |«      S  | j                  |fi |¤Ž}|j	                  «       }|d   dk7  r3t        d|d   › d|d   › d|j                  j                  d«      › �«      ‚| j                  |j                  d	«      xs 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É   € ð �>Š>Ø&˜$Ÿ,™,ð Ø!¨¸+ñØIOñˆKô (¨Ó4Ð4àˆD�J‰J�xÑ* 6Ñ*ˆØ�f‰f‹hˆØˆv‰;˜!ÒÜØ0°°V±°¸RÀÀEÁ
¸|ð LØŸ)™)Ÿ-™-¨Ó5Ð6ð8óð ð
 ×'Ñ'¨¯©°
Ó(;Ò(A¸rÓBÐBr+   c              +   óâ  K  —  | j                   |fi |¤Ž}|j                  «       D ]Å  }|j                  d«      j                  d«      }|j	                  dd«      }t        |«      dkD  r|d   nd }|€ŒMt        j                  |«      }|d   dk(  r y |d   dk7  s|d   d   d	k7  rŒ€t        |d   «      }t        |¬
«      }	|r&|j                  t        |j                  «      |	¬«       |	–— ŒÇ y ­w)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‰j˜Ñ, VÑ,ˆØ—^‘^Ö%ˆEØ—L‘L Ó)×/Ñ/°Ó7ˆEØ—K‘K ¨Ó+ˆEÜ # E£
¨Q¢�E˜!’H°DˆEØˆ}ØÜ—z‘z %Ó(ˆHØ˜Ñ  FÒ*Ùà˜Ñ! YÒ.Ø˜IÑ& vÑ.°(Ò:àÜ3°H¸YÑ4GÓHˆEÜ*°5Ô9ˆHÙØ×,Ñ,¬S°·±Ó-?ÀxÐ,ÔPØ‹Nñ% &ùs   ‚C-C/c                 óˆ  — i | j                   ¥|¥}d}g }|D ]9  }t        |t        «      r|j                  › }|j	                  t        |«      «       Œ; |j                  d«      }|j                  d«      }|j                  d«      }	|j                  d«      }
|||	||
dœ}|r||d<   | j                  dz   }d}| j                  r| j                  j                  «       }t        j                  || j                  d	d
|› �dœ||
¬«      }|j                  dk7  r,|j                  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 ;Ó/ˆ	ð  /ØØØØñ
ˆñ Ø&2ˆG�NÑ#à× Ñ Ð#6Ñ6ˆØˆØ×ÒØ×'Ñ'×8Ñ8Ó:ˆGä�m‰mØØ×(Ñ(à 2Ø#*¨7¨)Ð!4ñð Øô	
ˆð �?‰?˜cÒ!Ø—K‘K—O‘O LÓ1ˆEÜÐ=¸c¸UÀ)ÈEÈ7ÐSÓTÐTØˆ
r+   c                 óŠ   — g }|D ]+  }t        |«      }|sŒ|j                  t        |¬«      «       Œ- d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ó   sJ   € ØˆÛˆAÜ*¨1Ó-ˆCÚØ×"Ñ"¤>¸#Ô#>Õ?ð ð
 &(°"Ñ5ˆ
Ü k¸jÔIÐIr+   c                  ó   — y)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   s>  … ñð
 ð
˜D  c ™Nò 
ó ð
ð
 ð ò ó ðñ Ð'7Ô8€M�3Ó8ØØ(,€L�(˜9Ñ%Ó,ØÙ ¨°9Ô=€O�SÓ=Ø0Ù Ô#€FˆCÓ#Ø8Ù ¨Ô,€O�SÓ,ð6ñ ˜bÔ!€Dˆ#Ó!Ø:Ø€IˆtÓðSñ Øô€Lñ ˜(Ô#Øð¨$ð °3ò ó ó $ðð" ð
  c¨3 h¡ò 
ó ð
ð %)Ø:>ñ	Cà�{Ñ#ðCð �t˜C‘yÑ!ðCð Ð6Ñ7ð	Cð
 ðCð 
óCð4 %)Ø:>ñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
Ð%Ñ	&óð8+˜d ;Ñ/ð +¸3ð +À8×CTÑCTó +ðZJ¨D°¸¸c¸Ñ1BÑ,Cð JÈ
ó Jð ð˜3ò ó ñ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¬      sÄ   ðÛ Û ß F× FÑ Fã Ý =÷÷	÷ 	ó 	÷ SÑ R÷÷ CÓ Bà	ˆ×	Ñ	˜8Ó	$€à)Ð ð kð °dó ð"
@ G¨C°¨HÑ$5ð 
@¸%ÀÈTÐ@QÑ:Ró 
@ð	<¨7°3¸°8Ñ+<ð 	<ÐAQó 	<ôtˆ}õ tr+   