现象
使用FastGPT的问题分类模块时,当用户输入无意义内容(如“-。-”“你好”“哈哈哈”)或分类配置不完善时,GPT不会调用分类函数,触发报错SyntaxError: Unexpected end of JSON input。查看日志可发现response.data.choices?.[0]?.message?.function_call?.arguments的值为undefined。
可能原因
- GPT未触发函数调用,返回的消息中未包含function_call参数,导致后续JSON解析逻辑失败。
- 问题分类的配置项未覆盖用户输入的非问题类内容,无法引导GPT调用分类函数,使其直接返回自然语言回复。
排查步骤
- 复现问题,查看系统控制台日志,确认报错内容为
SyntaxError: Unexpected end of JSON input。 - 检查日志中
response.data.choices?.[0]?.message?.function_call?.arguments字段,确认其值为undefined。 - 核对当前配置的问题分类项,确认是否覆盖了用户可能输入的各类非问题类内容。
解决与验证
可通过两种方式解决该问题:
- 为问题分类模块增加默认输出配置。当检测到GPT未调用函数时,直接执行默认输出流程。
- 修改系统提示词,强制要求GPT必须调用指定的分类函数,禁止直接回复自然语言,例如配置提示词为“你是一个函数调用机器人,你接下来必须调用agentuserquestion函数,禁止直接回复。”
完成配置后,重新输入无意义或非问题类内容,确认不再触发SyntaxError: Unexpected end of JSON input报错,功能正常运行。