故障排查GitHub issue2 分钟阅读排错/错误码

解决FastGPT工具箱列表接口返回undefined id的问题

本地启动FastGPT v4.14.0版本服务时,工具箱列表接口返回的所有id值均为systemTool-undefined。查看相关代码逻辑后发现,代码中尝试读取item.toolId字段,但该字段的值均为undefined。

现象

本地启动FastGPT v4.14.0版本服务时,工具箱列表接口返回的所有id值均为systemTool-undefined。查看相关代码逻辑后发现,代码中尝试读取item.toolId字段,但该字段的值均为undefined。进一步直接调用fastgpt-plugin模块的插件列表接口,发现返回结果仅包含id字段,未返回toolId字段,这是异常id产生的直接诱因。

可能原因

工具箱列表的id生成逻辑依赖toolId字段,但fastgpt-plugin模块返回的插件列表接口未提供toolId字段,仅返回id字段。当代码尝试读取item.toolId时,该字段不存在于接口返回结果中,因此值为undefined,最终拼接生成了systemTool-undefined的异常id。

排查步骤

  1. 确认当前使用的FastGPT版本为v4.14.0,检查本地服务的启动配置与依赖模块状态。
  2. 直接调用fastgpt-plugin模块的插件列表接口,查看返回的JSON数据结构,确认是否包含toolId字段,仅存在id字段。
  3. 定位工具箱列表接口的业务代码,找到id生成的逻辑部分,确认是否使用了item.toolId作为拼接参数。
  4. 对比接口返回字段与代码中使用的字段,确认字段不匹配的问题。

解决与验证

解决该问题需要调整代码中的id生成逻辑,将原本依赖的toolId字段替换为接口返回的id字段,或补充toolId字段的赋值逻辑。具体可将代码中读取item.toolId的位置,替换为读取item.id,或在调用插件列表接口后,将item.id赋值给item.toolId后再执行id拼接。完成代码修改后,重新启动FastGPT服务,调用工具箱列表接口,验证返回的id字段不再为systemTool-undefined,恢复为正常的id格式。

来源:FastGPT GitHub issue