a
    ag                     @   s   d dl mZmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZ G dd	 d	eeZG d
d deZeedddZeedddZdS )    )ABCabstractmethod)CallableListTuple)BaseLanguageModel)BaseChatModel)BaseLLM)BasePromptTemplate)	BaseModelFieldc                   @   s$   e Zd ZdZeeedddZdS )BasePromptSelectorz Base class for prompt selectors.llmreturnc                 C   s   dS )z(Get default prompt for a language model.N )selfr   r   r   n/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain/chains/prompt_selector.py
get_prompt   s    zBasePromptSelector.get_promptN)__name__
__module____qualname____doc__r   r   r
   r   r   r   r   r   r      s   r   c                   @   sR   e Zd ZU dZeed< eedZe	e
eegef ef  ed< eedddZdS )	ConditionalPromptSelectorz1Prompt collection that goes through conditionals.default_prompt)default_factoryconditionalsr   c                 C   s&   | j D ]\}}||r|  S q| jS )zGet default prompt for a language model.

        Args:
            llm: Language model to get prompt for.

        Returns:
            Prompt to use for the language model.
        )r   r   )r   r   	conditionpromptr   r   r   r      s    	
z$ConditionalPromptSelector.get_promptN)r   r   r   r   r
   __annotations__r   listr   r   r   r   r   boolr   r   r   r   r   r      s   
r   r   c                 C   s
   t | tS )zCheck if the language model is a LLM.

    Args:
        llm: Language model to check.

    Returns:
        True if the language model is a BaseLLM model, False otherwise.
    )
isinstancer	   r   r   r   r   is_llm,   s    	r$   c                 C   s
   t | tS )zCheck if the language model is a chat model.

    Args:
        llm: Language model to check.

    Returns:
        True if the language model is a BaseChatModel model, False otherwise.
    )r"   r   r#   r   r   r   is_chat_model8   s    	r%   N)abcr   r   typingr   r   r   Zlangchain_core.language_modelsr   Z*langchain_core.language_models.chat_modelsr   Z#langchain_core.language_models.llmsr	   Zlangchain_core.promptsr
   Zpydanticr   r   r   r   r!   r$   r%   r   r   r   r   <module>   s   