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)