langchain_core.prompts.chat.MessagesPlaceholder

class langchain_core.prompts.chat.MessagesPlaceholder[source]

基础:BaseMessagePromptTemplate

假定变量已经是消息列表的提示模板。

一个可以使用来传递消息列表的占位符。

直接使用

from langchain_core.prompts import MessagesPlaceholder

prompt = MessagesPlaceholder("history")
prompt.format_messages() # raises KeyError

prompt = MessagesPlaceholder("history", optional=True)
prompt.format_messages() # returns empty list []

prompt.format_messages(
    history=[
        ("system", "You are an AI assistant."),
        ("human", "Hello!"),
    ]
)
# -> [
#     SystemMessage(content="You are an AI assistant."),
#     HumanMessage(content="Hello!"),
# ]

使用聊天历史构建提示

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are a helpful assistant."),
        MessagesPlaceholder("history"),
        ("human", "{question}")
    ]
)
prompt.invoke(
   {
       "history": [("human", "what's 5 + 2"), ("ai", "5 + 2 is 7")],
       "question": "now multiply that by 4"
   }
)
# -> ChatPromptValue(messages=[
#     SystemMessage(content="You are a helpful assistant."),
#     HumanMessage(content="what's 5 + 2"),
#     AIMessage(content="5 + 2 is 7"),
#     HumanMessage(content="now multiply that by 4"),
# ])

限制消息数量

from langchain_core.prompts import MessagesPlaceholder

prompt = MessagesPlaceholder("history", n_messages=1)

prompt.format_messages(
    history=[
        ("system", "You are an AI assistant."),
        ("human", "Hello!"),
    ]
)
# -> [
#     HumanMessage(content="Hello!"),
# ]
参数n_messages: Optional[PositiveInt] = None

要包含的消息的最大数量。如果为 None,则包含所有消息。默认为 None。

约束
  • exclusiveMinimum = 0

参数optional: bool = False

如果为 True,则可以不带参数调用 format_messages 并返回一个空列表。如果为 False,则需要传递名为 variable_name 的命名参数,即使该参数的值为空列表。

参数variable_name: str [必需]

用作消息的变量的名称。

asyncaformat_messages(**kwargs: Any) List[BaseMessage]

从 kwargs 中异步格式化消息。应返回一系列 BaseMessage。

参数

**kwargsAny) – 用于格式化的关键字参数。

返回

BaseMessage 列表。

返回类型

List[BaseMessage]

format_messages(**kwargs: Any) List[BaseMessage][来源代码]

从 kwargs 中格式化消息。

参数

**kwargsAny) – 用于格式化的关键字参数。

返回

BaseMessage 列表。

抛出

ValueError – 如果变量不是消息列表。

返回类型

List[BaseMessage]

pretty_print() None

打印人类可读的表现形式。

返回类型

None

pretty_repr(html: bool = False) str[source]

人类可读的表现形式。

参数

html (bool) – 是否格式化为HTML。默认为False。

返回

人类可读的表现形式。

返回类型

str

property input_variables: List[str]

此提示模板的输入变量。

返回

输入变量名称的列表。

使用 MessagesPlaceholder 的示例