From 5f1dfa75995636b24208cf815635e4d07148d74a Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sun, 29 Jun 2025 15:58:22 +0800 Subject: [PATCH] fix: handle LLM response and execute event hook in ToolLoopAgent --- .../process_stage/agent_runner/tool_loop_agent.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/astrbot/core/pipeline/process_stage/agent_runner/tool_loop_agent.py b/astrbot/core/pipeline/process_stage/agent_runner/tool_loop_agent.py index 9e31ed3ae..07b808925 100644 --- a/astrbot/core/pipeline/process_stage/agent_runner/tool_loop_agent.py +++ b/astrbot/core/pipeline/process_stage/agent_runner/tool_loop_agent.py @@ -89,19 +89,15 @@ class ToolLoopAgent(BaseAgentRunner): ) continue llm_resp_result = llm_response - break # got final response + break # got final response if not llm_resp_result: return - # 执行事件钩子 - await self.pipeline_ctx.call_event_hook( - self.event, EventType.OnLLMResponseEvent, self.final_llm_resp - ) - # 处理 LLM 响应 llm_resp = llm_resp_result logger.info(f"LLMResp: {llm_resp}") + if llm_resp.role == "err": # 如果 LLM 响应错误,直接返回错误信息 self.final_llm_resp = llm_resp @@ -120,6 +116,11 @@ class ToolLoopAgent(BaseAgentRunner): self.final_llm_resp = llm_resp self.is_done = True + # 执行事件钩子 + await self.pipeline_ctx.call_event_hook( + self.event, EventType.OnLLMResponseEvent, llm_resp + ) + # 返回 LLM 结果 if llm_resp.result_chain: yield AgentResponse(