o
    Jjg                     @   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dedefddZdedefddZdS )    )ABCabstractmethod)CallableListTuple)BaseLanguageModel)BaseChatModel)BaseLLM)BasePromptTemplate)	BaseModelFieldc                   @   s&   e Zd ZdZededef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   X/var/www/html/zoom/venv/lib/python3.10/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                   @   sX   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< 	 dedefddZd	S )
ConditionalPromptSelectorz1Prompt collection that goes through conditionals.default_prompt)default_factoryconditionalsr   r   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   r   c                 C   
   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,      
	r$   c                 C   r!   )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   r%   r&   N)abcr   r   typingr   r   r   langchain_core.language_modelsr   *langchain_core.language_models.chat_modelsr   #langchain_core.language_models.llmsr	   langchain_core.promptsr
   pydanticr   r   r   r   r    r$   r&   r   r   r   r   <module>   s    