新知榜官方账号
2023-09-26 10:31:02
Jon Udell发现,先编写测试可以帮助保持LLM助手的进度,随着他在软件开发中继续探索LLM,他得出了这个结论。译自Test-DrivenDevelopmentwithLLMs:NeverTrust,AlwaysVerify。图片来自Unsplash。
作为Steampipe的社区负责人,我一直想要一种更好的方式来可视化项目活动。自从我大约两年前加入以来,插件套件已经从42个增长到136个,现有的插件也在不断地使用新的表、增强功能和错误修复进行更新。所有这些更新都出现在社区Slack频道和社交媒体上,但我一直想要每月或每季度自动总结这些变更。
原始信息存在于GitHub变更日志中,日志采用一致的样式编写,因此从理论上讲,从日志中提取结构化数据应该很简单——但是像往常一样,魔鬼藏在细节中。编写正则表达式以匹配日志中的模式是一项艰巨的任务,我一直在拖延。由于LLM在本质上是模式匹配器,我认为它们可以帮助我更轻松快捷地完成这项工作。
为了这个练习,我从一个详细的提示开始,其中包含样本数据,指定要在数据中识别的模式,并提供可以在测试中使用的样本输出,这些测试将证明脚本的工作符合预期。提示以这个雄心勃勃的目标结束:编写一个脚本来处理sample_data.py中的数据,并编写测试以证明它生成这些输出。
ChatGPT、SourcegraphCody、GitHubCopilotChat和我第一次试用的smoldeveloper都提出了有用的引导解决方案,然后这个练习变成了现在已熟悉的(并且有用的!)与橡皮鸭的对话。我自己编写了测试,出现的解决方案能够通过测试,而且确实比没有LLM辅助来得更容易。
但我对代码不满意,也不觉得我已经充分利用了LLM,所以我重新开始,采用不同的策略:编写测试,要求LLM编写通过测试的函数。对于每个模式(添加新表、增强功能、错误修复、贡献者),我想要一个可以匹配该模式并通过针对样本数据的测试的函数。长期以来,我的做法是将复杂的正则表达式分解为更简单的步骤,这样我可以单独理解和测试它们。这是一种可靠的方法,但它缓慢和笨拙。如果机器可以快速编写复杂的正则表达式并通过测试,我很乐意外包这项任务——尤其是如果它们可以解释自己的工作。
迭代的测试驱动开发配备代码解释器插件的ChatGPT目前是迭代生成受测试约束的函数的黄金标准。在“大型语言模型如何协助网站改版”一文中,我报告了代码解释器的首次成功使用。我的语气可能有点过于事实,我对LLM宣传的反击很敏感,我的目标是这里采取中立的立场和关键的客观性。但让我们现实点:能够在目标导向的自主循环中运行LLM是一项惊人的突破——仍处于初级阶段,但可能是使LLM可靠再现地用于编程的一种方式。
与此同时,配备代码解释器插件的ChatGPT-4是本次练习的首选工具。当然也存在困难!首先,我需要将代码结构化为一个自包含的单文件,其中包含测试代码和运行时代码,并可以粘贴到提示中。不过,这并不是一个艰难的任务,而且对于小项目来说,这通常是我首选的方法。这几乎不是一个新想法。如果您从未查看SQLite的源代码,您可能会惊讶地发现它以amalgamation的形式分发。100多个单独的源代码文件被连接成一个名为“sqlite3.c”的大型C语言文件,称为“amalgamation”。这个amalgamation包含应用程序嵌入SQLite所需的一切。这种捆绑策略是使用LLM的一种好方法。
但与此同时,我建议采用“信任但验证”的变体:永远不要相信,始终验证。就像ChatGPT可以编造事实一样,它显然也愿意撒谎说它编写的代码通过了你给它的测试。它也可以表现出一个倔强的孩子的行为,谁知道但必须不断提醒遵守规则。但是,如果你紧追不放,测试可以成为一个很好的方式,将它的注意力集中在你要它编写的代码上。
相关工具
相关文章
相关快讯
推荐
300美元的AI男友来了!马斯克的情感生意从女友做到男友
2025-08-01 17:56
Agent智能体:2025年企业新员工,月薪仅需一度电?
2025-07-30 17:49
国产GLM-4.5把AI价格打到地板价,实测强到离谱!
2025-07-30 09:08
用AI批量生成治愈系漫画,月入2000+
2025-07-29 09:59
千亿市场规模背后,AI短剧商业化迎来爆发期?
2025-07-17 09:19
15个作品涨粉26万!AI历史账号又出王炸案例!
2025-07-09 09:37
亲测真香!这6个AI工具让工作效率翻倍,同事追着问链接
2025-06-17 16:21
FLUX.1 Kontext 一出,AI生图领域 “地震” 了!
2025-06-06 15:38
用Deepseek写AI绘图提示词,像呼吸一样简单!
2025-02-19 16:12
你以为AI绘画是黑科技?其实早成了“路边摊生意”!
2025-02-19 10:15