Source code for langchain.chains.prompt_selector

from abc import ABC, abstractmethod
from typing import Callable, List, Tuple

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 langchain_core.pydantic_v1 import BaseModel, Field


[docs]class BasePromptSelector(BaseModel, ABC): """用于提示选择器的基类。"""
[docs] @abstractmethod def get_prompt(self, llm: BaseLanguageModel) -> BasePromptTemplate: """获取语言模型的默认提示。"""
[docs]class ConditionalPromptSelector(BasePromptSelector): """提示收集器,通过条件语句。""" default_prompt: BasePromptTemplate """如果没有条件匹配,则使用的默认提示。""" conditionals: List[ Tuple[Callable[[BaseLanguageModel], bool], BasePromptTemplate] ] = Field(default_factory=list) """如果条件匹配,则使用的条件语句和提示列表。"""
[docs] def get_prompt(self, llm: BaseLanguageModel) -> BasePromptTemplate: """获取语言模型的默认提示符。 参数: llm:要获取提示符的语言模型。 返回: 用于该语言模型的提示符。 """ for condition, prompt in self.conditionals: if condition(llm): return prompt return self.default_prompt
[docs]def is_llm(llm: BaseLanguageModel) -> bool: """检查语言模型是否为LLM。 参数: llm: 要检查的语言模型。 返回: 如果语言模型是BaseLLM模型,则返回True,否则返回False。 """ return isinstance(llm, BaseLLM)
[docs]def is_chat_model(llm: BaseLanguageModel) -> bool: """检查语言模型是否为聊天模型。 参数: llm: 需要检查的语言模型。 返回: 如果语言模型是BaseChatModel模型,则返回True,否则返回False。 """ return isinstance(llm, BaseChatModel)