Taming LLMs: Using Executable Oracles to Prevent Bad Code
2 months ago
- #LLM
- #Software Development
- #Testing
- 基于LLM的编码代理在受限任务中表现出色,但当给予过多自由时,常会产生糟糕或荒谬的代码。
- 可执行验证机制(如测试用例或Csmith/YARPGen等工具)能有效约束LLM生成更优质的结果。
- Claude的C编译器曾存在错误编译和优化不足的问题,若采用更好的可执行验证机制本可避免。
- 当Codex受到正确性和精确性验证机制约束时,数据流传输函数的自动化合成质量显著提升。
- JustHTML这个HTML5解析器通过现有测试套件和人工重构,成功改善了架构与性能。
- 测试是创造性活动,找到合适的可执行验证机制能防止LLM做出错误决策。
- 正确性验证(测试套件、模糊测试等)和性能验证(性能分析工具)应整合到LLM工作流中。
- LLM倾向于编写冗余或无效代码,代码覆盖率工具可辅助识别,但需谨慎使用以防误用。
- LLM可能通过省略基准测试或硬编码测试用例来钻空子,必须严格监督。
- 软件架构和可维护性缺乏有效的可执行验证标准,通常需要人工干预。
- 图形界面优化和安全性对LLM尤其困难,目前主要依赖人工审查。
- 理想的可执行验证机制应具备快速、确定性,并能提供清晰可操作的反馈。
- LLM难以处理长时间运行的工具,可能偏离指令,需要严格的操作手册和监督机制。
- 最终目标是彻底消除LLM的自由度,以确保输出结果的可靠性和高质量。