
    Ng5                     ~    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d	S )
    )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"dS )!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 }n# t          $ r t          d          w xY w	 ddl}n# t          $ r t          d          w xY w |j        d|d         |d         |d         |d         d	|d
         |d<   |j                            |d                   |d<   |S )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       `/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/ctranslate2.pyvalidate_environmentz CTranslate2.validate_environment6   s   	 	 	 	D  		 	 	 	E  	 1;0 
l+(#//	
 

 )*
 
x +8HH#$
 
{ s    !* Ac                 8    | j         | j        | j        | j        dS )zGet the default parameters.r   r   r   r   r/   selfs    r,   _default_paramszCTranslate2._default_paramsX   s*     /!/!/$($=	
 
 	
    promptsstoprun_managerkwargsc                 <    i  j         |}                     |          d         } fd|D             }  j        j        |fi |}d |D             }	 fd|	D             }
g }|
D ]&}|                    t          |          g           't          |          S )N	input_idsc                 D    g | ]}j                             |          S r$   )r   convert_ids_to_tokens).0encoded_promptr1   s     r,   
<listcomp>z)CTranslate2._generate.<locals>.<listcomp>n   s9     
 
 
 N00@@
 
 
r3   c                 (    g | ]}|j         d          S )r   )sequences_ids)r<   results     r,   r>   z)CTranslate2._generate.<locals>.<listcomp>u   s     CCCV)!,CCCr3   c                 D    g | ]}j                             |          S r$   )r   decode)r<   seqr1   s     r,   r>   z)CTranslate2._generate.<locals>.<listcomp>v   s)    MMMCT^22377MMMr3   )text)generations)r2   r   r   generate_batchappendr
   r   )r1   r4   r5   r6   r7   paramsencoded_promptstokenized_promptsresults	sequencesdecoded_sequencesrF   rE   s   `            r,   	_generatezCTranslate2._generateb   s     4D(3F3 ..11+>
 
 
 
"1
 
 

 -$+,->II&IICC7CCC	MMMM9MMM% 	8 	8D
 5 5 567777[1111r3   c                     dS )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   rO   rQ   r$   r3   r,   r   r   
   s        %%J2NCVFC?*+L%T#Y'+++6/8L%T#s(^+,888 J$M3@M5X"#%###?FCIs).t)D)D)DS#XDDD
 $ 4    XB 
c3h 
 
 
 X
 %):>	2 2c2 tCy!2 67	2
 2 
2 2 2 28 3    X  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>rb      s    3 3 3 3 3 3 3 3 3 3 3 3 3 3 = = = = = = 7 7 7 7 7 7 8 8 8 8 8 8 8 8 ) ) ) ) ) )      w w w w w' w w w w wr3   