消息占位符#
- class langchain_core.prompts.chat.MessagesPlaceholder[source]#
-
假设变量已经是消息列表的提示模板。
一个占位符,可用于传递消息列表。
直接使用:
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 的示例