← 最新论文
💻 computer science

Prompt Optimization for LLM Code Generation via Reinforcement Learning

本文提出了一种利用近端策略优化进行强化学习的框架,通过混合动作空间和测试驱动奖励迭代优化基于大语言模型的代码生成提示,在 MBPP+、HumanEval+ 和 APPS 等多个基准测试中,于多种骨干模型上实现了显著的性能提升。

原作者: Ali Mohammadi Esfahani, Nafiseh Kahani, Samuel A. Ajila

发布于 2026-05-20
📖 1 分钟阅读☕ 轻松阅读

原作者: Ali Mohammadi Esfahani, Nafiseh Kahani, Samuel A. Ajila

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在尝试教一个非常聪明但略显困惑的机器人如何编写计算机代码。你给机器人一套指令(即“提示”),它便尝试编写程序。有时,机器人能立即写对;但更多时候,它会犯错,比如使用了错误的工具或误解了目标。

本文介绍了一种新方法,用于教导该机器人更好地理解你的指令。这种方法并非通过改变机器人本身,而是通过让你(即提示的发出者)表达得更清晰来实现。作者将这种方法称为“提示优化”,并利用一种巧妙的技巧——强化学习来实现。

以下是该系统的运作原理,分解为几个简单概念:

1. 问题所在:“困惑的机器人”

大型语言模型(LLMs)就像这个机器人。它们可以编写代码,但如果你的指令模糊不清,生成的代码就会存在漏洞。

  • 旧方法:你猜测更好的提问方式,尝试一次;如果失败,再猜一次。这种方法既缓慢又随机。
  • 本文的构想:让我们训练一位“教练”(一个 AI 智能体),让它根据机器人代码的表现,逐步找出最佳的提问方式。

2. 教练:强化学习智能体

将“教练”想象成一名游戏玩家。这场游戏的任务是:“让机器人写出完美的代码。”

  • 目标:机器人必须通过一系列“测试用例”(就像数学测验,机器人必须正确解决特定问题)。
  • 循环过程
    1. 教练查看当前的指令。
    2. 教练决定:“我是该保持指令不变?还是替换几个词?或者完全重写句子使其更清晰?”
    3. 机器人根据新指令尝试编写代码。
    4. 代码接受测试。
    5. 教练根据机器人通过的测试数量获得一个分数(奖励)。

3. 教练的工具箱:三种策略

教练有三种具体策略来改进指令:

  1. 直接生成(“静观其变”):教练判断当前指令已足够好,只是让机器人再试一次。有时,机器人只需要第二次机会,就能在随机的思考中碰巧成功。
  2. 词汇变异(“词语替换”):受自然进化启发,教练对词语进行微小、随机的修改。例如,将“列表”替换为“数组”,或添加一个缺失的逗号。这就像洗牌,看看新的组合是否更有效。
  3. 语义重写(“宏观视角”):教练请求另一个 AI 完全重述指令,以使其含义更清晰。这就像将“修理汽车”改为“更换火花塞”,从而更具体地指导机器人。

4. 核心秘诀:“塑形奖励”

这是本文最重要的部分。

  • 旧方法(二元奖励):在许多系统中,只有当机器人100%通过所有测试时,你才能获得一分。如果它通过了 99%,你得到的却是零分。这就像老师因为学生考了 99 分而判定其不及格。教练因此无法获得任何改进线索。
  • 新方法(塑形奖励):作者为部分进步给予教练分数。
    • 如果机器人通过 0 个测试:给予大幅惩罚。
    • 如果机器人通过 50% 的测试:你获得 0.5 分。
    • 如果机器人通过 100% 的测试:你获得 1.0 分。
    • 为何重要:这告诉教练:“嘿,你正在接近目标!继续朝这个方向努力。”它将一场“非过即挂”的游戏,变成了一场“攀登高峰”的游戏。

5. 结果:它奏效了吗?

研究人员在三个不同的编程挑战数据集(MBPP+、HumanEval+ 和 APPS)上,使用三种不同的机器人模型(CodeT5+、CodeLLaMA 和 DeepSeek-Coder)测试了这位“教练”。

他们将他们的教练与以下方法进行了对比:

  • 随机混合(Random-Hybrid):一种随机选择策略的教练(就像猴子扔飞镖)。
  • EPiC 与 Reflexion:其他试图修复提示的智能方法,但未使用这种特定的“部分得分”评分系统。

结果
PPO 教练(即采用“塑形奖励”的那位)每次都获胜。

  • 在最难的测试中,与随机方法相比,它显著提高了成功率。
  • 例如,对于其中一个机器人模型,其成功率从随机方法的 31% 跃升至57%(PPO 方法)。
  • 即使机器人未能获得满分,“软性”分数也表明,教练正一步步持续引导机器人接近正确答案。

总结

本文表明,如果你想让 AI 编写出更好的代码,不应仅仅寄希望于运气。相反,你可以训练一位“教练”来学习如何微调你的指令。通过让教练为部分改进(而不仅仅是完美分数)获得认可,该系统能够比以往任何方法都更快、更有效地驾驭修复代码这一混乱的过程。

简而言之:这就像教导学生解拼图,不是等到他们 100% 拼对时才说“干得好”,而是说“干得好,你已经把三块拼对了,现在试着移动这一块”,直到整幅画面完整呈现。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →