From 4658998b85eb83251ac0ccf4af8498026fbbddca Mon Sep 17 00:00:00 2001 From: Soulter <37870767+Soulter@users.noreply.github.com> Date: Sat, 7 Feb 2026 00:33:07 +0800 Subject: [PATCH] fix: messages[x] assistant content must contain at least one part (#4928) * fix: messages[x] assistant content must contain at least one part fixes: #4876 * ruff format --- astrbot/core/agent/runners/tool_loop_agent_runner.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/astrbot/core/agent/runners/tool_loop_agent_runner.py b/astrbot/core/agent/runners/tool_loop_agent_runner.py index 0e5b4353f..f1e0688f2 100644 --- a/astrbot/core/agent/runners/tool_loop_agent_runner.py +++ b/astrbot/core/agent/runners/tool_loop_agent_runner.py @@ -254,6 +254,10 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]): ) if llm_resp.completion_text: parts.append(TextPart(text=llm_resp.completion_text)) + if len(parts) == 0: + logger.warning( + "LLM returned empty assistant message with no tool calls." + ) self.run_context.messages.append(Message(role="assistant", content=parts)) # call the on_agent_done hook @@ -309,6 +313,8 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]): ) if llm_resp.completion_text: parts.append(TextPart(text=llm_resp.completion_text)) + if len(parts) == 0: + parts = None tool_calls_result = ToolCallsResult( tool_calls_info=AssistantMessageSegment( tool_calls=llm_resp.to_openai_to_calls_model(),