deer-flow
deer-flow copied to clipboard
JSON解析错误:LLM返回的LaTeX样式引用格式导致Unicode转义序列无效
描述问题
在使用DeerFlow进行研究时,发现系统在解析planner节点返回的JSON内容时出现错误。具体来说,当LLM(使用的是Google API)生成包含LaTeX样式引用格式(如\\upcite{ref6})的内容时,JSON解析器将其误认为是无效的Unicode转义序列而抛出异常。
复现步骤
- 配置使用Google LLM API(gemini-2.0-flash或类似模型)
- 提交一个学术研究相关的查询,例如"扩充我的毕业论文第二章内容"
- 系统开始生成研究计划,但在处理planner节点返回的JSON时出现错误
错误日志
json.decoder.JSONDecodeError: Invalid \\uXXXX escape: line 16 column 87 (char 1089)
完整错误堆栈:
File "/Users/.../src/graph/nodes.py", line 110, in planner_node
response = llm.invoke(messages)
...
langchain_core.exceptions.OutputParserException: Invalid json output: {
...
"steps": [
{...},
{
"need_web_search": true,
"title": "剖析跨模态注意力机制方法",
"description": "1. **注意力机制的原理与发展:**\\n * 追溯注意力机制的起源,从Vaswani等人的Transformer模型\\upcite{ref6}出发,..."
},
...
]
}
问题出在\\upcite{ref6}这个LaTeX样式的引用格式,它被JSON解析器误认为是无效的Unicode转义序列。
环境信息
- OS: macOS
- Python版本: 3.12.9
- 使用的LLM: Google Gemini API ([generativelanguage.googleapis.com](http://generativelanguage.googleapis.com/))
建议解决方案
以下是几种可能的解决方案:
- 在JSON解析前预处理LLM输出,替换或转义特殊字符序列
- 在发送给LLM的提示中明确指示不要使用LaTeX引用格式
- 使用更健壮的JSON解析方法,能够处理这类特殊字符序列
- 在
src/graph/nodes.py中增加错误处理逻辑,捕获并修复此类错误
感谢反馈,我们会在近期尝试复现并解决这个问题
@fak111 不知道这个问题你这边有什么好的解决方案了, 最近社区针对JSON格式进行了一些修复 https://github.com/bytedance/deer-flow/pull/384 , https://github.com/bytedance/deer-flow/pull/344 , 虽然这些修改应该还不能解决你的问题, 不知道你有没有兴趣提交一个 PR 呢?