o
    ưi                     @   sH   d dl Z d dlmZ d dlZd dlmZ d dlmZ G dd deZdS )    N)Optional)OpenAITextCompletionConfig)GenericStreamingChunkc                       s$  e Zd ZU dZdZee ed< dZee	 ed< dZ
ee	 ed< dZee	 ed< dZee ed< dZee	 ed< 								ddee dee	 d	ee dee	 dee	 dee dee	 d
ee ddfddZe fddZdefddZdededededef
ddZdedefddZ  ZS )CodestralTextCompletionConfigzO
    Reference: https://docs.mistral.ai/api/#operation/createFIMCompletion
    Nsuffixtemperature
max_tokens
min_tokensstreamrandom_seedtop_pstopreturnc	                 C   s>   t   }	|	 D ]\}
}|
dkr|d urt| j|
| q	d S )Nself)localscopyitemssetattr	__class__)r   r   r   r   r   r	   r
   r   r   Zlocals_keyvalue r   g/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/codestral/completion/transformation.py__init__   s   
z&CodestralTextCompletionConfig.__init__c                    s
   t   S )N)super
get_config)clsr   r   r   r   %   s   
z(CodestralTextCompletionConfig.get_configmodelc                 C   s   g dS )N)r   r   r   r   max_completion_tokensr
   seedr   r   )r   r   r   r   r   get_supported_openai_params)   s   z9CodestralTextCompletionConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                 C   s   |  D ]L\}}|dkr||d< |dkr||d< |dkr ||d< |dks(|dkr,||d< |dkr8|du r8||d< |dkr@||d< |d	krH||d
< |dkrP||d< q|S )Nr   r   r   r   r   r
   Tr   r    r   r	   )r   )r   r"   r#   r   r$   paramr   r   r   r   map_openai_params5   s&   z/CodestralTextCompletionConfig.map_openai_params
chunk_datac           
      C   s  d}d}d }d }t j|pd}| }t|dks|dkr$d||dS zt|}W n tjy;   d||d Y S w t jdi |}|	dg pKg }t|dkrXd||dS |d }	|		di 	dd}|		d	d uryd
}|		d	}|		d}t
|||||dS )N Fr   z[DONE])textis_finishedfinish_reasonchoicesdeltacontentr+   Tlogprobs)r)   original_chunkr*   r+   r/   r   )litellmZCustomStreamWrapperZ_strip_sse_data_from_chunkstriplenjsonloadsJSONDecodeErrorZModelResponseStreamgetr   )
r   r'   r)   r*   r+   r/   Zchunk_data_dictr0   Z_choicesZ_choicer   r   r   _chunk_parserP   sP   


z+CodestralTextCompletionConfig._chunk_parser)NNNNNNNN)__name__
__module____qualname____doc__r   r   str__annotations__r   intr   r	   r
   boolr   floatr   classmethodr   r!   dictr&   r   r8   __classcell__r   r   r   r   r   	   sd   
 	


r   )	r4   typingr   r1   Z-litellm.llms.openai.completion.transformationr   Zlitellm.types.llms.databricksr   r   r   r   r   r   <module>   s    