a
    bg5                     @   sp   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 de	Zd	S )
    )AnyDictListOptionalUnion)CallbackManagerForLLMRun)BaseLLM)
Generation	LLMResult)pre_init)Fieldc                   @   s4  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dZeeef ed< eeedddZeeeef dddZd!ee eee  ee ee dddZ!eedd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                 C   s   zddl }W n ty&   tdY n0 zddl}W n tyN   tdY n0 |jf |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	GeneratorZAutoTokenizerZfrom_pretrained)clsr   r!   r#    r&   r/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/llms/ctranslate2.pyvalidate_environment6   s0    


z CTranslate2.validate_environment)r    c                 C   s   | j | j| j| jdS )zGet the default parameters.r   r   r   r   r)   selfr&   r&   r'   _default_paramsX   s
    zCTranslate2._default_params)promptsstoprun_managerkwargsr    c                    s   i  j |} |d } fdd|D } jj|fi |}dd |D }	 fdd|	D }
g }|
D ]}|t|dg qjt|dS )NZ	input_idsc                    s   g | ]} j |qS r&   )r   Zconvert_ids_to_tokens).0Zencoded_promptr*   r&   r'   
<listcomp>n   s   z)CTranslate2._generate.<locals>.<listcomp>c                 S   s   g | ]}|j d  qS )r   )Zsequences_ids)r1   resultr&   r&   r'   r2   u       c                    s   g | ]} j |qS r&   )r   decode)r1   seqr*   r&   r'   r2   v   r4   )text)generations)r,   r   r   Zgenerate_batchappendr	   r
   )r+   r-   r.   r/   r0   paramsZencoded_promptsZtokenized_promptsresults	sequencesZdecoded_sequencesr8   r7   r&   r*   r'   	_generateb   s    
zCTranslate2._generatec                 C   s   dS )zReturn type of llm.r!   r&   r*   r&   r&   r'   	_llm_type~   s    zCTranslate2._llm_type)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(   propertyr,   r   r   r
   r=   r>   r&   r&   r&   r'   r   
   s8   
!  
r   N)typingr   r   r   r   r   Zlangchain_core.callbacksr   Z#langchain_core.language_models.llmsr   Zlangchain_core.outputsr	   r
   Zlangchain_core.utilsr   Zpydanticr   r   r&   r&   r&   r'   <module>   s   