| 12345678910111213141516171819202122232425 |
- 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()
|