资讯动态

SWE-RL源码精读(2):prompts.py提示词模板背后的3个设计巧思

发布时间:2026/8/21 18:13:16 来源:尧图企业网站定制
SWE-RL源码精读(2)prompts.py提示词模板背后的3个设计巧思【免费下载链接】swe-rl[NeurIPS25] Official codebase for SWE-RL: Advancing LLM Reasoning via Reinforcement Learning on Open Software Evolution项目地址: https://gitcode.com/gh_mirrors/sw/swe-rlSWE-RL 是 NeurIPS25 收录的开源项目首次把强化学习用于训练大模型解决真实软件工程问题。它的提示词模板藏在两个文件里src/swerl/core/prompts.py和src/swerl/agentless_mini/utils/prompts.py。别小看这几段模板它们承担着定位 Bug → 生成补丁 → 计算奖励全流程的沟通协议。本文不贴大段代码只拆解 SWE-RL 提示词模板背后最值得借鉴的 3 个设计巧思。巧思一两阶段提示词分工——先定位再修复 SWE-RL 的提示词不是一个大而全的万能模板而是拆成了两个独立角色模板文件位置职责LOCALIZATION 定位模板src/swerl/agentless_mini/utils/prompts.py让模型根据 issue 描述和仓库结构输出最可能涉及的文件路径AGENTLESS_REPAIR 修复模板src/swerl/core/prompts.py让模型基于定位到的文件内容直接产出可落地的代码补丁定位模板只要求模型输出最多 n 个文件路径按重要程度排序、用反引号包裹格式约束极其轻量修复模板则拿到真实文件内容后要求模型输出结构化的 SEARCH/REPLACE 编辑块。为什么这样拆分因为两个阶段的上下文长度、难度、出错率完全不同。代码里也一一对应src/swerl/agentless_mini/localize.py先跑定位src/swerl/agentless_mini/repair.py再基于定位结果拼接文件内容跑修复。两阶段解耦后可以分别缓存、分别并行、分别重试这也是 Agentless Mini 能高效跑完 SWE-bench 500 个实例的原因之一。巧思二SEARCH/REPLACE 结构化输出让补丁零歧义 修复模板最硬核的设计是强制模型按固定六段式输出编辑文件路径 SEARCH起始标记原代码中要查找的连续代码块分隔线要替换成的新代码 REPLACE结束标记这看起来是笨办法实则一石三鸟解析零歧义src/swerl/core/reward.py里一行正则SEARCH_REPLACE_REGEX就能把文本里的编辑块完整提取出来不需要任何 NLP 技巧。天然可校验应用补丁时apply_code_change程序会严格检查 SEARCH 块是否真实存在于原文件中不存在就直接报错杜绝模型凭空改代码。可直接转 diff应用后的新内容可以生成统一 diff再与 oracle标准答案补丁做相似度比对算出强化学习所需的奖励分数。模板里还特别强调必须保留正确的缩进甚至举例说明加一行print(x)也要原样写出全部空格。这种对细节的苛刻正是为了让模型输出能被程序 100% 精确解析——提示词不只是说给模型听更是写给程序看的协议。巧思三 / 标签给模型留一条草稿纸 ✍️SWE-RL 的强化学习对象是推理模型因此修复模板配套了一个思考系统提示THINKING_SYSTEM强制模型先输出think内的内心草稿再输出solution内的最终答案。这套标签设计有三层用意可开关src/swerl/agentless_mini/utils/envs.py通过环境变量THINKING控制是否启用思考模式标签名也可配置兼容不同推理模型。可解析src/swerl/agentless_mini/utils/api.py的parse_thinking_output只抽取solution之间的内容思考过程不参与后续补丁解析避免话痨污染结果。可校验src/swerl/core/reward.py的extract_thought_solution会检查四个标签各出现且仅出现一次思考为空直接判格式错误——这给强化学习训练提供了严格的格式奖励信号。一句话总结让模型先想后写同时保证程序只认最终答案两不耽误。小结提示词是人机协议不是聊天话术 设计巧思核心文件最大收益两阶段拆分agentless_mini/utils/prompts.py、agentless_mini/localize.py定位与修复解耦可并行可缓存SEARCH/REPLACE 结构化输出core/prompts.py、core/reward.py解析零歧义、可校验、可算奖励think/solution思考标签core/prompts.py、utils/envs.py、utils/api.py兼容推理模型思考与答案分离三个巧思的共同点是把模型要说什么和程序怎么解析都写进模板。提示词模板从此不再是自由的聊天文案而是与代码约定好的结构化协议。无论你是做提示词工程、RL 训练还是 Agent 开发这套模板即协议的思路都值得直接抄作业。下一篇源码精读我们将继续深入src/swerl/core/reward.py看 SWE-RL 如何用补丁相似度给模型打分敬请期待。【免费下载链接】swe-rl[NeurIPS25] Official codebase for SWE-RL: Advancing LLM Reasoning via Reinforcement Learning on Open Software Evolution项目地址: https://gitcode.com/gh_mirrors/sw/swe-rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价