o
    {qi                     @   s   d dl 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 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)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   g/home/app/PaddleOCR-VL/.venv_paddleocr/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   tupler   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   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    