[Bug]train_agent.py在跑agent rl的时候崩溃
Author: wq2455175746Created Sep 29, 2026Updated Sep 29, 2026
hi 大佬,在跑agent rl数据的时候,因为模型生成数据有可能出现不规范的json数据导致训练崩溃。 RM:internlm2-1_8b-reward DataSet:agent_rl.jsonl env:cuda 13.0 4090 24G
两个训练崩溃点:
- calculate_rewards(step ~710) File "train_agent.py", line 545, in calculate_rewards bool(name in valid_names and check and check(raw)) AttributeError: 'list' object has no attribute 'get' 触发:"arguments": "北京",CHECK_ARGS["get_current_weather"] 的 a.get("location") 对 list 调用。
- rollout_batch(step 10190) File "train_agent.py", line 372, in rollout_batch name, raw = call.get("name", ""), call.get("arguments", {}) AttributeError: 'list' object has no attribute 'get' 触发:整个 <tool_call>[...]</tool_call> 被解析成 list。
deepseek做的两个兜底:
- 源头过滤 parse_tool_calls(现 train_agent.py:262): if isinstance(call, dict): calls.append(call) 非 dict 调用直接丢弃,所有消费方不再见到 list。
- 两处 arguments 兜底(train_agent.py:379、546): if not isinstance(raw, dict): raw = {} 结构不对按"无效调用"正常扣分,而非崩溃。
Source: jingyaogong/minimind