摘要:大模型走进程序员的日常之际,你都会用它来做些什么?它的能力是否达到你的预期?本篇文章中,GitHub 资深工程师将分享他在实际工作中对这些工具的真实应用场景,也希望这些经验能够带给你一些启发。
大模型走进程序员的日常之际,你都会用它来做些什么?它的能力是否达到你的预期?本篇文章中,GitHub 资深工程师将分享他在实际工作中对这些工具的真实应用场景,也希望这些经验能够带给你一些启发。
作者 | sean goedecke 翻译工具 | DeepSeek
出品 | CSDN(ID:CSDNnews)
在软件工程师群体中,大家对大语言模型(LLMs)的看法分歧很大。有些人认为这是行业有史以来最具变革性的技术,而有些人则认为这只是又一个被过度炒作的产品,虽然听起来很酷,但对真正从事严肃工作的专业人士来说并不实用。
作为在 GitHub 工作的资深工程师,我曾经有一年直接参与 Copilot 的开发,现在主要负责 GitHub Models 相关的工作,我个人觉得,AI 给我带来了很多价值。我认为那些觉得 AI 没用的人,或许是“用错了方式”,也就是说,他们没有以最有效的方式使用这些语言模型。
在这篇文章中,我会分享一些我在日常工作中如何使用 AI 的具体例子。
CSDN 付费下载自视觉中国
编写生产环境中的代码
每次写代码时,我都会使用 Copilot 的自动补全功能。
我接受的补全建议几乎都是些模板化的代码,比如填充函数参数或类型。我很少让 Copilot 帮我生成业务逻辑,但偶尔也会这么做。在我擅长的领域(比如 Ruby on Rails),我相信自己能比 LLM 做得更好。对我来说,它更像是一个“非常棒的自动补全工具”。
不过,真正工作中,我也经常遇到一些我不太擅长的领域或方向。有时候,我需要对一些不太熟悉的领域进行小的战术性修改,比如 Golang 服务或 C 库。虽然我知道这些语言的语法,也写过一些个人项目,但对它们的惯用写法不太有把握。在这种情况下,我会更依赖 Copilot。通常我会启用 o1 模型的 Copilot Chat,在输入框粘贴我的代码,然后直接问:“这段 C 代码符合惯用写法吗?”
我清楚的知道,这种依赖 LLM 的方式是有风险的,因为我不确定自己是否遗漏了什么。LLM 基本上能让我能像一个聪明的实习生一样工作,但我也得像一个靠谱的实习生那样,确保有该领域的专家帮我审查代码。即便如此,我认为这种快速进行战术性修改的能力非常有价值。
编写一次性代码
当我编写一些永远不会进入生产环境的代码时,我会更随意地使用 LLMs。
比如,最近我做了一项研究,需要从 API 中提取一些公共数据,进行分类,并用一系列快速的正则表达式来近似这些分类。所有这些代码都只在我的笔记本电脑上运行,而我基本上都是用 LLMs 来编写的:提取数据的代码、运行另一个 LLM 进行分类的代码、对数据进行分词并统计词频的代码等等。
LLMs 非常擅长编写那些不需要维护的、能运行的代码。像这种只运行一次的非生产代码(比如用于研究的代码),正是 LLMs 的强项。
我觉得,使用 LLMs 让我完成这些任务的速度比不用它们快了 2 到 4 倍。
学习新领域
对我来说,LLMs 最有用的功能之一就是充当“随叫随到的导师”,帮助我学习新领域。比如,上周末我学习了 Unity 的基础知识,整个过程几乎全靠 ChatGPT-4o 帮忙。用 LLMs 学习的魔力在于,你可以随时提问:不仅是“X 是怎么工作的”,还可以追问“X 和 Y 有什么关系”。更棒的是,你还可以问“我理解得对吗?”这样的问题。我经常把自己学到的东西整理出来,然后丢给 LLMs 检查,它会指出我哪里理解对了,哪里还有误解。我真的很爱问 LLMs 问题。
学习新东西时,我会做很多笔记。能够直接把笔记复制粘贴进去,让 LLMs 帮我检查,简直太方便了。
至于 LLMs 会不会“胡说八道”(即产生幻觉),说实话,自从 GPT-3.5 之后,我很少遇到 ChatGPT 或 Claude 乱说的情况。我学习的领域通常都是已经被广泛研究过的(只是我不熟悉),所以 LLMs 出错的概率很低。
到目前为止,我还没遇到过从 LLMs 那里学到的东西是完全错误或虚构的。
自己修复 bug 无解时,让 AI 试试也无妨
虽然我不常这么做,但有时候当我真的被一个 bug 卡住时,我会把整个文件(或几个文件)上传到 Copilot Chat,粘贴错误信息,然后直接问:“你能帮我吗?”
我之所以不常这么做,是因为我觉得自己目前比 AI 更擅长找 Bug。大多数时候,Copilot(或者 Claude,用于一些个人项目)都会被我搞懵。但当我真的束手无策时,试试也无妨,毕竟这几乎不费什么力气。我记得有两三次,LLMs 帮我发现了一些我忽略的细节,节省了我很多时间。
由于 LLMs 在这方面还不够强,我不会花太多时间去反复尝试或帮它“解围”。我只是试一次,看看它能不能搞定。
校对拼写和逻辑错误
我经常写一些英文文档,比如架构决策记录(ADRs)、技术总结、内部帖子等。我从来不让 LLMs 帮我写这些文档,一方面是因为我觉得自己写得比 LLMs 更清晰,另一方面是我对 ChatGPT 那种“标准风格”不太感冒。
不过,我偶尔会把草稿丢给 LLMs,让它帮我检查。LLMs 非常擅长查找拼写错误,有时还会提出一些有趣的观点,让我对草稿进行修改。
和 bug 修复一样,我不会反复让 LLMs 校对,通常只让它检查一轮。它经常会给出一些风格上的建议,但我一般都会忽略。
总结
我用 LLMs 做这些事情:
用 Copilot 进行智能代码补全
在我不熟悉的领域做小的战术性修改(一定会让专家审查)
编写一次性研究代码
通过提问学习新领域(比如 Unity 游戏引擎)
作为最后手段的 bug 修复工具,碰碰运气
校对长篇英文文档的拼写和逻辑
我目前不会用 LLMs 来帮我做这些事情:
在我熟悉的领域帮我写完整的 PR
写 ADRs 或其他技术文档
研究大型代码库并理解其实现方式
《直击 DeepSeek 技术真相,对我们究竟意味着什么?》
在喧嚣的行业热潮中,2月8日(星期六)中午 13:00,我们将深度剖析与还原 DeepSeek 的技术真相!此次对话将深入探讨:
来源:CSDN