AI 编程


简单来说,就是用 AI 辅助我们写代码。

用上 AI 编程,拥有一个不疲倦、不拒绝、不抱怨、不顶嘴、不要加薪的全能下属。

「编程」是目前大模型能力最强的垂直领域,甚至超越了对「自然语言」本身的处理能力。

  • 编程语言无二义性
  • 结果可衡量
  • 训练数据质量高
  • 编程训练能增强模型的推理能力,所以会特别着意训练
提示

GitHub Copilot 创造了一个奇迹,所有竞争对手(Amazon、Google、Meta、腾讯等)都是免费的,但是每月 10 美元的它仍市占率最高。

2021 年 6 月上线,比 ChatGPT 早近一年半。个人版 10 美元/月,企业版 19 美元/月

这是一个能提升幸福感的工具,不使用它的理由只有一个:担心代码暴露给 Github。但是这个问题官方现在也推出了选项,可以选择禁止 copilot 使用我们的代码

来自 GitHub 的统计:

  • 88% 的用户获得效率提升
  • 74% 的用户得以专注于业务逻辑
  • 96% 的人能够更快地完成重复性任务
  • 平均效率提升 55%

Copilot 最初是使用 OpenAI Codex 模型,它也是 GPT-3.5、GPT-4 的「一部分」。现在已经完全升级,模型细节未知。

应用层的技术就是 prompt engineering。Prompt 中包含:

  • 光标前和光标后的代码片段
  • 其它相关代码片段。当前文件和其它打开的 tab 里的代码被切成每个 60 行的片段,用 Jaccard 相似度评分,取高分的部分。
  • 被取用的代码片段的路径。用注释的方式插入,例如:# filepath: foo/bar.py,或者 // filepath: foo.bar.js
  • 在「函数定义」、「类定义」、「if-else」等之后,会补全整段代码,其它时候只补全当前行

life-of-a-completion

了解更多:

  1. 需要一个 github 账号。
  2. copilot 官方页面 启用,需要绑定信用卡,默认赠送 1 个月。
  3. 最后,安装 IDE 插件,比如 VSCode、JetBrains 全家桶等。
注意:需要为 IDE 设置代理(科学上网)才行。

Copilot 的使用不需要特别学习,正常写代码,就会收获源源不断的惊喜。

它根据上下文,自动生成建议代码。如果觉得合适,按下 tab 就行了,以下是一些例子。

完成整个函数:

complate-function

写测试用例:

complate-function

根据注释写代码:

complate-function
注意:这种用法不太推荐,因为注释里针对 AI 而写的 prompt,并不适合人类阅读。

更多例子参见官网介绍

  • 代码有了,自动补注释。会按照文档标准写注释
  • 改写当前代码,可另起一块新写,AI 补全得更准,完成后再删旧代码
  • cmd/ctrl + → 只接受一个 token

对话式编程很简单,你发指令,AI 完成任务。效果好坏,取决于模型能力,和你的 prompt。

GPT-4 是目前编程能力最强的大模型,没有之一,可以使用 ChatGPT PlusPoe GPT-4,或者直接使用 API key。免费羊毛是 Bing Chat,但是不稳定。

使用技巧:

  • 所有 prompt engineering 的技巧都有效,可以把代码、错误信息直接粘贴进去
  • 不只写代码,任何技术相关的问题都可以问,比自己搜索效率高很多
  • 太多轮次对话并不会带来性能提升,可能反倒引入不相关的东西。开新轮次,最近 5 轮对话带足够的信息量,效果更好

官方使用演示:

使用感受:

  1. 猜测背后是 gpt-3.5-turbo,比 gpt-4 效果差很多很多
  2. 因为和 IDE 结合得好,所以简单任务交给它更高效
  3. 各种场景都有「Ask Copilot」链接,cmd/ctrl + i 直接呼出
  4. 可以解释代码、修 bug、改进代码、写测试用例等等
  5. 它会从 terminal 里取 context
提示Copilot ChatCopilot X 的一部分。 Copilot X 是个野心勃勃的项目,要把 AI 带到所有编程场景。

前面的工具都是帮你编程,而 Agent 是完全代替你编程。甚至能做更多……

警告:以下介绍的现在都只能玩玩,做技术探讨,还远没到实用的程度。

地址:https://github.com/AntonOsika/gpt-engineer

指定您想要它构建的内容,AI 会要求澄清,然后构建它。

只需三步操作:

pip install gpt-engineer
vim prompt
gpt-engineer .

核心 prompts:https://github.com/AntonOsika/gpt-engineer/tree/main/gpt_engineer/preprompts

评价:

什么都能干,什么都干不好。

主页:https://magic-app-generator.wasp-lang.dev/

源代码:https://github.com/wasp-lang/wasp/tree/wasp-ai

用 Wasp, React, Node.js 和 Prisma 生成全栈 Web 应用程序。

纯在线操作,跟着提示下载到本地执行。

核心 prompts:

https://github.com/wasp-lang/wasp/blob/wasp-ai/waspc/src/Wasp/AI/GenerateNewProject/Operation.hs

评价:

限定了技术栈,用参数做配置,提供框架代码,成品率更高。

官方地址:https://github.com/geekan/MetaGPT

使 GPTs 组成软件全过程,协作处理更复杂的任务。

官方说明:

  • MetaGPT 输入一句话的老板需求,输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等
  • MetaGPT 内部包括产品经理 / 架构师 / 项目经理 / 工程师,它提供了一个软件公司的全过程与精心调配的 SOP

software_company_cd

它不只写代码,而且写文档、画图。

核心 prompts:https://github.com/geekan/MetaGPT/tree/main/metagpt/prompts

评价:

让 agent 模拟岗位这个思路比较有意思。未来的公司就是人和 agent 混合的,这样的系统架构更匹配公司治理。

特别值得一提:MetaGPT 的目标其实是个比肩 LangChain 的框架。

CodeGeeX 是 GitHub Copilot 的替代品。

  • 纯国产,智谱 AI 开发
  • IDE 插件免费使用
  • 模型开源,个人使用免费,商用需授权
  • 补全和对话插件都有
  • Bito - 基于 GPT-3.5 的代码补全,免费。功能更多,比如可以自建 prompt 模板。CLI 工具值得一用
  • Amazon CodeWhisperer - 代码补全,免费。AWS 相关的编程能力卓越。其它凑合
  • Cursor - AI first 的 IDE。被逼开源
  • Tabnine - 代码补全,个人基础版免费

懂技术,但是懒

  • 快速完成重复性工作
  • 知道是咋回事,但要需要思考才能写出来

技术不是很懂,让 AI 先做,自己边用边学

  • 当心它犯错
  • 当心给的不是最佳方案

完全不懂技术

  • 不要指望能用 AI 完成真实系统的编程任务!

AI 祖师爷阿兰·图灵 1947 年在伦敦数学学会的演讲上说过:

…if a machine is expected to be infallible, it cannot also be intelligent.

如果一个机器绝对不会犯错,它就不可能是智能的。

—— 阿兰·图灵

拥有类人的智能,就一定和人类一样,说胡话、瞎话、错话,说有争议的话。

所以,AI 的幻觉不可完全消除,只能尽可能压制。

也因此,使用者的判断力,决定了 AI 潜力的上限。

AI 能力定律

$$能力落地 = min(AI 能力, 使用者判断力)$$

AI 提效定律

$$生产效率提升幅度 = \frac{使用者判断力}{使用者生产力}$$

总结:

  • GPT-4 是目前最强编程大模型,没有之一,第二强是 GPT-3.5
  • 如果不得已,可以尝试国内 CodeGeeX
  • AI 充满幻觉,它的输出必须有人确认,才能生效
  • AI 的能力不会超过使用者的判断力