[docs]classBasePromptSelector(BaseModel,ABC):"""Base class for prompt selectors."""
[docs]@abstractmethoddefget_prompt(self,llm:BaseLanguageModel)->BasePromptTemplate:"""Get default prompt for a language model."""
[docs]classConditionalPromptSelector(BasePromptSelector):"""Prompt collection that goes through conditionals."""default_prompt:BasePromptTemplate"""Default prompt to use if no conditionals match."""conditionals:List[Tuple[Callable[[BaseLanguageModel],bool],BasePromptTemplate]]=Field(default_factory=list)"""List of conditionals and prompts to use if the conditionals match."""
[docs]defget_prompt(self,llm:BaseLanguageModel)->BasePromptTemplate:"""Get default prompt for a language model. Args: llm: Language model to get prompt for. Returns: Prompt to use for the language model. """forcondition,promptinself.conditionals:ifcondition(llm):returnpromptreturnself.default_prompt
[docs]defis_llm(llm:BaseLanguageModel)->bool:"""Check 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. """returnisinstance(llm,BaseLLM)
[docs]defis_chat_model(llm:BaseLanguageModel)->bool:"""Check 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. """returnisinstance(llm,BaseChatModel)