Ë
    µŒj‚.  ã                   ó  — d dl 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 d dlmZ d dlmZ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 d d	lmZ d d
lmZmZ dedefd„Z  eddd¬«       G d„ de«      «       Z!de"deegef   deegef   fd„Z#ddœde!de"de
e   dedef
d„Z$ddœde!de"de
e   dedef
d„Z%ddœde!de"de
e   dedef
d„Z&ddœde!de"de
e   dedef
d„Z'ddœde!de"de
e   dedef
d „Z(ddœde!de
eeef      deegef   fd!„Z)y)"é    N)ÚThreadPoolExecutor)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚOptionalÚUnion)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLMÚcreate_base_retry_decorator)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úconvert_to_secret_strÚpre_init)Úget_from_dict_or_env)ÚFieldÚ	SecretStrÚstream_responseÚreturnc                 ó¼   — t        | j                  d   j                  t        | j                  d   j                  | j                  d   j
                  ¬«      ¬«      S )z0Convert a stream response to a generation chunk.r   )Úfinish_reasonÚlogprobs)ÚtextÚgeneration_info)r   Úchoicesr   Údictr   r   )r   s    úl/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/fireworks.pyÚ$_stream_response_to_generation_chunkr#      sU   € ô Ø×$Ñ$ QÑ'×,Ñ,ÜØ)×1Ñ1°!Ñ4×BÑBØ$×,Ñ,¨QÑ/×8Ñ8ô
ôð ó    z0.0.26z1.0zlangchain_fireworks.Fireworks)ÚsinceÚremovalÚalternative_importc                   ó"  — e Zd ZU dZdZeed<    ed„ ¬«      Ze	ed<   dZ
ee   ed<   d	Zeed
<   d	Zeed<   dZeed<   edeeef   fd„«       Zedefd„«       Zedee   fd„«       Zed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f
d„Z	 	 d!dee   deee      dee    dedef
d„Z!dee   deee      fd„Z"dedee   defd„Z#	 	 d!dedeee      dee   dede$e%   f
d„Z&	 	 d!dedeee      dee    dede'e%   f
d „Z(y)"Ú	FireworkszFireworks models.z*accounts/fireworks/models/llama-v2-7b-chatÚmodelc                  ó*   — ddddœj                  «       S )Ngffffffæ?i   é   )ÚtemperatureÚ
max_tokensÚtop_p)Úcopy© r$   r"   Ú<lambda>zFireworks.<lambda>(   s   € ØØØñ!
÷ ‰$‹&ð	!r$   )Údefault_factoryÚmodel_kwargsNÚfireworks_api_keyé   Úmax_retriesÚ
batch_sizeTÚ	use_retryr   c                 ó
   — ddiS )Nr5   ÚFIREWORKS_API_KEYr1   ©Úselfs    r"   Ú
lc_secretszFireworks.lc_secrets3   s   € à#Ð%8Ð9Ð9r$   c                  ó   — y)NTr1   ©Úclss    r"   Úis_lc_serializablezFireworks.is_lc_serializable7   s   € àr$   c                 ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚ	fireworksr1   r@   s    r"   Úget_lc_namespacezFireworks.get_lc_namespace;   s
   € ò 2Ð1r$   Úvaluesc                 ó´   — 	 ddl }t        t        |dd«      «      }|j	                  «       |j
                  _        |S # t        $ r}t        d«      |‚d}~ww xY w)z%Validate that api key in environment.r   Nz`Could not import fireworks-ai python package. Please install it with `pip install fireworks-ai`.r5   r;   )Úfireworks.clientÚImportErrorr   r   Úget_secret_valueÚclientÚapi_key)rA   rH   rF   Úer5   s        r"   Úvalidate_environmentzFireworks.validate_environment@   sm   € ð	Û#ô 2Ü  Ð)<Ð>QÓRó
Ðð $5×#EÑ#EÓ#Gˆ	×ÑÔ Øˆøô ò 	ÜðEóð ðûð	ús   ‚= ½	AÁAÁAc                  ó   — y)zReturn type of llm.rF   r1   r<   s    r"   Ú	_llm_typezFireworks._llm_typeP   s   € ð r$   ÚpromptsÚstopÚrun_managerÚkwargsc                 óæ   — d| j                   i| j                  ¥}| j                  |«      }g }|D ].  }t        | | j                  f|||dœ|¤Ž}	|j                  |	«       Œ0 | j                  ||«      S )zýCall out to Fireworks endpoint with k unique prompts.
        Args:
            prompts: The prompts to pass into the model.
            stop: Optional list of stop words to use when generating.
        Returns:
            The full LLM output.
        r*   ©ÚpromptrU   rT   )r*   r4   Úget_batch_promptsÚcompletion_with_retry_batchingr9   ÚextendÚcreate_llm_result©
r=   rS   rT   rU   rV   ÚparamsÚsub_promptsr    Ú_promptsÚresponses
             r"   Ú	_generatezFireworks._generateU   s”   € ð �T—Z‘Zð
à×Ñð
ˆð ×,Ñ,¨WÓ5ˆØˆÛ#ˆHÜ5ØØ—‘ðð  Ø'Øñð ñˆHð �N‰N˜8Õ$ð $ð ×%Ñ% g¨wÓ7Ð7r$   c              ‹   ó  K  — d| j                   i| j                  ¥}| j                  |«      }g }|D ]6  }t        | | j                  f|||dœ|¤Žƒ d{  –—† }	|j                  |	«       Œ8 | j                  ||«      S 7 Œ)­w)z;Call out to Fireworks endpoint async with k unique prompts.r*   rX   N)r*   r4   rZ   Úacompletion_with_retry_batchingr9   r\   r]   r^   s
             r"   Ú
_ageneratezFireworks._ageneratev   s¢   è ø€ ð �T—Z‘Zð
à×Ñð
ˆð ×,Ñ,¨WÓ5ˆØˆÛ#ˆHÜ<ØØ—‘ðð  Ø'Øñð ñ÷ ˆHð �N‰N˜8Õ$ð $ð ×%Ñ% g¨wÓ7Ð7ðús   ‚AA?ÁA=Á*A?c                 óŠ   — t        dt        |«      | j                  «      D �cg c]  }|||| j                  z    ‘Œ }}|S c c}w )z!Get the sub prompts for llm call.r   )ÚrangeÚlenr8   )r=   rS   Úir`   s       r"   rZ   zFireworks.get_batch_prompts‘   sR   € ô ˜1œc '›l¨D¯O©OÔ<ó
á<�ð �A˜˜DŸO™OÑ+Ò,Ø<ð 	ð 
ð Ðùò	
s   £A r    c           
      ó  — g }t        |«      D ]P  \  }}|||dz    }|j                  |D �cg c](  }t        |j                  d   d   j                  ¬«      ‘Œ* c}«       ŒR d| j
                  i}t        ||¬«      S c c}w )z2Create the LLMResult from the choices and prompts.r,   r    r   )r   r*   )ÚgenerationsÚ
llm_output)Ú	enumerateÚappendr   Ú__dict__r   r*   r   )	r=   r    rS   rl   rj   Ú_Úsub_choicesÚchoicerm   s	            r"   r]   zFireworks.create_llm_resultœ   s—   € àˆÜ˜gÖ&‰DˆAˆqØ! ! q¨1¡uÐ.ˆKØ×Ññ
 #.ó	ñ #.˜ô Ø#Ÿ_™_¨YÑ7¸Ñ:×?Ñ?öð #.ñ	õð 'ð ˜tŸz™zÐ*ˆ
Ü [¸ZÔHÐHùòs   «-A<
rY   c              +   óÞ   K  — | j                   |ddœ| j                  ¥}t        | | j                  f||dœ|¤ŽD ]0  }t	        |«      }|r|j                  |j                  |¬«       |–— Œ2 y ­w©NT)r*   rY   Ústream)rU   rT   )Úchunk)r*   r4   Úcompletion_with_retryr9   r#   Úon_llm_new_tokenr   ©r=   rY   rT   rU   rV   r_   Ústream_resprw   s           r"   Ú_streamzFireworks._stream¬   sƒ   è ø€ ð —Z‘ZØØñ
ð ×Ñð	
ˆô 1Ø�$—.‘.ð
Ø.9Àñ
ØHNô
ˆKô 9¸ÓEˆEÙØ×,Ñ,¨U¯Z©Z¸uÐ,ÔEØ‹Kñ
ùs   ‚A+A-c                ó  K  — | j                   |ddœ| j                  ¥}t        | | j                  f||dœ|¤Žƒ d {  –—† 2 3 d {  –—† }t	        |«      }|r%|j                  |j                  |¬«      ƒ d {  –—†  |­–— ŒA7 ŒE7 Œ>7 Œ6 y ­wru   )r*   r4   Ú acompletion_with_retry_streamingr9   r#   ry   r   rz   s           r"   Ú_astreamzFireworks._astreamÁ   s¬   è ø€ ð —Z‘ZØØñ
ð ×Ñð	
ˆô (HØ�$—.‘.ð(
Ø.9Àñ(
ØHNñ(
÷ "
ð "
÷ 	�+ô 9¸ÓEˆEÙØ!×2Ñ2°5·:±:ÀUÐ2ÓK×KÐKØŒKð"
øð 	øð
 Løñ"
ùsE   ‚:B
¼B½B
ÁBÁBÁBÁ	.B
Á7BÁ8B
ÂBÂB
ÂB
)NN))Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   ÚstrÚ__annotations__r   r4   r!   r5   r
   r   r7   Úintr8   r9   ÚboolÚpropertyr   r>   ÚclassmethodrB   r	   rG   r   rP   rR   r   r   r   rc   r   rf   rZ   r]   r   r   r|   r   r   r1   r$   r"   r)   r)      sw  … ñ à=€Eˆ3Ó=Ùñô€L�$ó ð .2Ð�x 	Ñ*Ó1Ø€K�ÓØ€J�ÓØ€IˆtÓàð:˜D  c ™Nò :ó ð:ð ð 4ò ó ðð ð2  c¡ò 2ó ð2ð ð¨$ð °4ò ó ðð ð˜3ò ó ðð %)Ø:>ñ	8à�c‘ð8ð �t˜C‘yÑ!ð8ð Ð6Ñ7ð	8ð
 ð8ð 
ó8ðH %)Ø?Cñ	8à�c‘ð8ð �t˜C‘yÑ!ð8ð Ð;Ñ<ð	8ð
 ð8ð 
ó8ð6	à�c‘ð	ð 
ˆd�3‰i‰ó	ðI¨ð I°t¸C±yð IÀYó Ið& %)Ø:>ñ	àðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
�/Ñ	"óð0 %)Ø?Cñ	àðð �t˜C‘yÑ!ðð Ð;Ñ<ð	ð
 ðð 
�Ñ	'ôr$   r)   Ú	conditionÚ	decoratorc                 óh   ‡ ‡— dt         t        gt        f   dt         t        gt        f   fˆ ˆfd„}|S )zÍConditionally apply a decorator.

    Args:
        condition: A boolean indicating whether to apply the decorator.
        decorator: A decorator function.

    Returns:
        A decorator function.
    Úfuncr   c                 ó   •— ‰r ‰| «      S | S ©Nr1   )r�   rŠ   r‹   s    €€r"   Úactual_decoratorz/conditional_decorator.<locals>.actual_decoratorä   s   ø€ ÙÙ˜T“?Ð"Øˆr$   )r   r   )rŠ   r‹   r�   s   `` r"   Úconditional_decoratorr‘   ×   s4   ù€ ðœx¬¨¬s¨
Ñ3ð ¼Ä#ÀÌÀÑ8Lö ð
 Ðr$   ©rU   Úllmr9   rU   rV   c                óx   ‡— ddl Št        | |¬«      }t        ||«      dt        dt        fˆfd„«       } |di |¤ŽS )ú*Use tenacity to retry the completion call.r   Nr’   rV   r   c                  óP   •—  ‰j                   j                  j                  di | ¤ŽS ©Nr1   ©rM   Ú
CompletionÚcreate©rV   rF   s    €r"   Ú_completion_with_retryz5completion_with_retry.<locals>._completion_with_retryø   s,   ø€ à1ˆy×Ñ×*Ñ*×1Ñ1ñ 
Øñ
ð 	
r$   r1   ©rJ   Ú_create_retry_decoratorr‘   r   ©r“   r9   rU   rV   Úretry_decoratorrœ   rF   s         @r"   rx   rx   ì   sK   ø€ ó ä-¨c¸{ÔK€Oä˜9 oÓ6ð
¬ð 
´ô 
ó 7ð
ñ
 "Ñ+ FÑ+Ð+r$   c             ‹   ó”   ‡K  — ddl Št        | |¬«      }t        ||«      dt        dt        fˆfd„«       } |di |¤Žƒ d{  –—† S 7 Œ­w)r•   r   Nr’   rV   r   c               ›   ól   •K  —  ‰j                   j                  j                  di | ¤Žƒ d {  –—† S 7 Œ­wr—   ©rM   r™   Úacreater›   s    €r"   rœ   z6acompletion_with_retry.<locals>._completion_with_retry  s:   øè ø€ à8�Y×%Ñ%×0Ñ0×8Ñ8ñ 
Øñ
÷ 
ð 	
ð 
ús   ƒ*4­2®4r1   r�   rŸ   s         @r"   Úacompletion_with_retryr¥     óU   øè ø€ ó ä-¨c¸{ÔK€Oä˜9 oÓ6ð
¬sð 
´sô 
ó 7ð
ñ
 (Ñ1¨&Ñ1×1Ð1Ð1úó   ƒ>AÁAÁAc                ó¨   ‡‡‡‡— ddl Š‰d   Š‰d= t        | |¬«      }t        ||«      dt        dt        fˆˆfd„«       Šdt
        fˆˆfd„} |«       S )r•   r   NrY   r’   r   c                 óX   •—  ‰j                   j                  j                  di ‰¤d| i¤ŽS ©NrY   r1   r˜   ©rY   rF   rV   s    €€r"   rœ   z>completion_with_retry_batching.<locals>._completion_with_retry%  s*   ø€ à1ˆy×Ñ×*Ñ*×1Ñ1ÑJ°FÑJÀ6ÒJÐJr$   c                  ó~   •— t        «       5 } t        | j                  ‰‰«      «      }d d d «       |S # 1 sw Y   S xY wr�   )r   ÚlistÚmap)ÚexecutorÚresultsrœ   rY   s     €€r"   Úbatch_sync_runz6completion_with_retry_batching.<locals>.batch_sync_run)  s6   ø€ ÜÔ! XÜ˜8Ÿ<™<Ð(>ÀÓGÓHˆG÷ "àˆ÷ "àˆús   Œ2²<)rJ   rž   r‘   r„   r   r	   )	r“   r9   rU   rV   r    r±   rœ   rF   rY   s	      `  @@@r"   r[   r[     sh   û€ ó à�HÑ€FØˆxÐä-¨c¸{ÔK€Oä˜9 oÓ6ðK¤sð K¬sõ Kó 7ðKðœDö ñ
 ÓÐr$   c             ‹   ó   ‡‡‡‡‡	K  — ddl Š‰d   Š‰d= t        | |¬«      }t        ||«      dt        dt        fˆˆfd„«       Šdt        dt
        d	t
        dt        fd
„Š	dt        fˆˆˆ	fd„} |«       ƒ d{  –—† S 7 Œ­w)r•   r   NrY   r’   r   c              “   ót   •K  —  ‰j                   j                  j                  di ‰¤d| i¤Žƒ d {  –—† S 7 Œ­wrª   r£   r«   s    €€r"   rœ   z?acompletion_with_retry_batching.<locals>._completion_with_retry@  s4   øè ø€ à8�Y×%Ñ%×0Ñ0×8Ñ8ÑQ¸6ÑQÈ&ÒQ×QÐQÐQús   ƒ.8±6²8Úcoroutine_funcÚargsrV   c                 óÎ   — t        j                  «       }	 t        j                  |«       |j                   | |i |¤Ž«      |j	                  «        S # |j	                  «        w xY wr�   )ÚasyncioÚnew_event_loopÚset_event_loopÚrun_until_completeÚclose)r´   rµ   rV   Únew_loops       r"   Úrun_coroutine_in_new_loopzBacompletion_with_retry_batching.<locals>.run_coroutine_in_new_loopD  sR   € ô ×)Ñ)Ó+ˆð	Ü×"Ñ" 8Ô,Ø×.Ñ.©~¸tÐ/NÀvÑ/NÓOà�N‰NÕøˆH�N‰NÕús   –+A ÁA$c            
   “   ó¢   •K  — t        «       5 } t        | j                  ‰‰gt        ‰«      z  ‰«      «      }d d d «       |S # 1 sw Y   S xY w­wr�   )r   r­   r®   ri   )r¯   r°   rœ   rY   r½   s     €€€r"   r±   z7acompletion_with_retry_batching.<locals>.batch_sync_runN  sR   øè ø€ ÜÔ! XÜØ—‘Ø-Ø+Ð,¬s°6«{Ñ:ØóóˆG÷ "ð ˆ÷ "ð ˆüs   ƒAŽ*A¸
AÁAÁA)rJ   rž   r‘   r„   r   r   r	   )
r“   r9   rU   rV   r    r±   rœ   rF   rY   r½   s
      `  @@@@r"   re   re   1  s—   üè ø€ ó à�HÑ€FØˆxÐä-¨c¸{ÔK€Oä˜9 oÓ6ðR¬Sð R´Sõ Ró 7ðRðÜðÜ$(ðÜ48ðä	óð	¤$÷ 	ñ  Ó!×!Ð!Ð!ús   ‡A0A>Á7A<Á8A>c             ‹   ó”   ‡K  — ddl Št        | |¬«      }t        ||«      dt        dt        fˆfd„«       } |di |¤Žƒ d{  –—† S 7 Œ­w)z8Use tenacity to retry the completion call for streaming.r   Nr’   rV   r   c               ›   óX   •K  —  ‰j                   j                  j                  di | ¤ŽS ­wr—   r£   r›   s    €r"   rœ   z@acompletion_with_retry_streaming.<locals>._completion_with_retryh  s0   øè ø€ à2ˆy×Ñ×*Ñ*×2Ñ2ñ 
Øñ
ð 	
ùs   ƒ'*r1   r�   rŸ   s         @r"   r~   r~   \  r¦   r§   c                ó6  — ddl }|j                  j                  j                  |j                  j                  j                  |j                  j                  j
                  |j                  j                  j                  g}t        || j                  |¬«      S )zDefine retry mechanism.r   N)Úerror_typesr7   rU   )	rJ   rM   ÚerrorÚRateLimitErrorÚInternalServerErrorÚBadGatewayErrorÚServiceUnavailableErrorr   r7   )r“   rU   rF   Úerrorss       r"   rž   rž   q  s~   € ó ð 	×Ñ×Ñ×-Ñ-Ø×Ñ×Ñ×2Ñ2Ø×Ñ×Ñ×.Ñ.Ø×Ñ×Ñ×6Ñ6ð	€Fô 'Ø¨¯©À[ôð r$   )*r·   Úconcurrent.futuresr   Útypingr   r   r   r   r   r	   r
   r   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr   r   Ú#langchain_core.language_models.llmsr   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   r   Úlangchain_core.utils.envr   Úpydanticr   r   r#   r)   r‡   r‘   rx   r¥   r[   re   r~   rž   r1   r$   r"   Ú<module>rÒ      s%  ðÛ Ý 1ß V× VÓ Vå 6÷÷ Uß IÑ Iß @Ý 9ß %ð
Øð
àó
ñ Ø
ØØ6ôô
q�ó qóð
qðhØðØ (¨#¨°¨Ñ 4ðàˆsˆe�SˆjÑóð2 7;ò	,Ø	ð,àð,ð Ð2Ñ3ð	,ð
 ð,ð 	ó,ð2 <@ò	2Ø	ð2àð2ð Ð7Ñ8ð	2ð
 ð2ð 	ó2ð2 7;ò	Ø	ðàðð Ð2Ñ3ð	ð
 ðð 	óð> <@ò	("Ø	ð("àð("ð Ð7Ñ8ð	("ð
 ð("ð 	ó("ð^ <@ò	2Ø	ð2àð2ð Ð7Ñ8ð	2ð
 ð2ð 	ó2ð4 	òØ	ðð ØÐ+Ð-EÐEÑFñðð ˆsˆe�SˆjÑôr$   