
    Ng.                     f   d dl mZ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 d dlmZ d dlmZmZmZmZmZmZmZmZmZ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 d
l(m)Z)m*Z*m+Z+ d dl,m-Z- dedee         defdZ.dedefdZ/ eddd           G d de                      Z0de1deegef         deegef         fdZ2ddde0de1dee         dedef
d Z3ddde0de1dee         dedef
d!Z4ddde0de1dee         dedef
d"Z5	 d$de0dee	eef                  deegef         fd#Z6dS )%    )	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                    | j         }| j        pd}i }|dk    s|t          k    rt          |          S |dk    s|t          k    rt          ||          S |dk    s|t          k    rt	          |          S |dk    s|t
          k    rt          || j                  S |s|t          k    rt          ||	          S  ||          S )
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        e/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/chat_models/fireworks.py_convert_delta_to_message_chunkr9   *   s     :Dm!rG v~~*;;; 1111			 ? ?gARSSSS			].@@@!'2222			}0DDD#G%*EEEE	 ."222d;;;;}W----    c                    | j         }| j        pd}|dk    rt          |          S |dk    r| j        }i }t          ||          S |dk    rt	          |          S |dk    rt          || j                  S t          ||	          S )
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m!rGv~~G,,,,			-"$<MNNNN			W----			wUZ@@@@76666r:   z0.0.26z1.0z!langchain_fireworks.ChatFireworks)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<   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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e	                  de	fdZ"dedefdZ#dee         deeeef                  fd Z$	 	 d#dee         deee                  dee         dede%e&         f
d!Z'	 	 d#dee         deee                  dee          dede(e&         f
d"Z)dS )$ChatFireworkszFireworks Chat 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:   r8   <lambda>zChatFireworks.<lambda>\   s%    !
 !
 $&&	 r:   )default_factorymodel_kwargsNfireworks_api_key   max_retriesT	use_retryr)   c                 
    ddiS )NrM   FIREWORKS_API_KEYrI   selfs    r8   
lc_secretszChatFireworks.lc_secretsf   s    #%899r:   c                     dS )NTrI   clss    r8   is_lc_serializablez ChatFireworks.is_lc_serializablej   s    tr:   c                 
    g dS )z*Get the namespace of the langchain object.)	langchainchat_models	fireworksrI   rW   s    r8   get_lc_namespacezChatFireworks.get_lc_namespacen   s     9888r:   before)mode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`.rM   rR   )fireworks.clientImportErrorr    r!   get_secret_valueclientapi_key)rX   ra   r]   erM   s        r8   validate_environmentz"ChatFireworks.validate_environments   s    	##### 	 	 	E  	
 2 )<>QRR
 
 $5#E#E#G#G	 s    
&!&c                     dS )zReturn type of llm.zfireworks-chatrI   rS   s    r8   	_llm_typezChatFireworks._llm_type   s
      r:   messagesstoprun_managerkwargsc                     |                      |          }| j        |d| j        |}t          | | j        f||d|}|                     |          S N)rB   rl   rn   rm   )_create_message_dictsrB   rL   completion_with_retryrP   _create_chat_resultrT   rl   rm   rn   ro   message_dictsparamsresponses           r8   	_generatezChatFireworks._generate   s     228<< Z%
 
 
 	
 )N
 $	
 

 
 
 ''111r:   c                    K   |                      |          }| j        |d| j        |}t          | | j        f||d| d {V }|                     |          S rq   )rs   rB   rL   acompletion_with_retryrP   ru   rv   s           r8   
_ageneratezChatFireworks._agenerate   s       228<<Z%
 
 
 	
 0$.
.9
 
HN
 
 
 
 
 
 
 
 ''111r:   llm_outputsc                 &    |d         i S |d         S )Nr   rI   )rT   r~   s     r8   _combine_llm_outputsz"ChatFireworks._combine_llm_outputs   s    q>!I1~r:   ry   c                     g }|j         D ]O}t          |j                  }t          |t	          |j                            }|                    |           Pd| j        i}t          ||          S )Nfinish_reasonmessagegeneration_inforB   )generations
llm_output)	choicesr<   r   r   dictr   appendrB   r   )rT   ry   r   resr   genr   s          r8   ru   z!ChatFireworks._create_chat_result   s    # 	$ 	$C-ck::G  $33D E E E  C s####tz*
kjIIIIr:   c                     d |D             }|S )Nc                 ,    g | ]}t          |          S rI   r%   ).0ms     r8   
<listcomp>z7ChatFireworks._create_message_dicts.<locals>.<listcomp>   s!    FFF033FFFr:   rI   )rT   rl   rw   s      r8   rs   z#ChatFireworks._create_message_dicts   s     GFXFFFr:   c              +     K   |                      |          }t          }| j        |dd| j        |}t	          | | j        f||d|D ]y}|j        d         }	t          |	j        |          }|	j	        }
|
t          |
          nd }|j        }t          ||          }|r|                    |j        |           |V  zd S )NTrB   rl   streamrr   r   r   r   )chunk)rs   r   rB   rL   rt   rP   r   r9   deltar   r   	__class__r   on_llm_new_tokentextrT   rl   rm   rn   ro   rw   default_chunk_classrx   r   choicer   r   cg_chunks                r8   _streamzChatFireworks._stream   s,      228<<,Z%
 
 	

 
 +$.
.9
 
HN
 
 	 	E ]1%F3FLBUVVE"0M5B5N=1111TX  #(/*  H  L,,X](,KKKNNNN	 	r:   c                  K   |                      |          }t          }| j        |dd| j        |}t	          | | j        f||d| d {V 2 3 d {V }|j        d         }	t          |	j        |          }|	j	        }
|
t          |
          nd }|j        }t          ||          }|r"|                    |j        |           d {V  |W V  6 d S )NTr   rr   r   r   r   )tokenr   )rs   r   rB   rL    acompletion_with_retry_streamingrP   r   r9   r   r   r   r   r   r   r   r   s                r8   _astreamzChatFireworks._astream   s}      228<<,Z%
 
 	

 
 "B$."
.9"
 "
HN"
 "
 
 
 
 
 
 
 	 	 	 	 	 	 	% ]1%F3FLBUVVE"0M5B5N=1111TX  #(/*  H  U!2282TTTTTTTTTNNNNN
 
 
s   C)NN)*__name__
__module____qualname____doc__rB   str__annotations__r"   rL   r   rM   r	   r#   rO   intrP   boolpropertyr   rU   classmethodrY   r   r^   r$   r   ri   rk   r   r   r   rz   r   r}   r   ru   rs   r   r   r   r   r   rI   r:   r8   rA   rA   R   s         ! =E3===   L$    .2x	*111KIt:DcN : : : X: 4    [ 9c 9 9 9 [9 _(###$ 3    [ $#  3       X  %):>	2 2{#2 tCy!2 67	2
 2 
2 2 2 26 %)?C	2 2{#2 tCy!2 ;<	2
 2 
2 2 2 2&Xd^0D     

JC 
JJ 
J 
J 
J 
J[)	d38n	    %):>	 {# tCy! 67	
  
%	&   H %)?C	 {# tCy! ;<	
  
*	+     r:   rA   	condition	decoratorc                      dt           t          gt          f         dt           t          gt          f         f fd}|S )zDefine conditional decorator.

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

    Returns:
        The decorated function.
    funcr)   c                 "    r |           S | S NrI   )r   r   r   s    r8   actual_decoratorz/conditional_decorator.<locals>.actual_decorator  s     	#9T??"r:   )r   r   )r   r   r   s   `` r8   conditional_decoratorr     sS    xs
3 #8L       
 r:   Nrn   llmrP   rn   ro   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   ro   r)   c                  2     j         j        j        di | S )r   rI   )rf   ChatCompletioncreatero   r]   s    r8   _completion_with_retryz5completion_with_retry.<locals>._completion_with_retry/  s/     6y.5 
 

 
 	
r:   rI   rc   _create_retry_decoratorr   r   r   rP   rn   ro   retry_decoratorr   r]   s         @r8   rt   rt   #  s}     -c{KKKO9o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 )z0Use tenacity to retry the async completion call.r   Nr   ro   r)   c                  B   K    j         j        j        di |  d {V S NrI   rf   r   acreater   s    r8   r   z6acompletion_with_retry.<locals>._completion_with_retryE  sO      <Y%4< 
 

 
 
 
 
 
 
 
 	
r:   rI   r   r   s         @r8   r|   r|   9         -c{KKKO9o66
s 
s 
 
 
 
 
 76

 ('11&111111111r:   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   ro   r)   c                  6   K    j         j        j        di | S r   r   r   s    r8   r   z@acompletion_with_retry_streaming.<locals>._completion_with_retryZ  s1      6y.6 
 

 
 	
r:   rI   r   r   s         @r8   r   r   N  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_typesrO   rn   )	rc   rf   errorRateLimitErrorInternalServerErrorBadGatewayErrorServiceUnavailableErrorr   rO   )r   rn   r]   errorss       r8   r   r   c  sk      	-2.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   rt   r|   r   r   rI   r:   r8   <module>r      s1  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 7 6 6 6 6 6        E D D D D D K K K K K K                            S R R R R R R R R R 6 6 6 6 6 6 9 9 9 9 9 9 6 6 6 6 6 6 6 6 6 6 G G G G G G..#$45.. . . .,73 7; 7 7 7 7$ 
:  
t t t t tM t t 
tn (# 4seSj   2 7;	, , ,	,, 23	,
 , 	, , , ,4 <@	2 2 2	22 78	2
 2 	2 2 2 22 <@	2 2 2	22 78	2
 2 	2 2 2 22 		 	+-EEF
 seSj     r:   