From fef84cda62c684b0bfbc8601dcc24aede7fe08eb Mon Sep 17 00:00:00 2001 From: lizb Date: Mon, 28 Apr 2025 15:54:26 +0800 Subject: [PATCH] use json_fix fix the invalid json --- api/core/llm_generator/llm_generator.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/api/core/llm_generator/llm_generator.py b/api/core/llm_generator/llm_generator.py index d5d2ca60fa..48688d5b07 100644 --- a/api/core/llm_generator/llm_generator.py +++ b/api/core/llm_generator/llm_generator.py @@ -22,6 +22,9 @@ from core.ops.entities.trace_entity import TraceTaskName from core.ops.ops_trace_manager import TraceQueueManager, TraceTask from core.ops.utils import measure_time from core.prompt.utils.prompt_template_parser import PromptTemplateParser +import json_repair + +from core.workflow.nodes.llm.exc import LLMNodeError class LLMGenerator: @@ -367,6 +370,14 @@ class LLMGenerator: ) generated_json_schema = cast(str, response.message.content) + try: + generated_json_schema = json.loads(generated_json_schema) + except json.JSONDecodeError: + generated_json_schema = json_repair.loads(generated_json_schema) + if not isinstance(generated_json_schema, (dict | list)): + raise LLMNodeError(f"Failed to parse structured output from llm: {response.message.content}") + generated_json_schema = json.dumps(generated_json_schema, indent=2, ensure_ascii=False) + return {"output": generated_json_schema, "error": ""} except InvokeError as e: