From 6ffe267d2091eeb9e29971e95951b3c67be162c3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 May 2026 14:48:45 +0000 Subject: [PATCH] fix: use AIMessage content for summarization response parsing Agent-Logs-Url: https://github.com/bytedance/deer-flow/sessions/0b34cccd-f69a-4f68-bfa6-9a41256b63b5 Co-authored-by: WillemJiang <219644+WillemJiang@users.noreply.github.com> --- .../agents/middlewares/summarization_middleware.py | 10 ++++++++-- backend/tests/test_summarization_middleware.py | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py b/backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py index d6a149d32..b2f11b446 100644 --- a/backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py +++ b/backend/packages/harness/deerflow/agents/middlewares/summarization_middleware.py @@ -201,7 +201,7 @@ class DeerFlowSummarizationMiddleware(SummarizationMiddleware): "callbacks": [], }, ) - return response.text.strip() + return self._extract_summary_text(response) except Exception as e: return f"Error generating summary: {e!s}" @@ -230,10 +230,16 @@ class DeerFlowSummarizationMiddleware(SummarizationMiddleware): "callbacks": [], }, ) - return response.text.strip() + return self._extract_summary_text(response) except Exception as e: return f"Error generating summary: {e!s}" + def _extract_summary_text(self, response: Any) -> str: + summary_text = getattr(response, "content", None) + if summary_text is None: + summary_text = getattr(response, "text", "") + return summary_text.strip() if isinstance(summary_text, str) else str(summary_text).strip() + @override def _build_new_messages(self, summary: str) -> list[HumanMessage]: """Override the base implementation to let the human message with the special name 'summary'. diff --git a/backend/tests/test_summarization_middleware.py b/backend/tests/test_summarization_middleware.py index 8729374e7..b147acaf6 100644 --- a/backend/tests/test_summarization_middleware.py +++ b/backend/tests/test_summarization_middleware.py @@ -50,7 +50,7 @@ def _middleware( preserve_recent_skill_tokens_per_skill: int = 0, ) -> DeerFlowSummarizationMiddleware: model = MagicMock() - model.invoke.return_value = SimpleNamespace(text="compressed summary") + model.invoke.return_value = AIMessage(content="compressed summary") return DeerFlowSummarizationMiddleware( model=model, trigger=trigger, @@ -672,7 +672,7 @@ async def test_acreate_summary_suppresses_callbacks() -> None: """_acreate_summary must pass callbacks=[] to prevent the internal LLM call from producing visible streaming events in the frontend (issue #2804).""" middleware = _middleware() - middleware.model.ainvoke = mock.AsyncMock(return_value=SimpleNamespace(text="async summary")) + middleware.model.ainvoke = mock.AsyncMock(return_value=AIMessage(content="async summary")) await middleware._acreate_summary(_messages())