MessagesPlaceholder Class — langchain Architecture
Architecture documentation for the MessagesPlaceholder class in chat.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5["MessagesPlaceholder"] 75bfc804_f68f_7b77_a169_0fd019f759a2["BaseMessagePromptTemplate"] c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5 -->|extends| 75bfc804_f68f_7b77_a169_0fd019f759a2 d735cdf0_4dd6_b10d_3d65_7f753809639d["chat.py"] c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5 -->|defined in| d735cdf0_4dd6_b10d_3d65_7f753809639d c459ef0a_6231_646f_10d2_50f7028a3e0d["__init__()"] c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5 -->|method| c459ef0a_6231_646f_10d2_50f7028a3e0d 262c7d87_05aa_3d71_5515_77e949d77865["format_messages()"] c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5 -->|method| 262c7d87_05aa_3d71_5515_77e949d77865 9fc34a3e_6617_7bc4_7075_3dd0dbc27244["input_variables()"] c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5 -->|method| 9fc34a3e_6617_7bc4_7075_3dd0dbc27244 4a22eaf2_c4cb_6f2f_6204_f7dbd1279a87["pretty_repr()"] c5f45b6e_9126_7fa3_ba5a_e6a86d45b6d5 -->|method| 4a22eaf2_c4cb_6f2f_6204_f7dbd1279a87
Relationship Graph
Source Code
libs/core/langchain_core/prompts/chat.py lines 52–216
class MessagesPlaceholder(BaseMessagePromptTemplate):
"""Prompt template that assumes variable is already list of messages.
A placeholder which can be used to pass in a list of messages.
!!! example "Direct usage"
```python
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!"),
# ]
```
!!! example "Building a prompt with chat history"
```python
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"),
# ])
```
!!! example "Limiting the number of messages"
```python
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!"),
# ]
```
"""
variable_name: str
"""Name of variable to use as messages."""
optional: bool = False
"""Whether `format_messages` must be provided.
If `True` `format_messages` can be called with no arguments and will return an empty
list.
Defined In
Extends
Source
Frequently Asked Questions
What is the MessagesPlaceholder class?
MessagesPlaceholder is a class in the langchain codebase, defined in libs/core/langchain_core/prompts/chat.py.
Where is MessagesPlaceholder defined?
MessagesPlaceholder is defined in libs/core/langchain_core/prompts/chat.py at line 52.
What does MessagesPlaceholder extend?
MessagesPlaceholder extends BaseMessagePromptTemplate.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free