Ë
    µŒjL%  ã                   ó  — d dl 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
Z
d dlmZ d dlmZmZ d dlmZmZmZ d dl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 m!Z! de"de"fd„Z#dee   dee"ef   fd„Z$ G d„ de«      Z%y)é    N)ÚJSONDecodeError)ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptional)ÚClientSession)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úconvert_to_secret_str)Ú
ConfigDictÚFieldÚ	SecretStrÚroleÚreturnc                 ó<   — ddddœ}| |v r||    S t        d| › �«      ‚)NÚ	assistantÚhuman)Úair   ÚchatzUnknown role type: )Ú
ValueError)r   Úmaps     úx/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/symblai_nebula.pyÚ_convert_roler$      s2   € Ø w¸Ñ
@€CØˆs�{Ø�4‰yÐäÐ.¨t¨fÐ5Ó6Ð6ó    Úmessagesc                 óR  — d}g }| d d D ]t  }|j                   dk(  r2t        |j                  t        «      r|j                  }Œ9t	        d«      ‚|j                  t        |j                   «      |j                  dœ«       Œv | d   j                  }|j                  d|dœ«       ||dœS )NÚ éÿÿÿÿÚsystemzSystem prompt must be a string)r   Útextr   )Úsystem_promptr&   )ÚtypeÚ
isinstanceÚcontentÚstrr!   Úappendr$   )r&   r*   Úformatted_messagesÚmessager+   s        r#   Ú_format_nebula_messagesr4      s¢   € Ø€FØÐØ˜C˜R“=ˆØ�<‰<˜8Ò#Ü˜'Ÿ/™/¬3Ô/Ø Ÿ™‘ä Ð!AÓBÐBà×%Ñ%ä)¨'¯,©,Ó7Ø#ŸO™Oñõð !ð �B‰<×Ñ€DØ×Ñ w¸Ñ=Ô>Ø#Ð1CÑDÐDr%   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
d¬«      Zee   ed<    edd¬«      Zdedd
fˆ fd„Zedefd„«       Z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dee   deee      dee   dede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!f
d„Z#ˆ xZ$S )Ú
ChatNebulaam  `Nebula` chat large language model - https://docs.symbl.ai/docs/nebula-llm

    API Reference: https://docs.symbl.ai/reference/nebula-chat

    To use, set the environment variable ``NEBULA_API_KEY``,
    or pass it as a named parameter to the constructor.
    To request an API key, visit https://platform.symbl.ai/#/login
    Example:
        .. code-block:: python

            from langchain_community.chat_models import ChatNebula
            from langchain_core.messages import SystemMessage, HumanMessage

            chat = ChatNebula(max_new_tokens=1024, temperature=0.5)

            messages = [
            SystemMessage(
                content="You are a helpful assistant."
            ),
            HumanMessage(
                "Answer the following question. How can I help save the world."
            ),
            ]
            chat.invoke(messages)
    i   Úmax_new_tokensr   ÚtemperatureFÚ	streamingzhttps://api-nebula.symbl.aiÚnebula_api_urlNzNebula API Token)ÚdescriptionÚnebula_api_keyT)Úpopulate_by_nameÚarbitrary_types_allowedÚkwargsr   c                 óÈ   •— d|v rt        |j                  d«      «      }n1dt        j                  v rt        t        j                  d   «      }nd }t	        ‰| �  dd|i|¤Ž y )Nr<   ÚNEBULA_API_KEY© )r   ÚpopÚosÚenvironÚsuperÚ__init__)Úselfr?   Úapi_keyÚ	__class__s      €r#   rG   zChatNebula.__init__a   sY   ø€ Ø˜vÑ%Ü+¨F¯J©JÐ7GÓ,HÓI‰GØ¤§¡Ñ+Ü+¬B¯J©JÐ7GÑ,HÓI‰GàˆGÜ‰ÑÑ:¨Ð:°6Ó:r%   c                  ó   — y)zReturn type of chat model.znebula-chatrB   ©rH   s    r#   Ú	_llm_typezChatNebula._llm_typej   s   € ð r%   c                 óP   — | j                   r| j                   j                  «       S y)Nr(   )r<   Úget_secret_valuerL   s    r#   Ú_api_keyzChatNebula._api_keyo   s#   € à×ÒØ×&Ñ&×7Ñ7Ó9Ð9Ør%   r&   ÚstopÚrun_managerc              +   ór  K  — | j                   › d�}| j                  ddœ}t        |¬«      }| j                  | j                  dœ|¥|¥}|j                  «       D �	�
ci c]  \  }	}
|
€Œ	|	|
“Œ }}	}
t        j                  |«      }t        j                  d|||d¬	«      }|j                  «        |j                  «       D ]_  }|j                  «       d
d }	 t        j                  |«      }|d   }t        t!        |¬«      ¬«      }|r|j#                  ||¬«       |–— Œa yc c}
}	w # t        $ r Y Œtw xY w­w)z#Call out to Nebula's chat endpoint.ú/v1/model/chat/streamingúapplication/json©ÚApiKeyzContent-Type©r&   ©r7   r8   NÚPOSTT)ÚheadersÚdataÚstreamé   Údelta©r/   ©r3   ©Úchunk)r:   rP   r4   r7   r8   ÚitemsÚjsonÚdumpsÚrequestsÚrequestÚraise_for_statusÚ
iter_linesÚdecodeÚloadsr   r   r   Úon_llm_new_token)rH   r&   rQ   rR   r?   Úurlr[   Úformatted_dataÚpayloadÚkÚvÚjson_payloadÚresponseÚchunk_responseÚchunk_decodedrc   ÚtokenÚcg_chunks                     r#   Ú_streamzChatNebula._streamu   sN  è ø€ ð ×$Ñ$Ð%Ð%=Ð>ˆà—m‘mØ.ñ
ˆô 1¸(ÔCˆà"×1Ñ1Ø×+Ñ+ñ#
ð ð#
ð ð	#
ˆð %,§M¡M¤OÔE¡O™D˜A˜q°q±}�1�a‘4 OˆÑEÜ—z‘z 'Ó*ˆä×#Ñ#Ø�C ¨|ÀDô
ˆð 	×!Ñ!Ô#à&×1Ñ1Ö3ˆNØ*×1Ñ1Ó3°A°BÐ7ˆMðÜŸ
™
 =Ó1�ð ˜'‘NˆEÜ*´>È%Ô3PÔQˆHÙØ×,Ñ,¨U¸(Ð,ÔCØ‹Nñ 4ùó Føô #ò Ùðüs=   ‚AD7Á
D"Á(D"Á-A(D7ÃD(Ã+=D7Ä(	D4Ä1D7Ä3D4Ä4D7c                ó`  K  — | j                   › d�}| j                  ddœ}t        |¬«      }| j                  | j                  dœ|¥|¥}|j                  «       D �	�
ci c]  \  }	}
|
€Œ	|	|
“Œ }}	}
t        j                  |«      }t        «       4 ƒd {  –—† }|j                  |||d¬«      4 ƒd {  –—† }|j                  «        |j                  2 3 d {  –—† }|j                  «       dd  }	 t        j                  |«      }|d	   }t        t!        |¬
«      ¬«      }|r|j#                  ||¬«      ƒ d {  –—†  |­–— Œpc c}
}	w 7 Œ´7 Œ˜7 Œu# t        $ r Y Œ‡w xY w7 Œ%6 d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY wd d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w­w)NrT   rU   rV   rX   rY   T)r\   r[   r]   r^   r_   r`   ra   rb   )r:   rP   r4   r7   r8   rd   re   rf   r
   Úpostri   r/   rk   rl   r   r   r   rm   )rH   r&   rQ   rR   r?   rn   r[   ro   rp   rq   rr   rs   Úsessionrt   ru   rv   rc   rw   rx   s                      r#   Ú_astreamzChatNebula._astreamž   s¥  è ø€ ð ×$Ñ$Ð%Ð%=Ð>ˆØ!Ÿ]™]Ð<NÑOˆÜ0¸(ÔCˆà"×1Ñ1Ø×+Ñ+ñ#
ð ð#
ð ð	#
ˆð %,§M¡M¤OÔE¡O™D˜A˜q°q±}�1�a‘4 OˆÑEÜ—z‘z 'Ó*ˆä —?”? gØ—|‘|Ø˜,°Àð $÷ ô àØ×)Ñ)Ô+Ø,4×,<Ò,<÷ #˜.Ø$2×$9Ñ$9Ó$;¸A¸BÐ$?�Mð!Ü $§
¡
¨=Ó 9˜ð " '™N�EÜ2Ü .°uÔ =ô �Hñ #Ø)×:Ñ:¸5ÈÐ:ÓQ×QÐQØ"”Nùó) Fð #øðøð#ùô +ò !Ù ð!úð Røð -=÷	÷ ÷ ÷ ó ú÷ #—?—?—?“?üsð   ‚AF.Á
EÁ(EÁ-&F.ÂEÂF.ÂFÂ1E
Â2FÂ5E2ÃEÃE
ÃEÃE2Ã/EÄ3E2Ä7E
Ä8
E2ÅF.Å
FÅEÅ	E	ÅE2ÅE	ÅE2ÅE2Å FÅ+E.Å,FÅ2F	Å8E;Å9F	Æ FÆF.ÆFÆF.ÆF+ÆF"Æ F+Æ'F.c                 ó(  — | j                   r! | j                  |f||dœ|¤Ž}t        |«      S | j                  › d�}| j                  ddœ}t        |¬«      }| j                  | j                  dœ|¥|¥}	|	j                  «       D �
�ci c]  \  }
}|€Œ	|
|“Œ }	}
}t        j                  |	«      }t        j                  d|||¬«      }|j                  «        |j                  «       }t        t        t!        |d	   ¬
«      ¬«      g|¬«      S c c}}
w )N©rQ   rR   ú/v1/model/chatrU   rV   rX   rY   rZ   )r[   r\   r&   r`   ra   ©ÚgenerationsÚ
llm_output)r9   ry   r   r:   rP   r4   r7   r8   rd   re   rf   rg   rh   ri   r   r   r   )rH   r&   rQ   rR   r?   Ústream_iterrn   r[   ro   rp   rq   rr   rs   rt   r\   s                  r#   Ú	_generatezChatNebula._generateÅ   s$  € ð �>Š>Ø&˜$Ÿ,™,ØðØ#°ñØ@FñˆKô (¨Ó4Ð4à×$Ñ$Ð% ^Ð4ˆØ!Ÿ]™]Ð<NÑOˆÜ0¸(ÔCˆà"×1Ñ1Ø×+Ñ+ñ#
ð ð#
ð ð	#
ˆð %,§M¡M¤OÔE¡O™D˜A˜q°q±}�1�a‘4 OˆÑEÜ—z‘z 'Ó*ˆä×#Ñ# F¨C¸À|ÔTˆØ×!Ñ!Ô#Ø�}‰}‹ˆäÜ'´	À$ÀzÑBRÔ0SÔTÐUØô
ð 	
ùó Fs   Â
DÂDc           
   ‹   óT  K  — | j                   r) | j                  |f||dœ|¤Ž}t        |«      ƒ d {  –—† S | j                  › d�}| j                  ddœ}t        |¬«      }| j                  | j                  dœ|¥|¥}	|	j                  «       D �
�ci c]  \  }
}|€Œ	|
|“Œ }	}
}t        j                  |	«      }t        «       4 ƒd {  –—† }|j                  |||¬«      4 ƒd {  –—† }|j                  «        |j                  «       ƒ d {  –—† }t        t        t!        |d   ¬	«      ¬
«      g|¬«      cd d d «      ƒd {  –—†  cd d d «      ƒd {  –—†  S 7 �Œ&c c}}
w 7 Œ™7 Œ~7 ŒX7 Œ%7 Œ# 1 ƒd {  –—†7  sw Y   nxY wd d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w­w)Nr   r€   rU   rV   rX   rY   )r\   r[   r&   r`   ra   r�   )r9   r}   r   r:   rP   r4   r7   r8   rd   re   rf   r
   r{   ri   r   r   r   )rH   r&   rQ   rR   r?   r„   rn   r[   ro   rp   rq   rr   rs   r|   rt   r\   s                   r#   Ú
_ageneratezChatNebula._agenerateè   s˜  è ø€ ð �>Š>Ø'˜$Ÿ-™-ØðØ#°ñØ@FñˆKô /¨{Ó;×;Ð;à×$Ñ$Ð% ^Ð4ˆØ!Ÿ]™]Ð<NÑOˆÜ0¸(ÔCˆà"×1Ñ1Ø×+Ñ+ñ#
ð ð#
ð ð	#
ˆð %,§M¡M¤OÔE¡O™D˜A˜q°q±}�1�a‘4 OˆÑEÜ—z‘z 'Ó*ˆä —?”? gØ—|‘|Ø˜,°ð $÷ ô àØ×)Ñ)Ô+Ø%Ÿ]™]›_×,�ä!ä&¬yÀÀjÑAQÔ/RÔSð!ð  $ô	÷÷ ð ÷ #—?‘?ð <ûó Fð #øðøð -øð	øð #ø÷÷ ñ ú÷ #—?—?—?“?üsÖ   ‚1F(³E´AF(Â
EÂEÂ"&F(ÃE"Ã	F(ÃFÃ%E$Ã&FÃ)$E,ÄE&Ä(E,Ä6FÅE(ÅFÅF(ÅE*ÅF(ÅF(Å$FÅ&E,Å(FÅ*F(Å,E>	Å2E5Å3E>	Å:FÆF(ÆFÆF(ÆF%ÆFÆF%Æ!F()NN)%Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   ÚintÚ__annotations__r8   r	   Úfloatr9   Úboolr:   r0   r   r<   r   r   Úmodel_configr   rG   ÚpropertyrM   rP   r   r   r   r   r   ry   r   r   r}   r   r…   r‡   Ú__classcell__)rJ   s   @r#   r6   r6   5   sÿ  ø… ñð4 €N�CÓØAà#$€K�˜%‘Ó$ØQà€IˆtÓà7€N�CÓ7á*/°ÐBTÔ*U€N�H˜YÑ'ÓUáØØ $ô€Lð
; ð ;¨õ ;ð ð˜3ò ó ðð ð˜#ò ó ðð %)Ø:>ñ	'à�{Ñ#ð'ð �t˜C‘yÑ!ð'ð Ð6Ñ7ð	'ð
 ð'ð 
Ð%Ñ	&ó'ðX %)Ø?Cñ	%#à�{Ñ#ð%#ð �t˜C‘yÑ!ð%#ð Ð;Ñ<ð	%#ð
 ð%#ð 
Ð*Ñ	+ó%#ðT %)Ø:>ñ	!
à�{Ñ#ð!
ð �t˜C‘yÑ!ð!
ð Ð6Ñ7ð	!
ð
 ð!
ð 
ó!
ðL %)Ø?Cñ	&à�{Ñ#ð&ð �t˜C‘yÑ!ð&ð Ð;Ñ<ð	&ð
 ð&ð 
÷&r%   r6   )&re   rD   r   Útypingr   r   r   r   r   r	   rg   Úaiohttpr
   Úlangchain_core.callbacksr   r   Ú*langchain_core.language_models.chat_modelsr   r   r   Úlangchain_core.messagesr   r   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   Úpydanticr   r   r   r0   r$   r4   r6   rB   r%   r#   Ú<module>r›      s…   ðÛ Û 	Ý  ß E× Eã Ý !÷÷ñ ÷
 KÑ Jß RÑ RÝ 6ß 1Ñ 1ð7˜ð 7 ó 7ðE d¨;Ñ&7ð E¸DÀÀcÀ¹Nó Eô,Y�õ Yr%   