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"),
Domain
Subdomains
Defined In
Source
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