a
    dg                     @   s   d dl Z d dlZd dlmZmZmZmZmZ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 eeZeeef eddd	Zeed
ddZG dd deZdS )    N)AnyDictListMappingOptionalTuple)ChatGeneration
ChatResult)CallbackManagerForLLMRun)BaseChatModel)	AIMessageBaseMessageChatMessageFunctionMessageHumanMessageSystemMessage)_dictreturnc                 C   s   | d }|dkrt | d dS |dkrz| dp2d}| drjt| d d | d d< dt| d i}ni }t||d	S |d
krt| d dS |dkrt| d | d dS t| d |dS d S )Nroleusercontent)r   	assistant function_call	arguments)r   additional_kwargssystemfunctionname)r   r   )r   r   )	r   getjsondumpsdictr   r   r   r   )r   r   r   r    r#   r/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_experimental/llms/llamaapi.py_convert_dict_to_message   s"    

r%   )messager   c                 C   s   t | tr| j| jd}nt | tr2d| jd}nrt | trbd| jd}d| jv r| jd |d< nBt | trzd| jd}n*t | trd| j| j	d}nt
d|  d	| jv r| jd	 |d	< |S )
N)r   r   r   r   r   r   r   )r   r   r   zGot unknown type r   )
isinstancer   r   r   r   r   r   r   r   r   
ValueError)r&   Zmessage_dictr#   r#   r$   _convert_message_to_dict6   s&    






r)   c                   @   s   e Zd ZU dZeed< dee eee	  ee
 eedddZee eee	  eeee	ef  ee	ef f ddd	Zee	ef ed
ddZeee	ef dddZee	dddZdS )ChatLlamaAPIzChat model using the Llama API.clientN)messagesstoprun_managerkwargsr   c           
      K   sB   |  ||\}}d|i}i |||}| j| }	| |	S )Nr,   )_create_message_dictsr+   runr    _create_chat_result)
selfr,   r-   r.   r/   message_dictsparams_paramsZfinal_paramsresponser#   r#   r$   	_generateS   s
    zChatLlamaAPI._generate)r,   r-   r   c                 C   s@   t | j}|d ur*d|v r"td||d< dd |D }||fS )Nr-   z2`stop` found in both the input and default params.c                 S   s   g | ]}t |qS r#   )r)   ).0mr#   r#   r$   
<listcomp>h       z6ChatLlamaAPI._create_message_dicts.<locals>.<listcomp>)r"   _client_paramsr(   )r3   r,   r-   r5   r4   r#   r#   r$   r0   `   s    
z"ChatLlamaAPI._create_message_dicts)r7   r   c                 C   sJ   g }|d D ]2}t |d }t|t|ddd}|| qt|dS )Nchoicesr&   finish_reason)r?   )r&   Zgeneration_info)generations)r%   r   r"   r   appendr	   )r3   r7   r@   resr&   genr#   r#   r$   r2   k   s    z ChatLlamaAPI._create_chat_result)r   c                 C   s   i S )z'Get the parameters used for the client.r#   r3   r#   r#   r$   r=   v   s    zChatLlamaAPI._client_paramsc                 C   s   dS )zReturn type of chat model.z	llama-apir#   rD   r#   r#   r$   	_llm_type{   s    zChatLlamaAPI._llm_type)NN)__name__
__module____qualname____doc__r   __annotations__r   r   r   strr
   r	   r8   r   r   r0   r   r2   propertyr=   rE   r#   r#   r#   r$   r*   N   s&   
  
r*   )r    loggingtypingr   r   r   r   r   r   Zlangchain.schemar   r	   Z langchain_core.callbacks.managerr
   Zlangchain_core.language_modelsr   Zlangchain_core.messagesr   r   r   r   r   r   	getLoggerrF   loggerrK   r%   r"   r)   r*   r#   r#   r#   r$   <module>   s    	 	
