fix: tools

This commit is contained in:
Javier Martinez
2026-07-28 15:31:55 +02:00
parent 66b2168df5
commit 33413de2b6
2 changed files with 18 additions and 12 deletions

View File

@@ -1168,13 +1168,16 @@ class AsyncChatEngine:
existing = assistant_message.additional_kwargs.get("tool_calls")
if not isinstance(existing, list):
existing = []
seen_ids = {tc.tool_id for tc in existing if tc.tool_id}
merged = list(existing)
by_id = {}
for tc in existing:
if tc.tool_id:
by_id[tc.tool_id] = tc
for tc in value:
if tc.tool_id and tc.tool_id not in seen_ids:
merged.append(tc)
seen_ids.add(tc.tool_id)
assistant_message.additional_kwargs["tool_calls"] = merged
if tc.tool_id:
by_id[tc.tool_id] = tc
assistant_message.additional_kwargs["tool_calls"] = list(
by_id.values()
)
continue
assistant_message.additional_kwargs[key] = value

View File

@@ -600,13 +600,16 @@ class ChatLoopEngine:
existing = assistant_message.additional_kwargs.get("tool_calls")
if not isinstance(existing, list):
existing = []
seen_ids = {tc.tool_id for tc in existing if tc.tool_id}
merged = list(existing)
by_id = {}
for tc in existing:
if tc.tool_id:
by_id[tc.tool_id] = tc
for tc in value:
if tc.tool_id and tc.tool_id not in seen_ids:
merged.append(tc)
seen_ids.add(tc.tool_id)
assistant_message.additional_kwargs["tool_calls"] = merged
if tc.tool_id:
by_id[tc.tool_id] = tc
assistant_message.additional_kwargs["tool_calls"] = list(
by_id.values()
)
continue
assistant_message.additional_kwargs[key] = value