LangChain Reference home pageLangChain ReferenceLangChain Reference
  • GitHub
  • Main Docs
Deep Agents
LangChain
LangGraph
Integrations
LangSmith
  • Overview
    • Overview
    • Caches
    • Callbacks
    • Documents
    • Document loaders
    • Embeddings
    • Exceptions
    • Language models
    • Serialization
    • Output parsers
    • Prompts
    • Rate limiters
    • Retrievers
    • Runnables
    • Utilities
    • Vector stores
    MCP Adapters
    Standard Tests
    Text Splitters
    ⌘I

    LangChain Assistant

    Ask a question to get started

    Enter to send•Shift+Enter new line

    Menu

    OverviewCachesCallbacksDocumentsDocument loadersEmbeddingsExceptionsLanguage modelsSerializationOutput parsersPromptsRate limitersRetrieversRunnablesUtilitiesVector stores
    MCP Adapters
    Standard Tests
    Text Splitters
    Language
    Theme
    Pythonlangchain-coremessagesutilsfilter_messages
    Function●Since v0.2

    filter_messages

    Copy
    filter_messages(
      messages: Iterable[MessageLikeRepresentation] | PromptValue,
      *,
      include_names: 
    View source on GitHub
    Sequence
    [
    str
    ]
    |
    None
    =
    None
    ,
    exclude_names
    :
    Sequence
    [
    str
    ]
    |
    None
    =
    None
    ,
    include_types
    :
    Sequence
    [
    str
    |
    type
    [
    BaseMessage
    ]
    ]
    |
    None
    =
    None
    ,
    exclude_types
    :
    Sequence
    [
    str
    |
    type
    [
    BaseMessage
    ]
    ]
    |
    None
    =
    None
    ,
    include_ids
    :
    Sequence
    [
    str
    ]
    |
    None
    =
    None
    ,
    exclude_ids
    :
    Sequence
    [
    str
    ]
    |
    None
    =
    None
    ,
    exclude_tool_calls
    :
    Sequence
    [
    str
    ]
    |
    bool
    |
    None
    =
    None
    )
    ->
    list
    [
    BaseMessage
    ]

    Parameters

    NameTypeDescription
    messages*Iterable[MessageLikeRepresentation] | PromptValue

    Sequence Message-like objects to filter.

    include_namesSequence[str] | None
    Default:None

    Message names to include.

    exclude_namesSequence[str] | None
    Default:None
    include_typesSequence[str | type[BaseMessage]] | None
    Default:None
    exclude_typesSequence[str | type[BaseMessage]] | None
    Default:None
    include_idsSequence[str] | None
    Default:None
    exclude_idsSequence[str] | None
    Default:None
    exclude_tool_callsSequence[str] | bool | None
    Default:None

    Filter messages based on name, type or id.

    Example:

    from langchain_core.messages import (
        filter_messages,
        AIMessage,
        HumanMessage,
        SystemMessage,
    )
    
    messages = [
        SystemMessage("you're a good assistant."),
        HumanMessage("what's your name", id="foo", name="example_user"),
        AIMessage("steve-o", id="bar", name="example_assistant"),
        HumanMessage(
            "what's your favorite color",
            id="baz",
        ),
        AIMessage(
            "silicon blue",
            id="blah",
        ),
    ]
    
    filter_messages(
        messages,
        include_names=("example_user", "example_assistant"),
        include_types=("system",),
        exclude_ids=("bar",),
    )
    [
        SystemMessage("you're a good assistant."),
        HumanMessage("what's your name", id="foo", name="example_user"),
    ]

    Messages names to exclude.

    Message types to include. Can be specified as string names (e.g. 'system', 'human', 'ai', ...) or as BaseMessage classes (e.g. SystemMessage, HumanMessage, AIMessage, ...).

    Message types to exclude. Can be specified as string names (e.g. 'system', 'human', 'ai', ...) or as BaseMessage classes (e.g. SystemMessage, HumanMessage, AIMessage, ...).

    Message IDs to include.

    Message IDs to exclude.

    Tool call IDs to exclude. Can be one of the following:

    • True: All AIMessage objects with tool calls and all ToolMessage objects will be excluded.
    • a sequence of tool call IDs to exclude:
      • ToolMessage objects with the corresponding tool call ID will be excluded.
      • The tool_calls in the AIMessage will be updated to exclude matching tool calls. If all tool_calls are filtered from an AIMessage, the whole message is excluded.