[Bug]:

用户运行 RAGFlow v0.23.1(Docker 环境,Windows 11),在 Agent 界面(智能体模块)使用 ExeSQL 工具执行 SQL 查询时,界面报错 “undefined”。通过 Chrome 开发者工具查看网络请求,发现所有请求返回 HTTP 200,但其中一个返回响应无

[Bug]:

[Bug]: Agent 界面报错 “undefined” — JSON 解析失败:NaN 值导致 ExeSQL 返回不可序列化

快速结论:当 RAGFlow Agent 中的 ExeSQL 工具处理 SQL 查询结果时,如果数据库字段值为 NULL,pandas 会将其转为 NaN(例如 EXAMINE_TIMES: NaN),而 JSON 标准不支持 NaN,导致后端序列化出错,前端 Agent 界面显示 “undefined” 错误。优先排查所有从数据库返回并在后端序列化为 JSON 的数值字段是否含有 NaN

问题场景

用户运行 RAGFlow v0.23.1(Docker 环境,Windows 11),在 Agent 界面(智能体模块)使用 ExeSQL 工具执行 SQL 查询时,界面报错 “undefined”。通过 Chrome 开发者工具查看网络请求,发现所有请求返回 HTTP 200,但其中一个返回响应无法被解析为 JSON。进一步检查发现响应内容中 EXAMINE_TIMES 字段值为 NaN,导致 JSON 解析失败。

报错原文

Agent 界面显示:undefined
Chrome Console 提示:返回响应无法被解析为 JSON(Unexpected token N in JSON at position ...)
后端可能无显式错误日志,但接口返回的响应体中包含类似:
{
  "EXAMINE_TIMES": NaN,
  ...
}

原因分析

可能原因:在 RAGFlow 的 ExeSQL 工具或相关 Agent 工作流中,当 SQL 查询结果中的某个数值字段在数据库里为 NULL 时,pandas 或 numpy 会将其转换为 float('nan')(即 NaN)。标准的 Python json 模块无法序列化 NaN,因此在将 DataFrame 转为 dict 或 JSON 响应时会直接输出 NaN(非 JSON 标准值),导致前端 JSON.parse() 失败。目前 RAGFlow 后端在序列化 agent 输出(尤其是 ExeSQL 结果)时未内置对 NaN 的清理处理

环境排查

  • RAGFlow 版本:v0.23.1
  • 镜像版本:infiniflow/ragflow:v0.23.1
  • 部署方式:Docker(Windows 11)
  • 后端依赖确认:Python 环境中 pandas/numpy 的版本(通常随镜像内置)
  • 数据库字段:检查与 ExeSQL 查询相关的表,确认是否有数值字段(如 EXAMINE_TIMES)存在 NULL

解决步骤

  1. 定位到 ExeSQL 或 Agent 输出序列化的代码段:在 RAGFlow 源码中,找到将 SQL 查询结果(DataFrame 或 rows)转换为 JSON 返回给前端的地方。相关文件参考 agent/canvas.py 中序列化输出的逻辑(agent/canvas.py#L85-L316)。
  2. 在序列化前替换 NaN 为 None:在涉及 ExeSQL 结果转换(如 df.to_dict() 或类似操作)之前,添加清理逻辑:
import pandas as pd
df = pd.DataFrame(rows)
df = df.where(pd.notnull(df), None)
# 然后进行后续的 dict/JSON 序列化
  1. 手动修补代码:由于 RAGFlow v0.23.1 没有内置此修复,需要用户自行修改后端代码。可优先尝试在 agent/canvas.py 或 ExeSQL 工具对应的处理函数中,对返回的 DataFrame 或字典中的 NaN 值进行替换(NaN→NoneNaN→0,推荐使用 None 以保留 NULL 语义)。
  2. 重启容器:修改代码后重新构建 Docker 镜像或重启容器使改动生效。

验证方法

在 Chrome 开发者工具中打开 Network 标签,重新执行 Agent 中触发错误的操作(通常涉及 ExeSQL 查询)。检查对应请求的响应体,确保不再包含 NaN 字样,且 JSON 解析正常。同时确认 Agent 界面不再显示 “undefined” 错误并能正确展示 SQL 查询结果。

参考来源

infiniflow/ragflow #12631(原始 Issue)

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 9305

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注