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

    Filter messages based on name, type or id.

    Copy
    filter_messages(
      messages: Iterable[MessageLikeRepresentation] | PromptValue,
      *,
      include_names: 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]

    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"),
    ]

    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

    Messages names to exclude.

    include_typesSequence[str | type[BaseMessage]] | None
    Default:None

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

    exclude_typesSequence[str | type[BaseMessage]] | None
    Default:None

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

    include_idsSequence[str] | None
    Default:None

    Message IDs to include.

    exclude_idsSequence[str] | None
    Default:None

    Message IDs to exclude.

    exclude_tool_callsSequence[str] | bool | None
    Default:None

    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.
    View source on GitHub