fix(llm): guard against null arguments in streaming tool-call accumulator (#2923)

This commit is contained in:
nubs
2026-06-05 18:57:36 +00:00
committed by GitHub
parent 71dda5b106
commit 47a47bf71d
2 changed files with 26 additions and 1 deletions
+6 -1
View File
@@ -1690,7 +1690,12 @@ async def stream_llm(url: str, model: str, messages: List[Dict], temperature: fl
if func.get("name"):
_tc_acc[idx]["name"] = func["name"]
if "arguments" in func:
_tc_acc[idx]["arguments"] += func["arguments"]
# Guard against a null arguments delta: `func` can be
# {"arguments": None} (JSON null), and a raw `+= None`
# raises TypeError that the broad except swallows,
# silently dropping the rest of the chunk. Matches the
# Anthropic accumulator (`partial = ... or ""`) above.
_tc_acc[idx]["arguments"] += func["arguments"] or ""
# Stream tool arg deltas for doc tools
if func["arguments"] and _tc_acc[idx].get("name") in ("create_document", "update_document", "edit_document"):
yield f'data: {json.dumps({"type": "tool_call_delta", "index": idx, "name": _tc_acc[idx]["name"], "arg_delta": func["arguments"]})}\n\n'