Home / File/ prompt_selector.py — langchain Source File

prompt_selector.py — langchain Source File

Architecture documentation for prompt_selector.py, a python file in the langchain codebase. 7 imports, 0 dependents.

File python CoreAbstractions RunnableInterface 7 imports 2 functions 2 classes

Entity Profile

Dependency Diagram

graph LR
  46a25005_7309_c6a3_e896_aaf5fb3c4595["prompt_selector.py"]
  cccbe73e_4644_7211_4d55_e8fb133a8014["abc"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> cccbe73e_4644_7211_4d55_e8fb133a8014
  cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7["collections.abc"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> cfe2bde5_180e_e3b0_df2b_55b3ebaca8e7
  ba43b74d_3099_7e1c_aac3_cf594720469e["langchain_core.language_models"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> ba43b74d_3099_7e1c_aac3_cf594720469e
  2312f229_c199_ac88_c29f_62e2a2958404["langchain_core.language_models.chat_models"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> 2312f229_c199_ac88_c29f_62e2a2958404
  89934eed_a823_2184_acf2_039f48eed5f9["langchain_core.language_models.llms"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> 89934eed_a823_2184_acf2_039f48eed5f9
  e6b4f61e_7b98_6666_3641_26b069517d4a["langchain_core.prompts"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> e6b4f61e_7b98_6666_3641_26b069517d4a
  6e58aaea_f08e_c099_3cc7_f9567bfb1ae7["pydantic"]
  46a25005_7309_c6a3_e896_aaf5fb3c4595 --> 6e58aaea_f08e_c099_3cc7_f9567bfb1ae7
  style 46a25005_7309_c6a3_e896_aaf5fb3c4595 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

from abc import ABC, abstractmethod
from collections.abc import Callable

from langchain_core.language_models import BaseLanguageModel
from langchain_core.language_models.chat_models import BaseChatModel
from langchain_core.language_models.llms import BaseLLM
from langchain_core.prompts import BasePromptTemplate
from pydantic import BaseModel, Field


class BasePromptSelector(BaseModel, ABC):
    """Base class for prompt selectors."""

    @abstractmethod
    def get_prompt(self, llm: BaseLanguageModel) -> BasePromptTemplate:
        """Get default prompt for a language model."""


class ConditionalPromptSelector(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."""

    def get_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.
        """
        for condition, prompt in self.conditionals:
            if condition(llm):
                return prompt
        return self.default_prompt


def is_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.
    """
    return isinstance(llm, BaseLLM)


def is_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.
    """
    return isinstance(llm, BaseChatModel)

Subdomains

Dependencies

  • abc
  • collections.abc
  • langchain_core.language_models
  • langchain_core.language_models.chat_models
  • langchain_core.language_models.llms
  • langchain_core.prompts
  • pydantic

Frequently Asked Questions

What does prompt_selector.py do?
prompt_selector.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, RunnableInterface subdomain.
What functions are defined in prompt_selector.py?
prompt_selector.py defines 2 function(s): is_chat_model, is_llm.
What does prompt_selector.py depend on?
prompt_selector.py imports 7 module(s): abc, collections.abc, langchain_core.language_models, langchain_core.language_models.chat_models, langchain_core.language_models.llms, langchain_core.prompts, pydantic.
Where is prompt_selector.py in the architecture?
prompt_selector.py is located at libs/langchain/langchain_classic/chains/prompt_selector.py (domain: CoreAbstractions, subdomain: RunnableInterface, directory: libs/langchain/langchain_classic/chains).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free