消息占位符#

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!"),
# ]
param n_messages: PositiveInt | None = None#

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

param optional: bool = False#

如果为True,format_messages可以在没有参数的情况下调用,并将返回一个空列表。如果为False,则必须传递一个名为variable_name的命名参数,即使该值为空列表。

param variable_name: str [Required]#

用作消息的变量名称。

async aformat_messages(**kwargs: Any) list[BaseMessage]#

从kwargs异步格式化消息。 应返回一个BaseMessages列表。

Parameters:

**kwargs (Any) – 用于格式化的关键字参数。

Returns:

基础消息列表。

Return type:

列表[BaseMessage]

format_messages(**kwargs: Any) list[BaseMessage][source]#

从kwargs格式化消息。

Parameters:

**kwargs (Any) – 用于格式化的关键字参数。

Returns:

BaseMessage 列表。

Raises:

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

Return type:

列表[BaseMessage]

pretty_print() None#

打印一个人类可读的表示。

Return type:

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

人类可读的表示。

Parameters:

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

Returns:

人类可读的表示。

Return type:

字符串

property input_variables: list[str]#

此提示模板的输入变量。

Returns:

输入变量名称列表。

使用 MessagesPlaceholder 的示例