Hasty Briefsbeta

双语

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的自由度,以确保输出结果的可靠性和高质量。