_merge_messages() — langchain Function Reference
Architecture documentation for the _merge_messages() function in chat_models.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 005a5002_49e5_d89d_8695_51674ab4fc58["_merge_messages()"] a85819c7_917d_4c71_2864_a19e68947340["chat_models.py"] 005a5002_49e5_d89d_8695_51674ab4fc58 -->|defined in| a85819c7_917d_4c71_2864_a19e68947340 a1122c23_c68d_f096_a90e_42f0e4d39d61["_format_messages()"] a1122c23_c68d_f096_a90e_42f0e4d39d61 -->|calls| 005a5002_49e5_d89d_8695_51674ab4fc58 style 005a5002_49e5_d89d_8695_51674ab4fc58 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/partners/anthropic/langchain_anthropic/chat_models.py lines 236–281
def _merge_messages(
messages: Sequence[BaseMessage],
) -> list[SystemMessage | AIMessage | HumanMessage]:
"""Merge runs of human/tool messages into single human messages with content blocks.""" # noqa: E501
merged: list = []
for curr in messages:
if isinstance(curr, ToolMessage):
if (
isinstance(curr.content, list)
and curr.content
and all(
isinstance(block, dict) and block.get("type") == "tool_result"
for block in curr.content
)
):
curr = HumanMessage(curr.content) # type: ignore[misc]
else:
curr = HumanMessage( # type: ignore[misc]
[
{
"type": "tool_result",
"content": curr.content,
"tool_use_id": curr.tool_call_id,
"is_error": curr.status == "error",
},
],
)
last = merged[-1] if merged else None
if any(
all(isinstance(m, c) for m in (curr, last))
for c in (SystemMessage, HumanMessage)
):
if isinstance(cast("BaseMessage", last).content, str):
new_content: list = [
{"type": "text", "text": cast("BaseMessage", last).content},
]
else:
new_content = copy.copy(cast("list", cast("BaseMessage", last).content))
if isinstance(curr.content, str):
new_content.append({"type": "text", "text": curr.content})
else:
new_content.extend(curr.content)
merged[-1] = curr.model_copy(update={"content": new_content})
else:
merged.append(curr)
return merged
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does _merge_messages() do?
_merge_messages() is a function in the langchain codebase, defined in libs/partners/anthropic/langchain_anthropic/chat_models.py.
Where is _merge_messages() defined?
_merge_messages() is defined in libs/partners/anthropic/langchain_anthropic/chat_models.py at line 236.
What calls _merge_messages()?
_merge_messages() is called by 1 function(s): _format_messages.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free