
    ih                         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	ee      Z G d
 de      ZdedefdZdedefdZy)    )ABCabstractmethod)CallableListTuple)BaseLanguageModel)BaseChatModel)BaseLLM)BasePromptTemplate)	BaseModelFieldc                   *    e Zd ZdZededefd       Zy)BasePromptSelectorz Base class for prompt selectors.llmreturnc                      y)z(Get default prompt for a language model.N )selfr   s     ^/var/www/html/dev/engine/venv/lib/python3.12/site-packages/langchain/chains/prompt_selector.py
get_promptzBasePromptSelector.get_prompt   s        N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r      s'    *7/ 74F 7 7r   r   c                   h    e Zd ZU dZeed<   	  ee      Ze	e
eegef   ef      ed<   	 dedefdZy)	ConditionalPromptSelectorz1Prompt collection that goes through conditionals.default_prompt)default_factoryconditionalsr   r   c                 Z    | j                   D ]  \  }} ||      s|c S  | 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prompts       r   r   z$ConditionalPromptSelector.get_prompt   s8     "&!2!2 	Iv~	 """r   N)r   r   r   r   r   __annotations__r   listr    r   r   r   r   boolr   r   r   r   r   r      s`    ;&&9 	d# $h)*D013EEF $ M#/ #4F #r   r   r   r   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   s    r   is_llmr*   ,   s     c7##r   c                 "    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)   s    r   is_chat_modelr,   8   s     c=))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   <module>r4      s`    # ( ( < D 7 5 %7C 7# 2 #2	$! 	$d 	$	*( 	*T 	*r   