Source code for langchain_core.prompt_values

"""为语言模型提示设置提示值。

提示值用于表示提示的不同部分。
它们可以用于表示文本、图像或聊天消息片段。
"""
from __future__ import annotations

from abc import ABC, abstractmethod
from typing import List, Literal, Sequence, cast

from typing_extensions import TypedDict

from langchain_core.load.serializable import Serializable
from langchain_core.messages import (
    AnyMessage,
    BaseMessage,
    HumanMessage,
    get_buffer_string,
)


[docs]class PromptValue(Serializable, ABC): """用于任何语言模型输入的基础抽象类。 PromptValues 可以转换为 LLM(纯文本生成)输入和 ChatModel 输入。 """
[docs] @classmethod def is_lc_serializable(cls) -> bool: """返回此类是否可序列化。""" return True
[docs] @classmethod def get_lc_namespace(cls) -> List[str]: """获取langchain对象的命名空间。""" return ["langchain", "schema", "prompt"]
[docs] @abstractmethod def to_string(self) -> str: """将提示值作为字符串返回。"""
[docs] @abstractmethod def to_messages(self) -> List[BaseMessage]: """将提示作为消息列表返回。"""
[docs]class StringPromptValue(PromptValue): """字符串提示值。""" text: str type: Literal["StringPromptValue"] = "StringPromptValue"
[docs] @classmethod def get_lc_namespace(cls) -> List[str]: """获取langchain对象的命名空间。""" return ["langchain", "prompts", "base"]
[docs] def to_string(self) -> str: """返回提示作为字符串。""" return self.text
[docs] def to_messages(self) -> List[BaseMessage]: """将提示作为消息返回。""" return [HumanMessage(content=self.text)]
[docs]class ChatPromptValue(PromptValue): """聊天提示值。 一种由消息构建的提示值类型。 """ messages: Sequence[BaseMessage] """消息列表。"""
[docs] def to_string(self) -> str: """返回提示作为字符串。""" return get_buffer_string(self.messages)
[docs] def to_messages(self) -> List[BaseMessage]: """将提示作为消息列表返回。""" return list(self.messages)
[docs] @classmethod def get_lc_namespace(cls) -> List[str]: """获取langchain对象的命名空间。""" return ["langchain", "prompts", "chat"]
[docs]class ImageURL(TypedDict, total=False): """图像URL。""" detail: Literal["auto", "low", "high"] """指定图像的细节级别。""" url: str """图像的URL或base64编码的图像数据。"""
[docs]class ImagePromptValue(PromptValue): """图像提示值。""" image_url: ImageURL type: Literal["ImagePromptValue"] = "ImagePromptValue"
[docs] def to_string(self) -> str: """返回提示作为字符串。""" return self.image_url["url"]
[docs] def to_messages(self) -> List[BaseMessage]: """将提示作为消息返回。""" return [HumanMessage(content=[cast(dict, self.image_url)])]
[docs]class ChatPromptValueConcrete(ChatPromptValue): """用于明确列出其接受的消息类型的聊天提示值。用于外部模式。 """ messages: Sequence[AnyMessage] type: Literal["ChatPromptValueConcrete"] = "ChatPromptValueConcrete"
[docs] @classmethod def get_lc_namespace(cls) -> List[str]: """获取langchain对象的命名空间。""" return ["langchain", "prompts", "chat"]