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 (Optional[Sequence[MessageLikeRepresentation]]) – 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.

  • 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