
    7|h5                     v    d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ  G d de	      Zy	)
    )AnyDictListOptionalUnion)CallbackManagerForLLMRun)BaseLLM)
Generation	LLMResult)pre_init)Fieldc                      e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   	 dZ	e
eee   f   ed<   	 d	Ze
eeeef   f   ed
<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   dZeed<    ee      Zeeef   ed<   	 ededefd       Zedeeef   fd       Z	 	 d dee   deee      dee   dede f
dZ!edefd       Z"y)!CTranslate2zCTranslate2 language model. 
model_pathtokenizer_namecpudevicer   device_indexdefaultcompute_typei   
max_length   sampling_topksampling_toppsampling_temperatureNclient	tokenizer)default_factoryctranslate2_kwargsvaluesreturnc                    	 ddl }	 ddl} |j                  d|d   |d   |d   |d   d	|d
   |d<   |j                  j                  |d         |d<   |S # t        $ r t        d      w xY w# t        $ r t        d      w xY w)z3Validate that python package exists in environment.r   Nz^Could not import ctranslate2 python package. Please install it with `pip install ctranslate2`.z`Could not import transformers python package. Please install it with `pip install transformers`.r   r   r   r   )r   r   r   r   r    r   r   r    )ctranslate2ImportErrortransformers	GeneratorAutoTokenizerfrom_pretrained)clsr!   r%   r'   s       c/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/ctranslate2.pyvalidate_environmentz CTranslate2.validate_environment6   s    		 1;00 
l+(#//	

 )*
x +88HH#$
{ 5  	D 	  	E 	s   A A/ A,/Bc                 `    | j                   | j                  | j                  | j                  dS )zGet the default parameters.r   r   r   r   r/   selfs    r,   _default_paramszCTranslate2._default_paramsX   s0     //!//!//$($=$=	
 	
    promptsstoprun_managerkwargsc                    i | j                   |}| j                  |      d   }|D cg c]  }| j                  j                  |       }} | j                  j                  |fi |}	|	D 
cg c]  }
|
j
                  d    }}
|D cg c]  }| j                  j                  |       }}g }|D ]  }|j                  t        |      g         t        |      S c c}w c c}
w c c}w )N	input_idsr   )text)generations)
r2   r   convert_ids_to_tokensr   generate_batchsequences_idsdecodeappendr
   r   )r1   r4   r5   r6   r7   paramsencoded_promptsencoded_prompttokenized_promptsresultsresult	sequencesseqdecoded_sequencesr;   r:   s                   r,   	_generatezCTranslate2._generateb   s    4D((3F3 ..1+> #2
 NN00@
 

 -$++,,->I&I;BCV))!,C	CCLMCT^^2237MM% 	8D
 567	8 [11
 DMs   "C.C$
"C)c                      y)zReturn type of llm.r%   r$   r0   s    r,   	_llm_typezCTranslate2._llm_type~   s     r3   )NN)#__name__
__module____qualname____doc__r   str__annotations__r   r   r   r   intr   r   r   r   r   r   floatr   r   r   r   r   dictr    r   r-   propertyr2   r   r   r   rJ   rL   r$   r3   r,   r   r   
   s   %J2NCVFC?*+L%T#Y'+6/8L%T#s(^+,8 J$M3@M5X"#%#?FCIs).t)DS#XD
 $ 4  B 
c3h 
 
 %):>	2c2 tCy!2 67	2
 2 
28 3  r3   r   N)typingr   r   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.outputsr
   r   langchain_core.utilsr   pydanticr   r   r$   r3   r,   <module>r]      s(    3 3 = 7 8 ) w' wr3   