You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Smolagents CodeAgent执行正确代码报错原因排查问询

报错原因排查

1. Agent环境自动修改了输入字符串

你提供的原始输入里是 <strong>Comparison Table</strong>,但报错信息显示该行被处理成了 **Comparison Table**(Markdown粗体格式),说明Smolagents Agent自动将HTML标签转换为了Markdown语法。这行内容按空格拆分后得到仅含2个元素的列表 ['**Comparison', 'Table**'],代码中本应通过 if "**Comparison Table**" in line 条件跳过该行,但可能因为转义后的字符串空格处理规则变化,导致该判断未触发,代码强行尝试对长度为2的列表使用 -3 索引,直接触发索引越界错误。

2. 代码本身存在多处逻辑漏洞

  • 未拆分数据行字段:代码里 parts = line.strip() 仅去除了首尾空格,没有将每行内容按空格分割为字段列表,正确写法应为 parts = re.split(r'\s+', line.strip()) 或 line.strip().split()。虽然报错中显示parts是列表(可能Agent环境有隐式处理),但这个逻辑本身就不稳定。
  • 未跳过表头行:原始数据第二行是表头(Metric sector average solo value consolidated value),代码没有针对该行做跳过处理,会错误地将其当作数据行解析,导致字段提取完全错误。
  • 拼写错误:代码中循环行存在明显笔误 for line ine lines:(ine应为in),如果Agent运行的是这个错误版本,本应直接触发语法错误;但报错信息里的循环行是正确的,推测你复制到Jupyter时修正了该错误,但Agent执行的仍是错误代码版本。

3. 两个环境的执行上下文存在差异

Jupyter Notebook中输入的raw_table_data保持了原始HTML标签格式,"**Comparison Table**" in line 条件无法匹配到该行,且你可能在Jupyter里手动调整了代码(比如修正拆分逻辑、手动跳过表头),所以能正常运行。但Smolagents Agent环境会对输入字符串做额外的清洗、转义处理,导致字符串内容与Jupyter中不一致,进而触发了代码里的逻辑漏洞。


内容的提问来源于stack exchange,提问作者aearslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:13:14