Home / Class/ MessagesPlaceholder Class — langchain Architecture

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.

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