部分示例代码如下:

LanguageModelInput = Union[PromptValue, str, Sequence[BaseMessage]]
LanguageModelOutput = Union[BaseMessage, str]
LanguageModelLike = Runnable[LanguageModelInput, LanguageModelOutput]
LanguageModelOutputVar = TypeVar("LanguageModelOutputVar", BaseMessage, str)


class BaseLanguageModel(
    RunnableSerializable[LanguageModelInput, LanguageModelOutputVar], ABC
):
    """Abstract base class for interfacing with language models.

    All language model wrappers inherit from BaseLanguageModel.
    """

此代码涉及到的Python概念包含 “类型注解(Type Annotations)”,“类型别名(Type Aliases)”,“类型假名(TypeVar)”,“泛型类(GenericType)”,“联合类型(Union)”等。具体解释如下:

  1. LanguageModelInput = Union[PromptValue, str, Sequence[BaseMessage]]:这是一个类型别名(Type Alias),表示在输入情况中,LanguageModelInput 可以是 PromptValue 类型,或是 str 类型,或是 BaseMessage 类型的序列。
  2. LanguageModelOutput = Union[BaseMessage, str]:这是一个类型别名,表示在输出情况中,LanguageModelOutput 可以是 BaseMessage 类型,或是 str 类型。
  3. LanguageModelLike = Runnable[LanguageModelInput, LanguageModelOutput]:这表示 LanguageModelLike 类型是以 LanguageModelInput 作为输入,以 LanguageModelOutput 作为输出的 Runnable 类型。
  4. LanguageModelOutputVar = TypeVar("LanguageModelOutputVar", BaseMessage, str):这是创建了一个类型变量(Type Variable),也就是一种在定义时候还不确定具体类型,在实际使用的时候才确定具体类型的东西。它可以是 BaseMessage 或者 str 类型。
  5. class BaseLanguageModel(RunnableSerializable[LanguageModelInput, LanguageModelOutputVar], ABC)::这是一个抽象基类,它继承了 RunnableSerializable。尖括号中的是参数化类型,指定了 RunnableSerializable 的参数类型为 LanguageModelInput 和 LanguageModelOutputVar

这段代码的整体含义是定义了一个名为 BaseLanguageModel 的抽象基类,该基类继承自参数化类型RunnableSerializable,输入类型为 LanguageModelInput,输出类型为 LanguageModelOutputVar



Python中 类型注解,类型别名,类型假名,泛型类,联合类型等概念插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2024/01/26/python-type/