Qwen-Agent icon indicating copy to clipboard operation
Qwen-Agent copied to clipboard

使用工具调用时,有概率传输的json结构不全

Open yangzeyi666 opened this issue 11 months ago • 17 comments

报错日志:

Image

使用模型:内网部署的qwq-32b

如果报错是否考虑仅是工具调用失败,不影响全局回答

yangzeyi666 avatar May 19 '25 03:05 yangzeyi666

您好,这个看着像是上一轮工具调用的参数不完整,请问工具的结果正常吗?这个部分我们看看修改兜底下

tuhahaha avatar May 19 '25 03:05 tuhahaha

第一轮工具调用就报错了

yangzeyi666 avatar May 19 '25 06:05 yangzeyi666

可以贴下工具的输出的参数吗?另外我刚更新了一个兜底策略,麻烦pull下看看对你的场景是否有效?

tuhahaha avatar May 19 '25 09:05 tuhahaha

工具输出参数: Image

输入参数:

Image

报错是start calling tool时大模型喂的输入参数不完整

yangzeyi666 avatar May 20 '25 02:05 yangzeyi666

可以贴下工具的输出参数吗?另外我刚更新了一个兜底策略,麻烦拉下看看对你的场景是否有效?

0.0.22版本我也遇到了这个问题,参考下面issue。刚才升级到0.0.24后,调用工具也是出现这个错误,但是模型会一直尝试修改参数重新调用工具,一直循环,这个问题似乎更加严重。

https://github.com/QwenLM/Qwen-Agent/issues/547

Kun-Zhang-x avatar May 20 '25 05:05 Kun-Zhang-x

工具输出参数: Image

输入参数:

Image

报错是start calling tool时大模型喂的输入参数不完整

这个例子里看起来参数结构挺完整的?不全指的是缺key了吗?

tuhahaha avatar May 20 '25 06:05 tuhahaha

可以贴下工具的输出参数吗?另外我刚更新了一个兜底策略,麻烦拉下看看对你的场景是否有效?

0.0.22版本我也遇到了这个问题,参考下面issue。刚才升级到0.0.24后,调用工具也是出现这个错误,但是模型会一直尝试修改参数重新调用工具,一直循环,这个问题似乎更加严重。

#547

这次修改是在模型输出参数不完整时,让tool抛出报错,模型有修正的机会,看来是遇到模型无法修复的badcase了。可以设置export QWEN_AGENT_DEBUG=1来打印具体的模型输入输出日志给我们看看吗?

tuhahaha avatar May 20 '25 06:05 tuhahaha

export QWEN_AGENT_DEBUG=1

可以贴下工具的输出参数吗?另外我刚更新了一个兜底策略,麻烦拉下看看对你的场景是否有效?

0.0.22版本我也遇到了这个问题,参考下面issue。刚才升级到0.0.24后,调用工具也是出现这个错误,但是模型会一直尝试修改参数重新调用工具,一直循环,这个问题似乎更加严重。

#547

这次修改是在模型输出参数不完整时,让tool抛出报错,模型有修正的机会,看来是遇到模型无法修复的badcase了。可以设置export QWEN_AGENT_DEBUG=1来打印具体的模型输入输出日志给我们看看吗?

以下是报错信息,我观察了一下json确实有问题,末尾多了一个},后续多轮也没有修正成功。我想问下这是qwen3模型对于json格式数据推理能力比较差的原因吗?

[TOOL_CALL] quickchart-server-generate_chart
{"type": "doughnut", "labels": ["案件大类_9", "案件大类_8", "案件大类_3", "案件大类_10", "案件大类_7", "案件大类_4", "案件大类_6", "案件大类_5", "案件大类_1", "案件大类_2"], "datasets": [{"label": "案件数量", "data": [16, 14, 14, 12, 11, 10, 7, 6, 5, 5], "backgroundColor": ["#FF6384", "#36A2EB", "#FFCE56", "#4BC0C0", "#9966FF", "#FF9F40", "#8E5EAF", "#FFCD56", "#66B2FF", "#5CD6D6"], "borderColor": "rgba(255,255,255,0.2)", "hoverBackgroundColor": "rgba(255,255,255,0.4)", "hoverBorderColor": "#fff"}], "title": "案件类型数量分布", "options": {"legend": {"position": "right", "labels": {"usePointStyle": true, "boxWidth": 12, "fontColor": "#333", "fontSize": 12}}, "responsive": true, "maintainAspectRatio": false}}}2025-05-20 15:20:16,053 - nous_fncall_prompt.py - 196 - WARNING - Invalid json tool-calling arguments
2025-05-20 15:20:16,129 - nous_fncall_prompt.py - 196 - WARNING - Invalid json tool-calling arguments
2025-05-20 15:20:16,144 - agent.py - 188 - WARNING - An error occurred when calling tool `quickchart-server-generate_chart`:
JSONDecodeError: Extra data: line 1 column 666 (char 665)
Traceback:
  File "E:\00tools\pycharm\py-XM\chatbi-agent\.venv\Lib\site-packages\qwen_agent\agent.py", line 178, in _call_tool
    tool_result = tool.call(tool_args, **kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\00tools\pycharm\py-XM\chatbi-agent\.venv\Lib\site-packages\qwen_agent\tools\mcp_manager.py", line 237, in call
    tool_args = json.loads(params)
                ^^^^^^^^^^^^^^^^^^
  File "E:\00develop\python\install_31210\Lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\00develop\python\install_31210\Lib\json\decoder.py", line 341, in decode
    raise JSONDecodeError("Extra data", s, end)


[TOOL_RESPONSE] quickchart-server-generate_chart
An error occurred when calling tool `quickchart-server-generate_chart`:
JSONDecodeError: Extra data: line 1 column 666 (char 665)
Traceback:
  File "E:\00tools\pycharm\py-XM\chatbi-agent\.venv\Lib\site-packages\qwen_agent\agent.py", line 178, in _call_tool
    tool_result = tool.call(tool_args, **kwargs)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\00tools\pycharm\py-XM\chatbi-agent\.venv\Lib\site-packages\qwen_agent\tools\mcp_manager.py", line 237, in call
    tool_args = json.loads(params)
                ^^^^^^^^^^^^^^^^^^
  File "E:\00develop\python\install_31210\Lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\00develop\python\install_31210\Lib\json\decoder.py", line 341, in decode
    raise JSONDecodeError("Extra data", s, end)
2025-05-20 15:20:16,163 - nous_fncall_prompt.py - 44 - WARNING - Invalid json tool-calling arguments

Kun-Zhang-x avatar May 20 '25 07:05 Kun-Zhang-x

这个参数看着确实偏复杂,我看嵌套了多层,有可能就是遇上模型badcase了。我看你传了 'temperature': 0,删掉试试?另外也可以试试qwen3-235b-a22b,看是否全部模型都有这个问题

tuhahaha avatar May 20 '25 07:05 tuhahaha

badcase

删掉temperature也不行,qwen3-235b-a22b试过了,也会出现json错误。但是这种现象的出现是不规律的。

Kun-Zhang-x avatar May 20 '25 08:05 Kun-Zhang-x

工具输出参数: Image 输入参数: Image 报错是start calling tool时大模型喂的输入参数不完整

这个例子里看起来参数结构挺完整的?不全指的是缺key了吗?

是json结构不全,可能是缺“}”之类的

yangzeyi666 avatar May 21 '25 08:05 yangzeyi666

好的,我们会持续优化参数格式的准确率。有统计过这个case里system里有多少个tool吗?

tuhahaha avatar May 21 '25 09:05 tuhahaha

好的,我们会持续优化参数格式的准确率。有统计过这个case里system里有多少个tool吗?

5个

yangzeyi666 avatar May 21 '25 10:05 yangzeyi666

报错日志:

Image

使用模型:内网部署的qwq-32b

如果报错是否考虑仅是工具调用失败,不影响全局回答

Image 调工具有概率报这个错

yangzeyi666 avatar May 22 '25 02:05 yangzeyi666

现在有解决吗

maxgameone avatar May 31 '25 04:05 maxgameone

这个问题还没解决吗?求助

LukasGYH avatar Oct 13 '25 08:10 LukasGYH

模型能力问题吧,可以通过repair_json修复下(能接受的话)

yangzeyi666 avatar Oct 13 '25 09:10 yangzeyi666