Planning In Natural Language Improves LLM Search For Code Generation

本文是LLM系列文章,针对《Planning In Natural Language Improves LLM Search For Code Generation》的翻译。

用自然语言进行规划改进了LLM搜索代码生成

摘要

虽然扩展训练计算已经导致大型语言模型 (LLM) 的显着改进,但扩展推理计算尚未产生类似的收益。我们假设核心缺失部分是缺乏多样化的 LLM 输出,由于模型重复采样高度相似但不正确的生成,导致搜索效率低下。我们凭经验证明,可以通过搜索用自然语言解决问题的候选计划来缓解这种多样性的缺乏。基于这一见解,我们提出了 PLANSEARCH,这是一种新颖的搜索算法,它在 HumanEval+、MBPP+ 和 LiveCodeBench(竞争性编码的无污染基准)上显示出强大的结果。 PLANSEARCH 生成关于问题的一组不同的观察结果,然后使用这些观察结果来构建解决问题的计划。通过使用自然语言搜索计划而不是直接搜索代码解决方案,与基线搜索方法相比,PLANSEARCH 探索了更加多样化的潜在解决方案。在 Claude 3.5 Sonnet 之上使用 PLANSEARCH 在 LiveCodeBench 上实现了 77.0% 的最先进的 pass@200,优于没有搜索时获得的最佳分数 (pass@1 = 41.4%) 和使用标准重复采样 (pass@ 200 = 60.6%)。最后,我们表明,在所有分析的模型、搜索算法和基准测试中,我们可以准确预测搜索带来的性能增益,作为生成想法的多样性的直接函数。

1 引言

2 相关工作

3 动机

你提供的这段说明: > **Rationale** > Using braces to indicate initialization of subobjects improves the clarity of code and forces programmers > to consider the initialization of elements in complex data structures such as multi-dimensional arrays > or arrays of structures. 是 MISRA C 规则中关于**初始化器使用显式大括号 `{}` 来表示子对象初始化**的合理性解释。它出自 **MISRA C:2012 Rule 9.3**(或类似的规则),强调了在复杂结构初始化时,使用嵌套大括号来提高代码清晰度和可维护性。 --- ### ✅ 规则背景 该规则的核心思想是: - 在初始化复合类型(如结构体、数组、多维数组、结构体数组等)时,**应使用嵌套的大括号来明确表示每个子对象的初始化范围**。 - 这样做可以: - 提高代码的可读性和可维护性; - 防止因编译器自动填充而产生的误解; - 强迫开发者明确考虑每一个子对象的初始化值。 --- ### 🧠 示例对比 #### ❌ 不推荐:省略嵌套大括号 ```c int arr[2][2] = {1, 2, 3, 4}; ``` 虽然语法合法,但阅读者不容易看出哪几个值对应哪个子数组。 #### ✅ 推荐:使用嵌套大括号明确初始化结构 ```c int arr[2][2] = { {1, 2}, {3, 4} }; ``` 这样写更清晰地表达了二维数组的逻辑结构。 --- ### 🧱 结构体数组示例 #### ❌ 不推荐 ```c typedef struct { int x; int y; } Point; Point points[2] = {1, 2, 3, 4}; ``` 难以一眼看出 `x` 和 `y` 的配对关系。 #### ✅ 推荐 ```c Point points[2] = { {1, 2}, {3, 4} }; ``` 这种写法一目了然地表明了每个 `Point` 的成员值。 --- ### ⚠️ 注意事项 - 虽然C语言允许“扁平”初始化方式(即不使用嵌套大括号),但在 MISRA 指南下,这被认为是不良实践。 - 使用显式嵌套大括号有助于防止将来修改时出错。 - 对于大型项目或团队协作,统一使用嵌套初始化风格非常重要。 --- ### ✅ 总结 - 使用嵌套大括号 `{}` 明确初始化子对象是一种良好的编码习惯。 - 它符合 MISRA 关于提高代码可读性和安全性的原则。 - 特别适用于多维数组、结构体数组等复杂数据结构的初始化。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值