filter_messages#

langchain_core.messages.utils.filter_messages(
messages: Sequence[MessageLikeRepresentation] | None = None,
**kwargs: Any,
) list[BaseMessage] | Runnable[Sequence[MessageLikeRepresentation], list[BaseMessage]][source]#

Filter messages based on name, type or id.

Parameters:
  • messages (Union[Sequence[MessageLikeRepresentation], None]) – Sequence Message-like objects to filter.

  • include_names – Message names to include. Default is None.

  • exclude_names – Messages names to exclude. Default is None.

  • include_types – Message types to include. Can be specified as string names (e.g. 'system', 'human', 'ai', …) or as BaseMessage classes (e.g. SystemMessage, HumanMessage, AIMessage, …). Default is None.

  • exclude_types – Message types to exclude. Can be specified as string names (e.g. 'system', 'human', 'ai', …) or as BaseMessage classes (e.g. SystemMessage, HumanMessage, AIMessage, …). Default is None.

  • include_ids – Message IDs to include. Default is None.

  • exclude_ids – Message IDs to exclude. Default is None.

  • exclude_tool_calls

    Tool call IDs to exclude. Default is None. Can be one of the following: - True: all ``AIMessage``s with tool calls and all

    ``ToolMessage``s will be excluded.

    • a sequence of tool call IDs to exclude: - ``ToolMessage``s 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.

  • kwargs (Any)

Returns:

A list of Messages that meets at least one of the incl_* conditions and none of the excl_* conditions. If not incl_* conditions are specified then anything that is not explicitly excluded will be included.

Raises:

ValueError if two incompatible arguments are provided.

Return type:

Union[list[BaseMessage], Runnable[Sequence[MessageLikeRepresentation], 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,
    incl_names=("example_user", "example_assistant"),
    incl_types=("system",),
    excl_ids=("bar",),
)
[
    SystemMessage("you're a good assistant."),
    HumanMessage("what's your name", id="foo", name="example_user"),
]

Examples using filter_messages