# 文摘 | AlphaCodium：引领代码生成新境界，从提示工程到流程工程

By [Invasion68](https://paragraph.com/@invasion68) · 2024-01-20

---

这两天看到的收获很大的一篇论文《AlphaCodium：引领代码生成新境界，从提示工程到流程工程》，它提出了一种新的生成代码的方法，比传统的直接基于Prompt生成代码的方式准确率更高。

它用的测试集是CodeContests ，这是由 Deepmind 推出的一项挑战性编程数据集。相对来说还是很权威的。以 GPT-4 为例的话，准确率从19%提升到了44%。

它的原理有些复杂，但是如果你有过LeetCode刷题经验，相对比较好理解一些。

普通人刷 LeetCode，上来就做，这样有可能得到答案，也有可能做不出来，这就类似于你把题目直接丢给GPT-4，让它直接给出答案，准确率相对要低一些。

高手刷LeetCode，会有个做题的流程，同样的水平，做出来的概率会大一些。 高手做题时会大概分成几个步骤：

1.  先把题目中的要点一条条列出来，确保不会遗漏任何重要信息
    
2.  通常LeetCode会提供 1 个或多个测试用例，仔细看测试用例，分析为什么给定的输入能得到给定的输出
    
3.  在写代码前，列出几种可能的解决方案，例如暴力算法、递归、动态规划，每一种方案写下思路和伪代码
    
4.  对于列出来的几种方案进行评估，选出最佳方案
    
5.  可能还会补充一些测试用例帮助事后验证
    

* * *

以下部分是迭代过程： 6. 根据选中的解决方案写代码，如果代码不能运行则修改代码直至能运行 7. 将代码提交到LeetCode的测试集去验证，如果无法通过所有测试，则修改错误，如果通过到第8步 8. 用第 5 步生成的测试用例验证代码，如果运行不通过则继续优化代码

这里留个思考题：如果第8步出错，怎么判断是代码有问题还是自己生成的测试用例有问题？

而 AlphaCodium 就是完美遵循了以上的步骤来解题（参考图二），只不过每一步都是由大语言模型帮助完成！

这给了我一些启示：

1.  不必寄希望于将复杂的任务在一个 Prompt 中完成，拆分成若干子任务成功概率会高一些
    
2.  AI 可以借鉴人类的优秀实践，例如高手是如何解决编程难题的，让 AI 按照高手的步骤去一步步做
    
3.  AI 的潜力还有很大挖掘空间
    

完整的文章参考：[网页链接](https://www.codium.ai/blog/alphacodium-state-of-the-art-code-generation-for-code-contests/?continueFlag=20da5b5360a70f2c7035bce5ab0af709)

中文译文：[网页链接](https://baoyu.io/translations/prompt-engineering/alphacodium-state-of-the-art-code-generation-for-code-contests?continueFlag=20da5b5360a70f2c7035bce5ab0af709)

项目源码：[网页链接](https://github.com/Codium-ai/AlphaCodium/?continueFlag=20da5b5360a70f2c7035bce5ab0af709)

Prompt和运行结果参考：[网页链接](https://github.com/Codium-ai/AlphaCodium/blob/main/alpha_codium/gen/example.log?continueFlag=20da5b5360a70f2c7035bce5ab0af709)

---

*Originally published on [Invasion68](https://paragraph.com/@invasion68/alphacodium)*
