
    h                         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	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)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/eduruby.in/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   tupler   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   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>r3      s]    #  < D 7 5 %7C 7# 2 #2	$! 	$d 	$	*( 	*T 	*r   