From 0496c151234c3e0eb436b727d2ddc710470609ac Mon Sep 17 00:00:00 2001 From: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Date: Fri, 4 Oct 2024 07:40:22 -0700 Subject: [PATCH] [Anthropic] Shallow Copy --- .../anthropic/langchain_anthropic/chat_models.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libs/partners/anthropic/langchain_anthropic/chat_models.py b/libs/partners/anthropic/langchain_anthropic/chat_models.py index 08c3ff66ce2..56d80f7c4cb 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) and all( isinstance(block, dict) and block.get("type") == "tool_result" @@ -139,12 +139,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 @@ -174,9 +174,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: