代码作为思考工具
自然语言推理在什么问题上失效?
- 根因: 模型思考本质上是概率性的、近似的,而数学与逻辑问题要求确定性的、精确的答案;
- 短板: 精确计算、符号操作、严格逻辑推导;
- 对照例证: 同一道题两种推理方式的差异见下;
问题:40 名学生,60% 选修数学,45% 选修物理,25% 两门都选。
只选物理没选数学的有多少人?
纯自然语言推理(易错) 代码推理(精确可验证)
"60%×40=24,45%×40=18, math = int(40*0.60) # 24
25%×40=10,24-10=14" phys = int(40*0.45) # 18
→ 误从数学人数中减,答案错误 both = int(40*0.25) # 10
only_phys = phys - both # 8 ✓
- 分工: 让 LLM 负责理解问题并写出代码,让代码解释器负责精确计算;
符号计算与 LLM 如何互补?
- 既有系统: LLM 之前就存在用符号计算工作的系统——用数学符号而非近似数值处理表达式,例如把 保持精确形式而非算成 1.414;
- 代表: Wolfram Alpha 能给出精确答案;
- 短板: 自然语言理解脆弱、覆盖面窄——依赖内置语法解析,问法稍变就可能解析失败,无法处理开放域多步推理;
- LLM 的补位: 擅长理解各种自然语言表达,但不擅长精确计算;
- 协同模式: LLM 识别问题中的数学或逻辑结构,转化为形式化语言(Mathematica 语言、Python 的 SymPy),再交给符号计算引擎或约束求解器执行,获得精确结果;
代码辅助思考能带来多少提升?
- 数学实验: 为 Agent 配备装有 sympy、numpy、scipy 的 Python 沙盒,用 AIME 风格题目评测,代码辅助模式准确率显著高于纯思维链;
- 逻辑实验: 配备 python-constraint 库,把骑士与无赖类谜题转化为变量与约束后交求解器,在 K&K Puzzle 数据集上代码辅助模式求解准确率达 90% 以上,显著高于纯思考模式;
- 形式化步骤: 识别所有变量、提炼约束条件、定义约束、搜索满足全部约束的解;
脚手架该做多厚取决于什么?
- 规律: 模型与脚手架之间是此消彼长的关系;
- 模型强时: 脚手架可以更薄——模型自己能把逻辑想对,求解器带来的增益随之收窄;
- 模型弱时: 必须在脚手架里做更多事,把关键逻辑推理交给代码与约束求解器保证正确性;
- 放大对照: 用较弱模型时纯思考会频繁算错,代码辅助显著拉高准确率;换成足够强的思考模型,纯思考往往就能解出全部谜题,增益收敛到接近零;
- 结论: 脚手架厚度应取决于手上模型的能力边界;
- 评估前提: 同一套脚手架配上不同能力的模型,结论可能截然不同——这是评估一项 Agent 技术时容易被忽视的前提;
- 定位: 这是元能力作用在“思维本身”这一层,见 代码作为元能力;