diff --git a/libs/partners/anthropic/langchain_anthropic/chat_models.py b/libs/partners/anthropic/langchain_anthropic/chat_models.py index d7f2643f0f7..5f69b62228a 100644 --- a/libs/partners/anthropic/langchain_anthropic/chat_models.py +++ b/libs/partners/anthropic/langchain_anthropic/chat_models.py @@ -1,3 +1,4 @@ +import copy import re import warnings from operator import itemgetter @@ -116,7 +117,6 @@ def _merge_messages( """Merge runs of human/tool messages into single human messages with content blocks.""" # noqa: E501 merged: list = [] for curr in messages: - curr = curr.model_copy(deep=True) if isinstance(curr, ToolMessage): if ( isinstance(curr.content, list) @@ -143,12 +143,12 @@ def _merge_messages( if isinstance(last.content, str): new_content: List = [{"type": "text", "text": last.content}] else: - new_content = last.content + new_content = copy.copy(last.content) if isinstance(curr.content, str): new_content.append({"type": "text", "text": curr.content}) else: new_content.extend(curr.content) - last.content = new_content + merged[-1] = curr.model_copy(update={"content": new_content}, deep=False) else: merged.append(curr) return merged @@ -178,9 +178,11 @@ def _format_messages( raise ValueError("System message must be at beginning of message list.") if isinstance(message.content, list): system = [ - block - if isinstance(block, dict) - else {"type": "text", "text": "block"} + ( + block + if isinstance(block, dict) + else {"type": "text", "text": "block"} + ) for block in message.content ] else: