§
    æ˜ºhý-  ã                   ó4  — 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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 d d	lmZ d
edefd„Z 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'dS )é    N)ÚThreadPoolExecutor)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚOptionalÚUnion)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLMÚcreate_base_retry_decorator)Ú
GenerationÚGenerationChunkÚ	LLMResult)ÚFieldÚ	SecretStrÚroot_validator)Úconvert_to_secret_str)Úget_from_dict_or_envÚ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    új/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/llms/fireworks.pyÚ$_stream_response_to_generation_chunkr"      sW   € õ ØÔ$ QÔ'Ô,ÝØ)Ô1°!Ô4ÔBØ$Ô,¨QÔ/Ô8ð
ñ 
ô 
ðñ ô ð ó    c                   óâ  — 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(dS )"Ú	FireworkszFireworks models.z*accounts/fireworks/models/llama-v2-7b-chatÚmodelc                  ó2   — ddddœ                      ¦   «         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 )Nr1   ÚFIREWORKS_API_KEYr-   ©Úselfs    r!   Ú
lc_secretszFireworks.lc_secrets-   s   € à#Ð%8Ð9Ð9r#   c                 ó   — dS )NTr-   ©Úclss    r!   Úis_lc_serializablezFireworks.is_lc_serializable1   s   € àˆtr#   c                 ó
   — g d¢S )z*Get the namespace of the langchain object.)Ú	langchainÚllmsÚ	fireworksr-   r<   s    r!   Úget_lc_namespacezFireworks.get_lc_namespace5   s   € ð 2Ð1Ð1Ð1r#   Úvaluesc                 óÎ   — 	 ddl }n"# t          $ r}t          d¦  «        |‚d}~ww xY wt          t          |dd¦  «        ¦  «        }|                     ¦   «         |j        _        |S )z%Validate that api key in environment.r   Nz`Could not import fireworks-ai python package. Please install it with `pip install fireworks-ai`.r1   r7   )Úfireworks.clientÚImportErrorr   r   Úget_secret_valueÚclientÚapi_key)r=   rD   rB   Úer1   s        r!   Úvalidate_environmentzFireworks.validate_environment:   s“   € ð	Ø#Ð#Ð#Ð#Ð#øÝð 	ð 	ð 	ÝðEñô ð ðøøøøð	øøøõ
 2Ý  Ð)<Ð>QÑRÔRñ
ô 
Ðð $5×#EÒ#EÑ#GÔ#Gˆ	ÔÔ Øˆs   ‚ ‡
&‘!¡&c                 ó   — dS )zReturn type of llm.rB   r-   r8   s    r!   Ú	_llm_typezFireworks._llm_typeJ   s	   € ð ˆ{r#   ÚpromptsÚstopÚrun_managerÚkwargsc                 óÞ   — d| j         i| j        ¥}|                      |¦  «        }g }|D ].}t          | | j        f|||dœ|¤Ž}	|                     |	¦  «         Œ/|                      ||¦  «        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&   ©ÚpromptrQ   rP   )r&   r0   Úget_batch_promptsÚcompletion_with_retry_batchingr5   ÚextendÚcreate_llm_result©
r9   rO   rP   rQ   rR   ÚparamsÚsub_promptsr   Ú_promptsÚresponses
             r!   Ú	_generatezFireworks._generateO   s©   € ð �T”Zð
àÔð
ˆð ×,Ò,¨WÑ5Ô5ˆØˆØ#ð 		%ð 		%ˆHÝ5ØØ”ðð  Ø'Øðð ð ðð ˆHð �NŠN˜8Ñ$Ô$Ð$Ð$à×%Ò% g¨wÑ7Ô7Ð7r#   c              ‹   óî   K  — d| j         i| j        ¥}|                      |¦  «        }g }|D ]4}t          | | j        f|||dœ|¤Žƒ d{V —†}	|                     |	¦  «         Œ5|                      ||¦  «        S )z;Call out to Fireworks endpoint async with k unique prompts.r&   rT   N)r&   r0   rV   Úacompletion_with_retry_batchingr5   rX   rY   rZ   s
             r!   Ú
_ageneratezFireworks._ageneratep   sË   è è € ð �T”Zð
àÔð
ˆð ×,Ò,¨WÑ5Ô5ˆØˆØ#ð 		%ð 		%ˆHÝ<ØØ”ðð  Ø'Øðð ð ðð ð ð ð ð ð ð ˆHð �NŠN˜8Ñ$Ô$Ð$Ð$à×%Ò% g¨wÑ7Ô7Ð7r#   c                 ój   ‡ ‡— ˆˆ fd„t          dt          ‰¦  «        ‰ j        ¦  «        D ¦   «         }|S )z!Get the sub prompts for llm call.c                 ó4   •— g | ]}‰||‰j         z   …         ‘ŒS r-   )r4   )Ú.0ÚirO   r9   s     €€r!   ú
<listcomp>z/Fireworks.get_batch_prompts.<locals>.<listcomp>�   s:   ø€ ð 
ð 
ð 
àð �A˜˜DœOÑ+Ð+Ô,ð
ð 
ð 
r#   r   )ÚrangeÚlenr4   )r9   rO   r\   s   `` r!   rV   zFireworks.get_batch_prompts‹   sM   øø€ ð

ð 
ð 
ð 
ð 
å˜1�c '™lœl¨D¬OÑ<Ô<ð
ñ 
ô 
ˆð Ðr#   r   c                 ó¼   — g }t          |¦  «        D ]1\  }}|||dz   …         }|                     d„ |D ¦   «         ¦  «         Œ2d| j        i}t          ||¬¦  «        S )z2Create the LLMResult from the choices and prompts.r(   c                 óZ   — g | ](}t          |j        d          d         j        ¬¦  «        ‘Œ)S )r   r   )r   )r   Ú__dict__r   )re   Úchoices     r!   rg   z/Fireworks.create_llm_result.<locals>.<listcomp>œ   sK   € ð ð ð ð õ Ø#œ_¨YÔ7¸Ô:Ô?ðñ ô ðð ð r#   r&   )ÚgenerationsÚ
llm_output)Ú	enumerateÚappendr&   r   )r9   r   rO   rn   rf   Ú_Úsub_choicesro   s           r!   rY   zFireworks.create_llm_result–   s�   € àˆÝ˜gÑ&Ô&ð 		ð 		‰DˆAˆqØ! ! q¨1¡u +Ô.ˆKØ×Òðð ð #.ð	ñ ô ñô ð ð ð ˜tœzÐ*ˆ
Ý [¸ZÐHÑHÔHÐHr#   rU   c              +   óÂ   K  — | j         |ddœ| j        ¥}t          | | j        f||dœ|¤ŽD ]3}t	          |¦  «        }|V — |r|                     |j        |¬¦  «         Œ4d S ©NT)r&   rU   Ústream)rQ   rP   )Úchunk)r&   r0   Úcompletion_with_retryr5   r"   Úon_llm_new_tokenr   ©r9   rU   rP   rQ   rR   r[   Ústream_resprw   s           r!   Ú_streamzFireworks._stream¦   s°   è è € ð ”ZØØð
ð 
ð Ôð	
ˆõ 1Ø�$”.ð
Ø.9Àð
ð 
ØHNð
ð 
ð 	Fð 	FˆKõ 9¸ÑEÔEˆEØˆKˆKˆKØð FØ×,Ò,¨U¬Z¸uÐ,ÑEÔEÐEøð	Fð 	Fr#   c                óè   K  — | j         |ddœ| j        ¥}t          | | j        f||dœ|¤Žƒ d {V —†2 3 d {V —†}t	          |¦  «        }|W V — |r"|                     |j        |¬¦  «        ƒ d {V —† Œ@6 d S ru   )r&   r0   Ú acompletion_with_retry_streamingr5   r"   ry   r   rz   s           r!   Ú_astreamzFireworks._astream»   s  è è € ð ”ZØØð
ð 
ð Ôð	
ˆõ (HØ�$”.ð(
Ø.9Àð(
ð (
ØHNð(
ð (
ð "
ð "
ð "
ð "
ð "
ð "
ð 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	L�+õ 9¸ÑEÔEˆEØˆKˆKˆKˆKØð LØ!×2Ò2°5´:ÀUÐ2ÑKÔKÐKÐKÐKÐKÐKÐKÐKøð"
ð "
ð "
s   ±A1)NN))Ú__name__Ú
__module__Ú__qualname__Ú__doc__r&   ÚstrÚ__annotations__r   r0   r    r1   r
   r   r3   Úintr4   r5   ÚboolÚpropertyr   r:   Úclassmethodr>   r	   rC   r   rL   rN   r   r   r   r_   r   rb   rV   rY   r   r   r|   r   r   r-   r#   r!   r%   r%      s‘  € € € € € € ØÐà=€Eˆ3Ð=Ð=Ñ=Ø˜ðð ðñ ô €L�$ð ð ñ ð .2Ð�x 	Ô*Ð1Ð1Ñ1Ø€K�ÐÐÑØ€J�ÐÐÑØ€IˆtÐÐÑàð:˜D  c œNð :ð :ð :ñ „Xð:ð ð 4ð ð ð ñ „[ðð ð2  c¤ð 2ð 2ð 2ñ „[ð2ð €^ÑÔð¨$ð °4ð ð ð ñ Ôðð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	8ð 8à�c”ð8ð �t˜C”yÔ!ð8ð Ð6Ô7ð	8ð
 ð8ð 
ð8ð 8ð 8ð 8ðH %)Ø?Cð	8ð 8à�c”ð8ð �t˜C”yÔ!ð8ð Ð;Ô<ð	8ð
 ð8ð 
ð8ð 8ð 8ð 8ð6	à�c”ð	ð 
ˆd�3ŒiŒð	ð 	ð 	ð 	ðI¨ð I°t¸C´yð IÀYð Ið Ið Ið Ið& %)Ø:>ð	Fð FàðFð �t˜C”yÔ!ðFð Ð6Ô7ð	Fð
 ðFð 
�/Ô	"ðFð Fð Fð Fð0 %)Ø?Cð	Lð LàðLð �t˜C”yÔ!ðLð Ð;Ô<ð	Lð
 ðLð 
�Ô	'ðLð Lð Lð Lð Lð Lr#   r%   Ú	conditionÚ	decoratorc                 ó€   ‡ ‡— 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 ©Nr-   )r�   rŠ   r‹   s    €€r!   Úactual_decoratorz/conditional_decorator.<locals>.actual_decoratorÞ   s   ø€ Øð 	#Ø�9˜T‘?”?Ð"Øˆr#   )r   r   )rŠ   r‹   r�   s   `` r!   Úconditional_decoratorr‘   Ñ   sS   øø€ ð�x­¨­s¨
Ô3ð ½Å#ÀÍÀÔ8Lð ð ð ð ð ð ð ð
 Ðr#   ©rQ   Úllmr5   rQ   rR   c                ó’   ‡— ddl Št          | |¬¦  «        }t          ||¦  «        dt          dt          fˆfd„¦   «         } |di |¤ŽS )ú*Use tenacity to retry the completion call.r   Nr’   rR   r   c                  ó2   •—  ‰j         j        j        di | ¤ŽS ©Nr-   ©rI   Ú
CompletionÚcreate©rR   rB   s    €r!   Ú_completion_with_retryz5completion_with_retry.<locals>._completion_with_retryò   s-   ø€ à1ˆyÔÔ*Ô1ð 
ð 
Øð
ð 
ð 	
r#   r-   ©rF   Ú_create_retry_decoratorr‘   r   ©r“   r5   rQ   rR   Úretry_decoratorrœ   rB   s         @r!   rx   rx   æ   s}   ø€ ð ÐÐÐå-¨c¸{ÐKÑKÔK€Oå˜9 oÑ6Ô6ð
­ð 
µð 
ð 
ð 
ð 
ð 
ñ 7Ô6ð
ð
 "Ð!Ð+Ð+ FÐ+Ð+Ð+r#   c             ‹   ó¢   ‡K  — ddl Št          | |¬¦  «        }t          ||¦  «        dt          dt          fˆfd„¦   «         } |di |¤Žƒ d{V —†S )r•   r   Nr’   rR   r   c               ›   óB   •K  —  ‰j         j        j        di | ¤Žƒ d {V —†S r—   ©rI   r™   Úacreater›   s    €r!   rœ   z6acompletion_with_retry.<locals>._completion_with_retry  sO   øè è € à8�YÔ%Ô0Ô8ð 
ð 
Øð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r#   r-   r�   rŸ   s         @r!   Úacompletion_with_retryr¥   û   ó“   øè è € ð ÐÐÐå-¨c¸{ÐKÑKÔK€Oå˜9 oÑ6Ô6ð
­sð 
µsð 
ð 
ð 
ð 
ð 
ñ 7Ô6ð
ð
 (Ð'Ð1Ð1¨&Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r#   c                óÐ   ‡‡‡‡— ddl Š‰d         Š‰d= t          | |¬¦  «        }t          ||¦  «        dt          dt          fˆˆfd„¦   «         Šdt
          fˆˆfd„} |¦   «         S )r•   r   NrU   r’   r   c                 ó:   •—  ‰j         j        j        di ‰¤d| i¤ŽS ©NrU   r-   r˜   ©rU   rB   rR   s    €€r!   rœ   z>completion_with_retry_batching.<locals>._completion_with_retry  s-   ø€ à1ˆyÔÔ*Ô1ÐJÐJ°FÐJÐJÀ6ÐJÐJÐJÐJr#   c                  óš   •— t          ¦   «         5 } t          |                      ‰‰¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |S r�   )r   ÚlistÚmap)ÚexecutorÚresultsrœ   rU   s     €€r!   Úbatch_sync_runz6completion_with_retry_batching.<locals>.batch_sync_run#  s’   ø€ ÝÑ!Ô!ð 	I XÝ˜8Ÿ<š<Ð(>ÀÑGÔGÑHÔHˆGð	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Iàˆs   �$A Á AÁA)rF   rž   r‘   r„   r   r	   )	r“   r5   rQ   rR   r    r°   rœ   rB   rU   s	      `  @@@r!   rW   rW     sÁ   øøøø€ ð ÐÐÐà�HÔ€FØˆxÐå-¨c¸{ÐKÑKÔK€Oå˜9 oÑ6Ô6ðK¥sð K­sð Kð Kð Kð Kð Kð Kñ 7Ô6ð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{V —†S )r•   r   NrU   r’   r   c              “   óJ   •K  —  ‰j         j        j        di ‰¤d| i¤Žƒ d {V —†S r©   r£   rª   s    €€r!   rœ   z?acompletion_with_retry_batching.<locals>._completion_with_retry:  sC   øè è € à8�YÔ%Ô0Ô8ÐQÐQ¸6ÐQÐQÈ&ÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQr#   Úcoroutine_funcÚargsrR   c                 óâ   — t          j        ¦   «         }	 t          j        |¦  «         |                      | |i |¤Ž¦  «        |                     ¦   «          S # |                     ¦   «          w xY wr�   )ÚasyncioÚnew_event_loopÚset_event_loopÚrun_until_completeÚclose)r³   r´   rR   Únew_loops       r!   Úrun_coroutine_in_new_loopzBacompletion_with_retry_batching.<locals>.run_coroutine_in_new_loop>  sq   € õ Ô)Ñ+Ô+ˆð	ÝÔ" 8Ñ,Ô,Ð,Ø×.Ò.¨~¨~¸tÐ/NÀvÐ/NÐ/NÑOÔOà�NŠNÑÔÐÐøˆH�NŠNÑÔÐÐøøøs   •.A ÁA.c            
   “   óÂ   •K  — t          ¦   «         5 } t          |                      ‰‰gt          ‰¦  «        z  ‰¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |S r�   )r   r¬   r­   ri   )r®   r¯   rœ   rU   r¼   s     €€€r!   r°   z7acompletion_with_retry_batching.<locals>.batch_sync_runH  s£   øè è € ÝÑ!Ô!ð 	 XÝØ—’Ø-Ø+Ð,­s°6©{¬{Ñ:Øñô ñô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆs   ’6AÁAÁA)rF   rž   r‘   r„   r   r   r	   )
r“   r5   rQ   rR   r    r°   rœ   rB   rU   r¼   s
      `  @@@@r!   ra   ra   +  s  øøøøøè è € ð ÐÐÐà�HÔ€FØˆxÐå-¨c¸{ÐKÑKÔK€Oå˜9 oÑ6Ô6ðR­Sð RµSð Rð Rð Rð Rð Rð Rñ 7Ô6ðRðÝðÝ$(ðÝ48ðå	ðð ð ð ð	¥$ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð  �Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r#   c             ‹   ó¢   ‡K  — ddl Št          | |¬¦  «        }t          ||¦  «        dt          dt          fˆfd„¦   «         } |di |¤Žƒ d{V —†S )z8Use tenacity to retry the completion call for streaming.r   Nr’   rR   r   c               ›   ó6   •K  —  ‰j         j        j        di | ¤ŽS r—   r£   r›   s    €r!   rœ   z@acompletion_with_retry_streaming.<locals>._completion_with_retryb  s1   øè è € à2ˆyÔÔ*Ô2ð 
ð 
Øð
ð 
ð 	
r#   r-   r�   rŸ   s         @r!   r~   r~   V  r¦   r#   c                ó¼   — 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_typesr3   rQ   )	rF   rI   ÚerrorÚRateLimitErrorÚInternalServerErrorÚBadGatewayErrorÚServiceUnavailableErrorr   r3   )r“   rQ   rB   Úerrorss       r!   rž   rž   k  sk   € ð ÐÐÐð 	ÔÔÔ-ØÔÔÔ2ØÔÔÔ.ØÔÔÔ6ð	€Fõ 'Ø¨¬À[ðñ ô ð r#   )(r¶   Úconcurrent.futuresr   Útypingr   r   r   r   r   r	   r
   r   Úlangchain_core.callbacksr   r   Ú#langchain_core.language_models.llmsr   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.pydantic_v1r   r   r   Úlangchain_core.utilsr   Úlangchain_core.utils.envr   r"   r%   r‡   r‘   rx   r¥   rW   ra   r~   rž   r-   r#   r!   ú<module>rÐ      s¿  ðØ €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ Vðð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ð
Øð
àð
ð 
ð 
ð 
ðqLð qLð qLð qLð qL�ñ qLô qLð qLðhØðØ (¨#¨°¨Ô 4ðàˆsˆe�SˆjÔðð ð ð ð2 7;ð	,ð ,ð ,Ø	ð,àð,ð Ð2Ô3ð	,ð
 ð,ð 	ð,ð ,ð ,ð ,ð2 <@ð	2ð 2ð 2Ø	ð2àð2ð Ð7Ô8ð	2ð
 ð2ð 	ð2ð 2ð 2ð 2ð2 7;ð	ð ð Ø	ðàðð Ð2Ô3ð	ð
 ðð 	ðð ð ð ð> <@ð	("ð ("ð ("Ø	ð("àð("ð Ð7Ô8ð	("ð
 ð("ð 	ð("ð ("ð ("ð ("ð^ <@ð	2ð 2ð 2Ø	ð2àð2ð Ð7Ô8ð	2ð
 ð2ð 	ð2ð 2ð 2ð 2ð4 	ðð ð Ø	ðð ØÐ+Ð-EÐEÔFôðð ˆsˆe�SˆjÔðð ð ð ð ð r#   