
    dh.                     ,   S SK Jr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  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJr  S SK J!r!J"r"J#r#  S SK$J%r%  S S	K&J'r'  S S
K(J)r)J*r*J+r+  S SK,J-r-  S\S\\   S\4S jr.S\S\4S jr/\" SSSS9 " S S\5      5       r0S\1S\\/\4   S\\/\4   4S jr2SS.S\0S\1S\\   S\S\4
S  jjr3SS.S\0S\1S\\   S\S\4
S! jjr4SS.S\0S\1S\\   S\S\4
S" jjr5 S$S\0S\\	\\4      S\\/\4   4S# jjr6g)%    )	AnyAsyncIteratorCallableDictIteratorListOptionalTypeUnion)
deprecated)AsyncCallbackManagerForLLMRunCallbackManagerForLLMRun)BaseChatModel)create_base_retry_decorator)	AIMessageAIMessageChunkBaseMessageBaseMessageChunkChatMessageChatMessageChunkFunctionMessageFunctionMessageChunkHumanMessageHumanMessageChunkSystemMessageSystemMessageChunk)ChatGenerationChatGenerationChunk
ChatResult)convert_to_secret_str)get_from_dict_or_env)Field	SecretStrmodel_validatorconvert_message_to_dict_dictdefault_classreturnc                 d   U R                   nU R                  =(       d    Sn0 nUS:X  d
  U[        :X  a	  [        US9$ US:X  d
  U[        :X  a	  [        X4S9$ US:X  d
  U[        :X  a	  [	        US9$ US:X  d
  U[
        :X  a  [        X0R                  S9$ U(       d
  U[        :X  a	  [        X2S	9$ U" US9$ )
z,Convert a delta response to a message chunk. usercontent	assistantr.   additional_kwargssystemfunctionr.   namer.   role)r7   r.   r   r   r   r   r5   r   )r'   r(   r7   r.   r1   s        a/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/chat_models/fireworks.py_convert_delta_to_message_chunkr9   *   s     ::Dmm!rG v~*;; 11		 ?gSS		].@@!'22		}0DD#G**EE	"22;;W--    c                     U R                   nU R                  =(       d    SnUS:X  a	  [        US9$ US:X  a  U R                  n0 n[        X#S9$ US:X  a	  [	        US9$ US:X  a  [        X R                  S9$ [        X!S	9$ )
z%Convert a dict response to a message.r+   r,   r-   r/   r0   r2   r3   r4   r6   )r7   r.   r   r   r   r   r5   r   )r'   r7   r.   r1   s       r8   convert_dict_to_messager<   @   s    ::Dmm!rGv~G,,		--"$NN		W--		wZZ@@766r:   z0.0.26z1.0z!langchain_fireworks.ChatFireworks)sinceremovalalternative_importc                   j   \ 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\\\4   4S j5       r\S\4S j5       r\S\\   4S j5       r\" SS9\S\S\4S j5       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\4S  jr$S\\   S\\\\4      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)&ChatFireworksR   zFireworks Chat 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:   r8   <lambda>ChatFireworks.<lambda>\   s    !
 $&	!r:   )default_factorymodel_kwargsNfireworks_api_key   max_retriesT	use_retryr)   c                 
    SS0$ )NrO   FIREWORKS_API_KEYrJ   selfs    r8   
lc_secretsChatFireworks.lc_secretsf   s    #%899r:   c                     g)NTrJ   clss    r8   is_lc_serializable ChatFireworks.is_lc_serializablej   s    r:   c                 
    / SQ$ )z*Get the namespace of the langchain object.)	langchainchat_models	fireworksrJ   rZ   s    r8   get_lc_namespaceChatFireworks.get_lc_namespacen   s
     98r:   before)mode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`.rO   rT   )fireworks.clientImportErrorr    r!   get_secret_valueclientapi_key)r[   rf   ra   erO   s        r8   validate_environment"ChatFireworks.validate_environments   sm    	# 2 )<>QR
 $5#E#E#G	   	E 	s   = 
AAAc                     g)zReturn type of llm.zfireworks-chatrJ   rU   s    r8   	_llm_typeChatFireworks._llm_type   s      r:   messagesstoprun_managerkwargsc                     U R                  U5      nU R                  US.U R                  EUEn[        U U R                  4UUS.UD6nU R                  U5      $ N)rC   rs   ru   rt   )_create_message_dictsrC   rN   completion_with_retryrR   _create_chat_resultrV   rs   rt   ru   rv   message_dictsparamsresponses           r8   	_generateChatFireworks._generate   s     228< ZZ%
 
 	
 )NN
 $	

 
 ''11r:   c                    #    U R                  U5      nU R                  US.U R                  EUEn[        X R                  4X2S.UD6I S h  vN nU R                  U5      $  N7frx   )rz   rC   rN   acompletion_with_retryrR   r|   r}   s           r8   
_agenerateChatFireworks._agenerate   s      228<ZZ%
 
 	
 0..
.9
HN
 
 ''11
s   A
A$A"A$llm_outputsc                     US   c  0 $ US   $ )Nr   rJ   )rV   r   s     r8   _combine_llm_outputs"ChatFireworks._combine_llm_outputs   s    q>!I1~r:   r   c                     / nUR                    HD  n[        UR                  5      n[        U[	        UR
                  S9S9nUR                  U5        MF     SU R                  0n[        X&S9$ )Nfinish_reasonmessagegeneration_inforC   )generations
llm_output)	choicesr<   r   r   dictr   appendrC   r   )rV   r   r   resr   genr   s          r8   r|   !ChatFireworks._create_chat_result   sk    ##C-ckk:G  $33D3D EC s# $ tzz*
kIIr:   c                 D    U Vs/ sH  n[        U5      PM     nnU$ s  snf Nr%   )rV   rs   mr~   s       r8   rz   #ChatFireworks._create_message_dicts   s+     >FFX03XF Gs   c              +     #    U R                  U5      n[        nU R                  USS.U R                  EUEn[	        X R
                  4X2S.UD6 H|  nUR                  S   n	[        U	R                  U5      nU	R                  n
U
b	  [        U
S9OS nUR                  n[        XS9nU(       a  UR                  UR                  US9  Uv   M~     g 7f)NTrC   rs   streamry   r   r   r   )chunk)rz   r   rC   rN   r{   rR   r   r9   deltar   r   	__class__r   on_llm_new_tokentextrV   rs   rt   ru   rv   r~   default_chunk_classr   r   choicer   r   cg_chunks                r8   _streamChatFireworks._stream   s      228<,ZZ%
 	

 
 +..
.9
HN
E ]]1%F3FLLBUVE"00M5B5N=1TX  #(//*H ,,X]](,KN
s   CCc                  #    U R                  U5      n[        nU R                  USS.U R                  EUEn[	        X R
                  4X2S.UD6I S h  vN   S h  vN nUR                  S   n	[        U	R                  U5      nU	R                  n
U
b	  [        U
S9OS nUR                  n[        XS9nU(       a"  UR                  UR                  US9I S h  vN   U7v   M   N N N
 g 7f)NTr   ry   r   r   r   )tokenr   )rz   r   rC   rN    acompletion_with_retry_streamingrR   r   r9   r   r   r   r   r   r   r   r   s                r8   _astreamChatFireworks._astream   s     228<,ZZ%
 	

 
 "B.."
.9"
HN"
 
 
 	% ]]1%F3FLLBUVE"00M5B5N=1TX  #(//*H !2282TTTN
 	 U
sI   AC-C%C-C+C'C+ A9C-C)C-'C+)C-+C-rJ   )NN),__name__
__module____qualname____firstlineno____doc__rC   str__annotations__r"   rN   r   rO   r	   r#   rQ   intrR   boolpropertyr   rW   classmethodr\   r   rb   r$   r   rn   rq   r   r   r   r   r   r   r   r|   rz   r   r   r   r   r   __static_attributes__rJ   r:   r8   rA   rA   R   s    !=E3=L$  .2x	*1KIt:DcN : : 4   9c 9 9 (#$ 3   $  3     %):>	2{#2 tCy!2 67	2
 2 
26 %)?C	2{#2 tCy!2 ;<	2
 2 
2&Xd^0D  

JC 
JJ 
J[)	d38n	 %):>	{# tCy! 67	
  
%	&H %)?C	{# tCy! ;<	
  
*	+ r:   rA   	condition	decoratorc                 l   ^ ^ S[         [        /[        4   S[         [        /[        4   4U U4S jjnU$ )zDefine conditional decorator.

Args:
    condition: The condition.
    decorator: The decorator.

Returns:
    The decorated function.
funcr)   c                 &   > T(       a  T" U 5      $ U $ r   rJ   )r   r   r   s    r8   actual_decorator/conditional_decorator.<locals>.actual_decorator  s    T?"r:   )r   r   )r   r   r   s   `` r8   conditional_decoratorr     s9    xs
3 #8L  
 r:   Nru   llmrR   ru   rv   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   rv   r)   c                  P   > TR                   R                  R                  " S0 U D6$ )r   rJ   )rk   ChatCompletioncreaterv   ra   s    r8   _completion_with_retry5completion_with_retry.<locals>._completion_with_retry/  s,     ..55 

 	
r:   rJ   rh   _create_retry_decoratorr   r   r   rR   ru   rv   retry_decoratorr   ra   s         @r8   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)z0Use tenacity to retry the async completion call.r   Nr   rv   r)   c                  l   >#    TR                   R                  R                  " S0 U D6I S h  vN $  N7fNrJ   rk   r   acreater   s    r8   r   6acompletion_with_retry.<locals>._completion_with_retryE  s7     %%44<< 

 
 	
 
s   *424rJ   r   r   s         @r8   r   r   9  P      -cKO96
s 
s 
 7

 (1&1111   ;AA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   rv   r)   c                  X   >#    TR                   R                  R                  " S0 U D6$ 7fr   r   r   s    r8   r   @acompletion_with_retry_streaming.<locals>._completion_with_retryZ  s-     ..66 

 	
s   '*rJ   r   r   s         @r8   r   r   N  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_typesrQ   ru   )	rh   rk   errorRateLimitErrorInternalServerErrorBadGatewayErrorServiceUnavailableErrorr   rQ   )r   ru   ra   errorss       r8   r   r   c  s|      	--22..66	F '[ r:   r   )7typingr   r   r   r   r   r   r	   r
   r   langchain_core._api.deprecationr   langchain_core.callbacksr   r   *langchain_core.language_models.chat_modelsr   #langchain_core.language_models.llmsr   langchain_core.messagesr   r   r   r   r   r   r   r   r   r   r   r   langchain_core.outputsr   r   r   langchain_core.utilsr    langchain_core.utils.envr!   pydanticr"   r#   r$   #langchain_community.adapters.openair&   r9   r<   rA   r   r   r{   r   r   r   rJ   r:   r8   <module>r      s  
 
 
 7 E K    S R 6 9 6 6 G..#$45..,73 7; 7$ 
:
tM t
tn (# 4seSj2 7;	,	,, 23	,
 , 	,4 <@	2	22 78	2
 2 	22 <@	2	22 78	2
 2 	22 			+-EEF
 seSjr:   