fix(message_summary): stop rendering failed workflow output
This commit is contained in:
@@ -298,6 +298,9 @@ class MessageSummaryPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
def _append_usage_info(self, answer: str, metadata: Dict[str, Any]) -> str:
|
def _append_usage_info(self, answer: str, metadata: Dict[str, Any]) -> str:
|
||||||
"""把 token 统计追加到总结文本末尾"""
|
"""把 token 统计追加到总结文本末尾"""
|
||||||
|
if not answer or not answer.strip():
|
||||||
|
return answer
|
||||||
|
|
||||||
usage = metadata.get("usage", {}) if metadata else {}
|
usage = metadata.get("usage", {}) if metadata else {}
|
||||||
if not usage:
|
if not usage:
|
||||||
return answer
|
return answer
|
||||||
@@ -331,6 +334,11 @@ class MessageSummaryPlugin(MessagePluginInterface):
|
|||||||
def _parse_workflow_response(self, response_data: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]:
|
def _parse_workflow_response(self, response_data: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]:
|
||||||
"""解析 Dify workflow 响应"""
|
"""解析 Dify workflow 响应"""
|
||||||
payload = (response_data or {}).get("data", {}) or {}
|
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 {}
|
outputs = payload.get("outputs", {}) or {}
|
||||||
answer = ""
|
answer = ""
|
||||||
|
|
||||||
@@ -478,6 +486,9 @@ class MessageSummaryPlugin(MessagePluginInterface):
|
|||||||
answer = response_data.get("answer", "")
|
answer = response_data.get("answer", "")
|
||||||
metadata = response_data.get("metadata", {})
|
metadata = response_data.get("metadata", {})
|
||||||
|
|
||||||
|
if not answer or not answer.strip():
|
||||||
|
raise RuntimeError("Dify 未返回有效总结内容")
|
||||||
|
|
||||||
answer = self._clean_summary_output(answer)
|
answer = self._clean_summary_output(answer)
|
||||||
spath = ""
|
spath = ""
|
||||||
answer = self._append_usage_info(answer, metadata)
|
answer = self._append_usage_info(answer, metadata)
|
||||||
|
|||||||
Reference in New Issue
Block a user