Home / Function/ filter_messages() — langchain Function Reference

filter_messages() — langchain Function Reference

Architecture documentation for the filter_messages() function in utils.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  d2503edf_7102_e25b_8750_4f2ec45dc543["filter_messages()"]
  0b528c80_0ce7_1c74_8932_bc433bcb03c6["utils.py"]
  d2503edf_7102_e25b_8750_4f2ec45dc543 -->|defined in| 0b528c80_0ce7_1c74_8932_bc433bcb03c6
  7d8fdbaf_a57f_bad7_f47e_85c3fa1f78fe["convert_to_messages()"]
  d2503edf_7102_e25b_8750_4f2ec45dc543 -->|calls| 7d8fdbaf_a57f_bad7_f47e_85c3fa1f78fe
  f7cf2143_3a02_fa39_15a7_05fb127258ed["_is_message_type()"]
  d2503edf_7102_e25b_8750_4f2ec45dc543 -->|calls| f7cf2143_3a02_fa39_15a7_05fb127258ed
  style d2503edf_7102_e25b_8750_4f2ec45dc543 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/langchain_core/messages/utils.py lines 806–947

def 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]:
    """Filter messages based on `name`, `type` or `id`.

    Args:
        messages: Sequence Message-like objects to filter.
        include_names: Message names to include.
        exclude_names: Messages names to exclude.
        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`, ...).

        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`, ...).

        include_ids: Message IDs to include.
        exclude_ids: Message IDs to exclude.
        exclude_tool_calls: 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.

    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.

    Example:
        ```python
        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",),
        )
        ```

        ```python
        [
            SystemMessage("you're a good assistant."),
            HumanMessage("what's your name", id="foo", name="example_user"),

Subdomains

Frequently Asked Questions

What does filter_messages() do?
filter_messages() is a function in the langchain codebase, defined in libs/core/langchain_core/messages/utils.py.
Where is filter_messages() defined?
filter_messages() is defined in libs/core/langchain_core/messages/utils.py at line 806.
What does filter_messages() call?
filter_messages() calls 2 function(s): _is_message_type, convert_to_messages.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free