deer-flow icon indicating copy to clipboard operation
deer-flow copied to clipboard

JSON解析错误:LLM返回的LaTeX样式引用格式导致Unicode转义序列无效

Open fak111 opened this issue 7 months ago • 3 comments

描述问题

在使用DeerFlow进行研究时,发现系统在解析planner节点返回的JSON内容时出现错误。具体来说,当LLM(使用的是Google API)生成包含LaTeX样式引用格式(如\\upcite{ref6})的内容时,JSON解析器将其误认为是无效的Unicode转义序列而抛出异常。

复现步骤

  1. 配置使用Google LLM API(gemini-2.0-flash或类似模型)
  2. 提交一个学术研究相关的查询,例如"扩充我的毕业论文第二章内容"
  3. 系统开始生成研究计划,但在处理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转义序列。

环境信息

建议解决方案

以下是几种可能的解决方案:

  1. 在JSON解析前预处理LLM输出,替换或转义特殊字符序列
  2. 在发送给LLM的提示中明确指示不要使用LaTeX引用格式
  3. 使用更健壮的JSON解析方法,能够处理这类特殊字符序列
  4. src/graph/nodes.py中增加错误处理逻辑,捕获并修复此类错误

fak111 avatar May 12 '25 13:05 fak111

感谢反馈,我们会在近期尝试复现并解决这个问题

laundry2 avatar May 14 '25 16:05 laundry2

@fak111 不知道这个问题你这边有什么好的解决方案了, 最近社区针对JSON格式进行了一些修复 https://github.com/bytedance/deer-flow/pull/384 , https://github.com/bytedance/deer-flow/pull/344 , 虽然这些修改应该还不能解决你的问题, 不知道你有没有兴趣提交一个 PR 呢?

WillemJiang avatar Jul 13 '25 07:07 WillemJiang

@fak111 不知道这个问题你这边有什么好的解决方案了, 最近社区针对JSON格式进行了一些修复 #384#344 , 虽然这些修改应该还不能解决你的问题, 不知道你有没有兴趣提交一个 PR 呢?

我也很感兴趣参与这个问题的改进,但还需要一些时间调研和复现,确认近期修复是否已覆盖相关问题。如仍未解决,有空时我会考虑提交一个 PR。

fak111 avatar Jul 14 '25 08:07 fak111