fix(message_summary): stop rendering failed workflow output

This commit is contained in:
liuwei
2026-04-07 10:02:22 +08:00
parent acc1e7f20b
commit e4082f6085

View File

@@ -298,6 +298,9 @@ class MessageSummaryPlugin(MessagePluginInterface):
def _append_usage_info(self, answer: str, metadata: Dict[str, Any]) -> str:
"""把 token 统计追加到总结文本末尾"""
if not answer or not answer.strip():
return answer
usage = metadata.get("usage", {}) if metadata else {}
if not usage:
return answer
@@ -331,6 +334,11 @@ class MessageSummaryPlugin(MessagePluginInterface):
def _parse_workflow_response(self, response_data: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]:
"""解析 Dify workflow 响应"""
payload = (response_data or {}).get("data", {}) or {}
status = str(payload.get("status", "")).strip().lower()
if status and status not in {"succeeded", "success", "partial-succeeded"}:
error_message = payload.get("error") or response_data.get("message") or f"workflow status={status}"
raise RuntimeError(str(error_message))
outputs = payload.get("outputs", {}) or {}
answer = ""
@@ -478,6 +486,9 @@ class MessageSummaryPlugin(MessagePluginInterface):
answer = response_data.get("answer", "")
metadata = response_data.get("metadata", {})
if not answer or not answer.strip():
raise RuntimeError("Dify 未返回有效总结内容")
answer = self._clean_summary_output(answer)
spath = ""
answer = self._append_usage_info(answer, metadata)