
    dh.                     .   S SK r S SKJr  S SKJrJrJrJrJrJ	r	J
r
Jr  S SKJr  S SKJrJr  S SKJrJr  S SKJrJrJr  S SKJrJr  S S	KJr  S S
KJrJr  S\S\4S jr \" SSSS9 " S S\5      5       r!S\"S\\/\4   S\\/\4   4S jr#SS.S\!S\"S\
\   S\S\4
S jjr$SS.S\!S\"S\
\   S\S\4
S jjr%SS.S\!S\"S\
\   S\S\4
S jjr&SS.S\!S\"S\
\   S\S\4
S jjr'SS.S\!S\"S\
\   S\S\4
S  jjr(SS.S\!S\
\\\4      S\\/\4   4S! jjr)g)"    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                     [        U R                  S   R                  [        U R                  S   R                  U R                  S   R
                  S9S9$ )z0Convert a stream response to a generation chunk.r   )finish_reasonlogprobs)textgeneration_info)r   choicesr   dictr   r   )r   s    Z/var/www/html/shao/venv/lib/python3.13/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                   B   \ rS rSr% SrSr\\S'   \" S S9r	\
\S'   Sr\\   \S	'   S
r\\S'   S
r\\S'   Sr\\S'   \S\\\4   4S j5       r\S\4S j5       r\S\\   4S j5       r\S\S\4S j5       r\S\4S j5       r  S#S\\   S\\\      S\\   S\S\4
S jjr   S#S\\   S\\\      S\\!   S\S\4
S jjr"S\\   S\\\      4S jr#S\S\\   S\4S jr$  S#S\S\\\      S\\   S\S\%\&   4
S  jjr'  S#S\S\\\      S\\!   S\S\(\&   4
S! jjr)S"r*g)$	Fireworks   zFireworks models.z*accounts/fireworks/models/llama-v2-7b-chatmodelc                  *    SSSS.R                  5       $ )Ngffffff?i      )temperature
max_tokenstop_p)copy r$   r"   <lambda>Fireworks.<lambda>(   s    !
 $&	!r$   )default_factorymodel_kwargsNfireworks_api_key   max_retries
batch_sizeT	use_retryr   c                 
    SS0$ )Nr7   FIREWORKS_API_KEYr2   selfs    r"   
lc_secretsFireworks.lc_secrets3   s    #%899r$   c                     g)NTr2   clss    r"   is_lc_serializableFireworks.is_lc_serializable7   s    r$   c                 
    / SQ$ )z*Get the namespace of the langchain object.)	langchainllms	fireworksr2   rC   s    r"   get_lc_namespaceFireworks.get_lc_namespace;   s
     21r$   valuesc                      SSK n[        [        USS5      5      nUR	                  5       UR
                  l        U$ ! [         a  n[        S5      UeSnAff = f)z%Validate that api key in environment.r   Nz`Could not import fireworks-ai python package. Please install it with `pip install fireworks-ai`.r7   r=   )fireworks.clientImportErrorr   r   get_secret_valueclientapi_key)rD   rM   rJ   er7   s        r"   validate_environmentFireworks.validate_environment@   sm    	# 2 )<>QR
 $5#E#E#G	   	E 	s   = 
AAAc                     g)zReturn type of llm.rJ   r2   r>   s    r"   	_llm_typeFireworks._llm_typeP   s     r$   promptsstoprun_managerkwargsc                     SU R                   0U R                  EnU R                  U5      n/ nU H/  n[        U U R                  4UUUS.UD6n	UR                  U	5        M1     U R                  Xq5      $ )zCall 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+   promptr\   r[   )r+   r6   get_batch_promptscompletion_with_retry_batchingr;   extendcreate_llm_result
r?   rZ   r[   r\   r]   paramssub_promptsr    _promptsresponses
             r"   	_generateFireworks._generateU   s     TZZ

 ,,W5#H5  ' H NN8$ $ %%g77r$   c                   #    SU R                   0U R                  EnU R                  U5      n/ nU H7  n[        U U R                  4UUUS.UD6I Sh  vN n	UR                  U	5        M9     U R                  Xq5      $  N*7f)z;Call out to Fireworks endpoint async with k unique prompts.r+   r_   N)r+   r6   ra   acompletion_with_retry_batchingr;   rc   rd   re   s
             r"   
_agenerateFireworks._ageneratev   s      TZZ

 ,,W5#H<  '  H NN8$ $ %%g77s   AB A>+B c                     [        S[        U5      U R                  5       Vs/ sH  nXX R                  -    PM     nnU$ s  snf )z!Get the sub prompts for llm call.r   )rangelenr:   )r?   rZ   irg   s       r"   ra   Fireworks.get_batch_prompts   sN     1c'lDOO<
< OO+,< 	 
 	
s   A r    c           
          / n[        U5       HN  u  pEXUS-    nUR                  U Vs/ sH&  n[        UR                  S   S   R                  S9PM(     sn5        MP     SU R
                  0n[        X8S9$ s  snf )z2Create the LLMResult from the choices and prompts.r-   r    r   )r   r+   )generations
llm_output)	enumerateappendr   __dict__r   r+   r   )	r?   r    rZ   rv   rs   _sub_choiceschoicerw   s	            r"   rd   Fireworks.create_llm_result   s    g&DA!q1u.K
 #.	 #. #__Y7:?? #.	 ' tzz*
[HHs   ,A7
r`   c              +      #    U R                   USS.U R                  En[        X R                  4X2S.UD6 H3  n[	        U5      nU(       a  UR                  UR                  US9  Uv   M5     g 7fNT)r+   r`   stream)r\   r[   )chunk)r+   r6   completion_with_retryr;   r#   on_llm_new_tokenr   r?   r`   r[   r\   r]   rf   stream_respr   s           r"   _streamFireworks._stream   s~      ZZ
 	
 1..
.9
HN
K 9EE,,UZZu,EK
s   A-A/c                  #    U R                   USS.U R                  En[        X R                  4X2S.UD6I S h  vN   S h  vN n[	        U5      nU(       a"  UR                  UR                  US9I S h  vN   U7v   MD   NH NA N
 g 7fr   )r+   r6    acompletion_with_retry_streamingr;   r#   r   r   r   s           r"   _astreamFireworks._astream   s      ZZ
 	
 (H..(
.9(
HN(
 "
 "
 	+ 9EE!225::U2KKKK"
 	
 L"
sD   8BBBB	BB	0B7B8BB	B	Br2   )NN)+__name__
__module____qualname____firstlineno____doc__r+   str__annotations__r   r6   r!   r7   r
   r   r9   intr:   r;   boolpropertyr   r@   classmethodrE   r	   rK   r   rU   rX   r   r   r   rj   r   rn   ra   rd   r   r   r   r   r   __static_attributes__r2   r$   r"   r)   r)      s|    =E3=L$  .2x	*1KJIt:DcN : : 4   2c 2 2 $ 4   3   %):>	8c8 tCy!8 67	8
 8 
8H %)?C	8c8 tCy!8 ;<	8
 8 
86	c	 
d3i	I ItCy IY I& %):>	 tCy! 67	
  
/	"0 %)?C	 tCy! ;<	
  
	' r$   r)   	condition	decoratorc                 l   ^ ^ S[         [        /[        4   S[         [        /[        4   4U U4S jjnU$ )zConditionally apply a decorator.

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

Returns:
    A decorator function.
funcr   c                 &   > T(       a  T" U 5      $ U $ Nr2   )r   r   r   s    r"   actual_decorator/conditional_decorator.<locals>.actual_decorator   s    T?"r$   )r   r   )r   r   r   s   `` r"   conditional_decoratorr      s9    xs
3 #8L  
 r$   r\   llmr;   r\   r]   c                r   ^ SSK m[        XS9n[        X5      S[        S[        4U4S jj5       nU" S0 UD6$ )*Use tenacity to retry the completion call.r   Nr   r]   r   c                  P   > TR                   R                  R                  " S0 U D6$ Nr2   rR   
Completioncreater]   rJ   s    r"   _completion_with_retry5completion_with_retry.<locals>._completion_with_retry   s*    **11 

 	
r$   r2   rO   _create_retry_decoratorr   r   r   r;   r\   r]   retry_decoratorr   rJ   s         @r"   r   r      sG     -cKO96
 
 
 7

 "+F++r$   c                   ^#    SSK m[        XS9n[        X5      S[        S[        4U4S jj5       nU" S0 UD6I Sh  vN $  N7f)r   r   Nr   r]   r   c                  l   >#    TR                   R                  R                  " S0 U D6I S h  vN $  N7fr   rR   r   acreater   s    r"   r   6acompletion_with_retry.<locals>._completion_with_retry  s7     %%0088 

 
 	
 
s   *424r2   r   r   s         @r"   acompletion_with_retryr     P      -cKO96
s 
s 
 7

 (1&1111   ;AAAc                   ^^^^ SSK mTS   mTS	 [        XS9n[        X5      S[        S[        4UU4S jj5       mS[
        4UU4S jjnU" 5       $ )r   r   Nr`   r   r   c                 X   > TR                   R                  R                  " S0 TDSU 0D6$ Nr`   r2   r   r`   rJ   r]   s    r"   r   >completion_with_retry_batching.<locals>._completion_with_retry%  s(    **11JFJ6JJr$   c                     > [        5        n [        U R                  TT5      5      nS S S 5        U$ ! , (       d  f       W$ = fr   )r   listmap)executorresultsr   r`   s     r"   batch_sync_run6completion_with_retry_batching.<locals>.batch_sync_run)  s9    !X8<<(>GHG " "!s	   2
A)rO   r   r   r   r   r	   )	r   r;   r\   r]   r   r   r   rJ   r`   s	      `  @@@r"   rb   rb     si     HFx-cKO96Ks Ks K 7KD  
 r$   c                   ^^^^^	#    SSK mTS   mTS	 [        XS9n[        X5      S[        S[        4UU4S jj5       mS[        S[
        S	[
        S[        4S
 jm	S[        4UUU	4S jjnU" 5       I Sh  vN $  N7f)r   r   Nr`   r   r   c                 t   >#    TR                   R                  R                  " S0 TDSU 0D6I S h  vN $  N7fr   r   r   s    r"   r   ?acompletion_with_retry_batching.<locals>._completion_with_retry@  s1     %%0088Q6Q&QQQQs   .868coroutine_funcargsr]   c                     [         R                  " 5       n [         R                  " U5        UR                  U " U0 UD65      UR	                  5         $ ! UR	                  5         f = fr   )asyncionew_event_loopset_event_looprun_until_completeclose)r   r   r]   new_loops       r"   run_coroutine_in_new_loopBacompletion_with_retry_batching.<locals>.run_coroutine_in_new_loopD  sR     ))+	""8,..~t/Nv/NONNHNNs   ,A A&c            
         >#    [        5        n [        U R                  TT/[        T5      -  T5      5      nS S S 5        U$ ! , (       d  f       W$ = f7fr   )r   r   r   rr   )r   r   r   r`   r   s     r"   r   7acompletion_with_retry_batching.<locals>.batch_sync_runN  sT     !X-+,s6{:G "  "! s   A*A
A
AA)rO   r   r   r   r   r   r	   )
r   r;   r\   r]   r   r   r   rJ   r`   r   s
      `  @@@@r"   rm   rm   1  s      HFx-cKO96RS RS R 7R$(48		$ 	 	  !!!!s   A0A>7A<8A>c                   ^#    SSK m[        XS9n[        X5      S[        S[        4U4S jj5       nU" S0 UD6I Sh  vN $  N7f)z8Use tenacity to retry the completion call for streaming.r   Nr   r]   r   c                  X   >#    TR                   R                  R                  " S0 U D6$ 7fr   r   r   s    r"   r   @acompletion_with_retry_streaming.<locals>._completion_with_retryh  s-     **22 

 	
s   '*r2   r   r   s         @r"   r   r   \  r   r   c                .   SSK nUR                  R                  R                  UR                  R                  R                  UR                  R                  R
                  UR                  R                  R                  /n[        X0R                  US9$ )zDefine retry mechanism.r   N)error_typesr9   r\   )	rO   rR   errorRateLimitErrorInternalServerErrorBadGatewayErrorServiceUnavailableErrorr   r9   )r   r\   rJ   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   r   r   rb   rm   r   r   r2   r$   r"   <module>r      s%    1 V V V 6 U I I @ 9 %


 
6
q q
qh (# 4seSj2 7;	,	,, 23	,
 , 	,2 <@	2	22 78	2
 2 	22 7;		 23	
  	> <@	("	("(" 78	("
 (" 	("^ <@	2	22 78	2
 2 	24 		 +-EEF seSjr$   