mirror of
https://git.mirrors.martin98.com/https://github.com/bytedance/deer-flow
synced 2025-10-05 00:26:32 +08:00
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import logging
|
|
import json
|
|
import json_repair
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def repair_json_output(content: str) -> str:
|
|
"""
|
|
Repair and normalize JSON output.
|
|
|
|
Args:
|
|
content (str): String content that may contain JSON
|
|
|
|
Returns:
|
|
str: Repaired JSON string, or original content if not JSON
|
|
"""
|
|
content = content.strip()
|
|
if content.startswith(("{", "[")) or "```json" in content or "```ts" in content:
|
|
try:
|
|
# If content is wrapped in ```json code block, extract the JSON part
|
|
if content.startswith("```json"):
|
|
content = content.removeprefix("```json")
|
|
|
|
if content.startswith("```ts"):
|
|
content = content.removeprefix("```ts")
|
|
|
|
if content.endswith("```"):
|
|
content = content.removesuffix("```")
|
|
|
|
# Try to repair and parse JSON
|
|
repaired_content = json_repair.loads(content)
|
|
return json.dumps(repaired_content, ensure_ascii=False)
|
|
except Exception as e:
|
|
logger.warning(f"JSON repair failed: {e}")
|
|
return content
|