anthropic[patch]: correctly handle tool msg with empty list (#27109)

This commit is contained in:
Bagatur 2024-10-04 11:30:50 -07:00 committed by GitHub
parent 4935a14314
commit 1e768a9ec7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 3 deletions

View File

@ -118,9 +118,13 @@ def _merge_messages(
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"
for block in curr.content
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:

View File

@ -162,6 +162,13 @@ def test__merge_messages() -> None:
"text": None,
"name": "blah",
},
{
"tool_input": {"a": "c"},
"type": "tool_use",
"id": "3",
"text": None,
"name": "blah",
},
]
),
ToolMessage("buz output", tool_call_id="1", status="error"), # type: ignore[misc]
@ -178,6 +185,7 @@ def test__merge_messages() -> None:
],
tool_call_id="2",
), # type: ignore[misc]
ToolMessage([], tool_call_id="3"), # type: ignore[misc]
HumanMessage("next thing"), # type: ignore[misc]
]
expected = [
@ -201,6 +209,13 @@ def test__merge_messages() -> None:
"text": None,
"name": "blah",
},
{
"tool_input": {"a": "c"},
"type": "tool_use",
"id": "3",
"text": None,
"name": "blah",
},
]
),
HumanMessage( # type: ignore[misc]
@ -226,6 +241,12 @@ def test__merge_messages() -> None:
"tool_use_id": "2",
"is_error": False,
},
{
"type": "tool_result",
"content": [],
"tool_use_id": "3",
"is_error": False,
},
{"type": "text", "text": "next thing"},
]
),