def safe_context_param(context_str: str) -> str: """确保上下文参数可以安全地序列化为JSON""" if not context_str: return "" # 移除ECharts代码块,这些对上下文没有帮助且容易导致格式错误 import re # 移除 ```echarts 代码块 cleaned = re.sub(r"```echarts[\s\S]*?```", "", context_str) # 移除其他代码块 cleaned = re.sub(r"```[\s\S]*?```", "", cleaned) # 清理可能导致JSON解析问题的字符 cleaned = str(cleaned).replace('"', "'").replace("\\", "/").strip() # 移除多余的空行和空格 cleaned = re.sub(r"\n\s*\n", "\n", cleaned) # 移除连续空行 cleaned = re.sub(r" +", " ", cleaned) # 合并多个空格 # 限制上下文长度,避免过长导致序列化问题 max_length = 2000 if len(cleaned) > max_length: cleaned = cleaned[:max_length] + "... [上下文已截断]" return cleaned.strip()