§
    šŠtj‚.  ã                   óh  — 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)dS )"é    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    ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/fireworks.pyÚ$_stream_response_to_generation_chunkr#      sW   € õ ØÔ$ QÔ'Ô,ÝØ)Ô1°!Ô4ÔBØ$Ô,¨QÔ/Ô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(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 )Nr5   ÚFIREWORKS_API_KEYr1   ©Úselfs    r"   Ú
lc_secretszFireworks.lc_secrets3   s   € à#Ð%8Ð9Ð9r$   c                 ó   — dS )NTr1   ©Úclss    r"   Úis_lc_serializablezFireworks.is_lc_serializable7   s   € àˆtr$   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Ð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`.r5   r;   )Úfireworks.clientÚImportErrorr   r   Úget_secret_valueÚclientÚapi_key)rA   rH   rF   Úer5   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.rF   r1   r<   s    r"   Ú	_llm_typezFireworks._llm_typeP   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*   ©Ú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ð
àÔð
ˆð ×,Ò,¨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*   rX   N)r*   r4   rZ   Úacompletion_with_retry_batchingr9   r\   r]   r^   s
             r"   Ú
_ageneratezFireworks._ageneratev   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 r1   )r8   )Ú.0ÚirS   r=   s     €€r"   ú
<listcomp>z/Fireworks.get_batch_prompts.<locals>.<listcomp>–   s:   ø€ ð 
ð 
ð 
àð �A˜˜DœOÑ+Ð+Ô,ð
ð 
ð 
r$   r   )ÚrangeÚlenr8   )r=   rS   r`   s   `` r"   rZ   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   )ri   Úchoices     r"   rk   z/Fireworks.create_llm_result.<locals>.<listcomp>¢   sK   € ð ð ð ð õ Ø#œ_¨YÔ7¸Ô:Ô?ðñ ô ðð ð r$   r*   )ÚgenerationsÚ
llm_output)Ú	enumerateÚappendr*   r   )r=   r    rS   rr   rj   Ú_Úsub_choicesrs   s           r"   r]   zFireworks.create_llm_resultœ   s�   € àˆÝ˜gÑ&Ô&ð 		ð 		‰DˆAˆqØ! ! q¨1¡u +Ô.ˆKØ×Òðð ð #.ð	ñ ô ñô ð ð ð ˜tœzÐ*ˆ
Ý [¸ZÐHÑHÔHÐHr$   rY   c              +   óÂ   K  — | j         |ddœ| j        ¥}t          | | j        f||dœ|¤ŽD ]3}t	          |¦  «        }|r|                     |j        |¬¦  «         |V — Œ4d S ©NT)r*   rY   Ústream)rU   rT   )Úchunk)r*   r4   Úcompletion_with_retryr9   r#   Úon_llm_new_tokenr   ©r=   rY   rT   rU   rV   r_   Ústream_respr{   s           r"   Ú_streamzFireworks._stream¬   s­   è è € ð ”ZØØð
ð 
ð Ôð	
ˆõ 1Ø�$”.ð
Ø.9Àð
ð 
ØHNð
ð 
ð 	ð 	ˆKõ 9¸ÑEÔEˆEØð FØ×,Ò,¨U¬Z¸uÐ,ÑEÔEÐEØˆKˆKˆKˆKð	ð 	r$   c                óè   K  — | j         |ddœ| j        ¥}t          | | j        f||dœ|¤Žƒ d {V —†2 3 d {V —†}t	          |¦  «        }|r"|                     |j        |¬¦  «        ƒ d {V —† |W V — Œ@6 d S ry   )r*   r4   Ú acompletion_with_retry_streamingr9   r#   r}   r   r~   s           r"   Ú_astreamzFireworks._astreamÁ   sþ   è è € ð ”ZØØð
ð 
ð Ôð	
ˆõ (HØ�$”.ð(
Ø.9Àð(
ð (
ØHNð(
ð (
ð "
ð "
ð "
ð "
ð "
ð "
ð 	ð 	ð 	ð 	ð 	ð 	ð 	�+õ 9¸ÑEÔEˆEØð LØ!×2Ò2°5´:ÀUÐ2ÑKÔKÐKÐKÐKÐKÐKÐKÐKØˆKˆKˆKˆKˆKð"
ð "
ð "
s   ±A1)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)      st  € € € € € € ð Ðà=€Eˆ3Ð=Ð=Ñ=Ø˜ðð ðñ ô €L�$ð ð ñ ð .2Ð�x 	Ô*Ð1Ð1Ñ1Ø€K�ÐÐÑØ€J�ÐÐÑØ€IˆtÐÐÑàð:˜D  c œNð :ð :ð :ñ „Xð:ð ð 4ð ð ð ñ „[ðð ð2  c¤ð 2ð 2ð 2ñ „[ð2ð ð¨$ð °4ð ð ð ñ „Xðð ð˜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ð& %)Ø:>ð	ð àðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
�/Ô	"ðð ð ð ð0 %)Ø?Cð	ð àðð �t˜C”yÔ!ðð Ð;Ô<ð	ð
 ðð 
�Ô	'ðð ð ð ð ð 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 ©Nr1   )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$   ©rU   Úllmr9   rU   rV   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–   rV   r   c                  ó2   •—  ‰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ð 
ð 
Øð
ð 
ð 	
r$   r1   ©rJ   Ú_create_retry_decoratorr•   r   ©r—   r9   rU   rV   Úretry_decoratorr    rF   s         @r"   r|   r|   ì   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–   rV   r   c               ›   óB   •K  —  ‰j         j        j        di | ¤Žƒ d {V —†S r›   ©rM   r�   ÚacreaterŸ   s    €r"   r    z6acompletion_with_retry.<locals>._completion_with_retry  sO   øè è € à8�YÔ%Ô0Ô8ð 
ð 
Øð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r$   r1   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   NrY   r–   r   c                 ó:   •—  ‰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Ð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    rY   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)rJ   r¢   r•   rˆ   r   r	   )	r—   r9   rU   rV   r¤   r´   r    rF   rY   s	      `  @@@r"   r[   r[     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   NrY   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ÚargsrV   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¸   rV   Únew_loops       r"   Úrun_coroutine_in_new_loopzBacompletion_with_retry_batching.<locals>.run_coroutine_in_new_loopD  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±   rm   )r²   r³   r    rY   rÀ   s     €€€r"   r´   z7acompletion_with_retry_batching.<locals>.batch_sync_runN  s£   øè è € ÝÑ!Ô!ð 	 XÝØ—’Ø-Ø+Ð,­s°6©{¬{Ñ:Øñô ñô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆs   ’6AÁ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Ñ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–   rV   r   c               ›   ó6   •K  —  ‰j         j        j        di | ¤ŽS r›   r§   rŸ   s    €r"   r    z@acompletion_with_retry_streaming.<locals>._completion_with_retryh  s1   øè è € à2ˆyÔÔ*Ô2ð 
ð 
Øð
ð 
ð 	
r$   r1   r¡   r£   s         @r"   r‚   r‚   \  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_typesr7   rU   )	rJ   rM   ÚerrorÚRateLimitErrorÚInternalServerErrorÚBadGatewayErrorÚServiceUnavailableErrorr   r7   )r—   rU   rF   Úerrorss       r"   r¢   r¢   q  sk   € ð ÐÐÐð 	ÔÔÔ-ØÔÔÔ2ØÔÔÔ.ØÔÔÔ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•   r|   r©   r[   re   r‚   r¢   r1   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à 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ð
Øð
àð
ð 
ð 
ð 
ð €Ø
ØØ6ðñ ô ð
qð qð qð qð q�ñ qô qñô ð
qð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$   