Ë
    µŒj”!  ã                   óH  — d dl Z 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mZ d dlmZmZmZ d dlm Z  d dl!m"Z"m#Z#  ejH                  e%«      Z&d	ee'ef   d
efd„Z(ded
e)fd„Z*d	ee'ef   de
e   d
efd„Z+ G d„ de«      Z,y)é    N)ÚAnyÚDictÚIteratorÚListÚMappingÚOptionalÚType)ÚCallbackManagerForLLMRun)ÚBaseChatModelÚgenerate_from_stream)	Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úget_pydantic_field_names)Ú
ConfigDictÚmodel_validatorÚ_dictÚreturnc                 óž   — | d   }|dk(  rt        | d   ¬«      S |dk(  r t        | j                  dd«      xs d¬«      S t        | d   |¬«      S )NÚroleÚuserÚcontent©r!   Ú	assistantÚ ©r!   r   )r   r   Úgetr   )r   r   s     út/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/llama_edge.pyÚ_convert_dict_to_messager(      sW   € Ø�‰=€DØˆv‚~Ü E¨)Ñ$4Ô5Ð5Ø	�Ò	Ü §¡¨9°bÓ!9Ò!?¸RÔ@Ð@ä 5¨Ñ#3¸$Ô?Ð?ó    Úmessagec                 ó:  — t        | t        «      r| j                  | j                  dœ}|S t        | t        «      rd| j                  dœ}|S t        | t
        «      rd| j                  dœ}|S t        | t        «      rd| j                  dœ}|S t        d| › �«      ‚)N)r   r!   Úsystemr    r#   zGot unknown type )Ú
isinstancer   r   r!   r   r   r   Ú	TypeError)r*   Úmessage_dicts     r'   Ú_convert_message_to_dictr0   (   s¡   € ä�'œ;Ô'Ø '§¡¸¿¹ÑIˆð Ðô 
�Gœ]Ô	+Ø (°W·_±_ÑEˆð Ðô 
�Gœ\Ô	*Ø &°7·?±?ÑCˆð Ðô 
�GœYÔ	'Ø +¸¿¹ÑHˆð Ðô Ð+¨G¨9Ð5Ó6Ð6r)   Údefault_classc                 óø   — | j                  d«      }| j                  d«      xs d}|dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        |¬«      S |s	|t        k(  rt        ||¬«      S  ||¬«      S )Nr   r!   r$   r    r"   r#   r%   )r&   r   r   r   )r   r1   r   r!   s       r'   Ú_convert_delta_to_message_chunkr3   8   s|   € ð �9‰9�VÓ€DØ�i‰i˜	Ó"Ò( b€Gàˆv‚~˜Ô*;Ò;Ü ¨Ô1Ð1Ø	�Ò	 ´Ò ?Ü gÔ.Ð.Ù	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-r)   c                   ó~  — e Zd ZU dZdZeed<   	 dZee	   ed<   	 dZ
e	ed<   	 dZeed	<   	  ed
¬«      Z ed¬«      edee	ef   de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f   defd„Z e!de	fd„«       Z"y)ÚLlamaEdgeChatServicez�Chat with LLMs via `llama-api-server`

    For the information about `llama-api-server`, visit https://github.com/second-state/LlamaEdge
    é<   Úrequest_timeoutNÚservice_urlÚNAÚmodelFÚ	streamingT)Úpopulate_by_nameÚbefore)ÚmodeÚvaluesr   c           
      ó`  — t        | «      }|j                  di «      }t        |«      D ]M  }||v rt        d|› d�«      ‚||vsŒt        j                  d|› d|› d|› d�«       |j                  |«      ||<   ŒO |j                  |j                  «       «      }|rt        d|› d	�«      ‚||d<   |S )
z>Build extra kwargs from additional params that were passed in.Úmodel_kwargszFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.zParameters za should be specified explicitly. Instead they were passed in as part of `model_kwargs` parameter.)	r   r&   ÚlistÚ
ValueErrorÚloggerÚwarningÚpopÚintersectionÚkeys)Úclsr?   Úall_required_field_namesÚextraÚ
field_nameÚinvalid_model_kwargss         r'   Úbuild_extraz LlamaEdgeChatService.build_extra[   sç   € ô $<¸CÓ#@Ð Ø—
‘
˜>¨2Ó.ˆÜ˜vž,ˆJØ˜UÑ"Ü  6¨*¨Ð5EÐ!FÓGÐGØÐ!9Ò9Ü—‘Ø! * ð .Ø�Lð !)Ø)3¨Ð4JðNôð
 %+§J¡J¨zÓ$:��jÒ!ð 'ð  8×DÑDÀUÇZÁZÃ\ÓRÐÙÜØÐ2Ð3ð 4Sð Tóð ð
 "'ˆˆ~ÑØˆr)   ÚmessagesÚstopÚrun_managerÚkwargsc                 ó,  — | j                   r! | j                  d|||dœ|¤Ž}t        |«      S  | j                  |fi |¤Ž}|j                  dk7  r%t        d|j                  › d|j                  › �«      ‚|j                  «       }| j                  |«      S )N)rO   rP   rQ   éÈ   zError code: z
, reason: © )	r;   Ú_streamr   Ú_chatÚstatus_coderC   ÚreasonÚjsonÚ_create_chat_result)ÚselfrO   rP   rQ   rR   Ústream_iterÚresÚresponses           r'   Ú	_generatezLlamaEdgeChatService._generatev   sš   € ð �>Š>Ø&˜$Ÿ,™,ð Ø!¨¸+ñØIOñˆKô (¨Ó4Ð4àˆd�j‰j˜Ñ, VÑ,ˆà�?‰?˜cÒ!Ü˜|¨C¯O©OÐ+<¸JÀsÇzÁzÀlÐSÓTÐTà—8‘8“:ˆà×'Ñ'¨Ó1Ð1r)   c           
   +   ó   K  —  | j                   |fi |¤Ž}t        }d}|j                  «       D �]–  }g }	|rº|j                  d«      }
t	        j
                  ||
«      D �cg c]  }|j                  «       ‘Œ }}dt        |«      z  g|z   }t        t        |«      dz
  «      D ]L  }t        j                  |
||   t        |«      z   ||dz      t        |«      z    «      }|	j                  |«       ŒN |	D ]Ð  }t        |t        «      s|j                  «       }t        |d   «      dk(  rŒ5|d   d   }t        |d   |«      }|j                  d«      �|j                  d«      d	k(  r �Œ8|j                  d«      }|�t        |¬
«      nd }|j                   }t#        ||¬«      }|r|j%                  |j&                  |¬«       |–— ŒÒ �Œ™ y c c}w ­w)Nz!"object":"chat.completion.chunk"}zutf-8éÿÿÿÿé   Úchoicesr   ÚdeltaÚfinish_reasonrP   )rf   )r*   Úgeneration_info)Úchunk)rW   r   Ú
iter_linesÚdecodeÚreÚfinditerÚstartÚlenÚrangerZ   ÚloadsÚappendr-   Údictr3   r&   Ú	__class__r   Úon_llm_new_tokenÚtext)r\   rO   rP   rQ   rR   r^   Údefault_chunk_classÚ	substringÚlineÚchunksÚjson_stringÚmÚ	positionsÚirh   Úchoicerf   rg   Úcg_chunks                      r'   rV   zLlamaEdgeChatService._streamŒ   sÙ  è ø€ ð ˆd�j‰j˜Ñ, VÑ,ˆä6DÐØ7ˆ	Ø—N‘N×$ˆDØˆFÙØ"Ÿk™k¨'Ó2�ô 13·±¸IÀ{Ô0SÓTÑ0S¨1˜QŸW™W�YÐ0S�	ÐTØ¤# i£.Ñ0Ð1°IÑ=�	äœs 9›~°Ñ1Ö2�AÜ ŸJ™JØ#Ø% a™L¬3¨y«>Ñ9¸IÀaÈ!ÁeÑ<LÜ! )›nñ=-ðó�Eð —M‘M %Õ(ð 3ó  �Ü! %¬Ô.Ø!ŸJ™J›L�EÜ�u˜YÑ'Ó(¨AÒ-Øà˜yÑ)¨!Ñ,�Ü7Ø˜7‘OÐ%8ó�ð —J‘J˜Ó/Ð;ØŸ
™
 ?Ó3°vÒ=âØ &§
¡
¨?Ó ;�ð %Ð0ô  }Õ5àð  ð
 ',§o¡oÐ#Ü.Ø!°?ô�ñ Ø×0Ñ0°·±ÀhÐ0ÔOØ“ò7  ñ% %ùò Uùs   ‚AGÁG	Á6EGc                 óæ  — | j                   €.t        j                  j                  «       }d|_        d|_        |S | j                   › d�}| j                  r2| j                  |D �cg c]  }t        |«      ‘Œ c}| j                  dœ}n&| j                  |D �cg c]  }t        |«      ‘Œ c}dœ}t        j                  || j                  dddœt        j                  |«      ¬«      }|S c c}w c c}w )	Ni÷  z8The IP address or port of the chat service is incorrect.z/v1/chat/completions)r:   rO   Ústream)r:   rO   zapplication/json)ÚacceptzContent-Type)ÚurlÚtimeoutÚheadersÚdata)r8   ÚrequestsÚmodelsÚResponserX   rY   r;   r:   r0   Úpostr7   rZ   Údumps)r\   rO   rR   r^   r8   r{   Úpayloads          r'   rW   zLlamaEdgeChatService._chatÆ   së   € Ø×ÑÐ#Ü—/‘/×*Ñ*Ó,ˆCØ!ˆCŒOØSˆCŒJØˆJà×)Ñ)Ð*Ð*>Ð?ˆà�>Š>àŸ™ÙBJÓKÁ(¸QÔ5°aÕ8À(ÑKØŸ.™.ñ‰Gð Ÿ™ÙBJÓKÁ(¸QÔ5°aÕ8À(ÑKñˆGô
 �m‰mØØ×(Ñ(à,Ø 2ñô —‘˜GÓ$ô
ˆð ˆ
ùò' Lùò Ls   Á%C)ÂC.r_   c                 óž   — t        |d   d   j                  d«      «      }t        |¬«      g}|d   }|| j                  dœ}t	        ||¬«      S )Nrd   r   r*   )r*   Úusage)Útoken_usager:   )ÚgenerationsÚ
llm_output)r(   r&   r   r:   r   )r\   r_   r*   r�   r�   r‘   s         r'   r[   z(LlamaEdgeChatService._create_chat_resultç   sS   € Ü*¨8°IÑ+>¸qÑ+A×+EÑ+EÀiÓ+PÓQˆÜ%¨gÔ6Ð7ˆà˜wÑ'ˆØ%0¸4¿:¹:ÑFˆ
Ü k¸jÔIÐIr)   c                  ó   — y)Nz	wasm-chatrU   )r\   s    r'   Ú	_llm_typezLlamaEdgeChatService._llm_typeï   s   € àr)   )NN)#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   ÚintÚ__annotations__r8   r   Ústrr:   r;   Úboolr   Úmodel_configr   Úclassmethodr   r   rN   r   r   r
   r   r`   r   r   rV   r‡   r‰   rW   r   r[   Úpropertyr“   rU   r)   r'   r5   r5   H   sŽ  … ñð
 €O�SÓØ0Ø!%€K�˜#‘Ó%Ø!Ø€Eˆ3ÓØ&Ø€IˆtÓØ/áØô€Lñ ˜(Ô#Øð  c¨3 h¡ð °Cò ó ó $ðð8 %)Ø:>ñ	2à�{Ñ#ð2ð �t˜C‘yÑ!ð2ð Ð6Ñ7ð	2ð
 ð2ð 
ó2ð2 %)Ø:>ñ	8à�{Ñ#ð8ð �t˜C‘yÑ!ð8ð Ð6Ñ7ð	8ð
 ð8ð 
Ð%Ñ	&ó8ðt˜d ;Ñ/ð ¸3ð À8×CTÑCTó ðBJ¨G°C¸°HÑ,=ð JÀ*ó Jð ð˜3ò ó ñr)   r5   )-rZ   Úloggingrk   Ú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   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   Úpydanticr   r   Ú	getLoggerr”   rD   rš   r(   rr   r0   r3   r5   rU   r)   r'   Ú<module>r¨      s¾   ðÛ Û Û 	ß E× EÑ Eã Ý =÷÷
÷ 
õ 
÷ SÑ RÝ 9ß 0à	ˆ×	Ñ	˜8Ó	$€ð@ G¨C°¨HÑ$5ð @¸+ó @ð kð °dó ð .Ø�3˜�8Ñð.Ø-1Ð2BÑ-Cð.àó.ô i˜=õ ir)   