AI 编程
什么是 AI 编程
AI 编程,不只是提效
用上 AI 编程,拥有一个不疲倦、不拒绝、不抱怨、不顶嘴、不要加薪的全能下属。
「编程」是目前大模型能力最强的垂直领域,甚至超越了对「自然语言」本身的处理能力。
- 编程语言无二义性
- 结果可衡量
- 训练数据质量高
- 编程训练能增强模型的推理能力,所以会特别着意训练
补全式编程:Copilot
GitHub Copilot 创造了一个奇迹,所有竞争对手(Amazon、Google、Meta、腾讯等)都是免费的,但是每月 10 美元的它仍市占率最高。
2021 年 6 月上线,比 ChatGPT 早近一年半。个人版 10 美元/月,企业版 19 美元/月
这是一个能提升幸福感的工具,不使用它的理由只有一个:担心代码暴露给 Github。但是这个问题官方现在也推出了选项,可以选择禁止 copilot 使用我们的代码。
来自 GitHub 的统计:
- 88% 的用户获得效率提升
- 74% 的用户得以专注于业务逻辑
- 96% 的人能够更快地完成重复性任务
- 平均效率提升 55%
Copilot
原理
Copilot 最初是使用 OpenAI Codex 模型,它也是 GPT-3.5、GPT-4 的「一部分」。现在已经完全升级,模型细节未知。
应用层的技术就是 prompt engineering
。Prompt 中包含:
- 光标前和光标后的代码片段
- 其它相关代码片段。当前文件和其它打开的
tab
里的代码被切成每个 60 行的片段,用 Jaccard 相似度评分,取高分的部分。 - 被取用的代码片段的路径。用注释的方式插入,例如:
# filepath: foo/bar.py
,或者// filepath: foo.bar.js
- 在「函数定义」、「类定义」、「if-else」等之后,会补全整段代码,其它时候只补全当前行
了解更多:
- Inside GitHub: Working with the LLMs behind GitHub Copilot
- How GitHub Copilot is getting better at understanding your code
- A developer’s guide to prompt engineering and LLMs
安装
- 需要一个 github 账号。
- 到 copilot 官方页面 启用,需要绑定信用卡,默认赠送 1 个月。
- 最后,安装 IDE 插件,比如 VSCode、JetBrains 全家桶等。
使用案例
Copilot 的使用不需要特别学习,正常写代码,就会收获源源不断的惊喜。
它根据上下文,自动生成建议代码。如果觉得合适,按下 tab
就行了,以下是一些例子。
完成整个函数:
写测试用例:
根据注释写代码:
更多例子参见官网介绍。
技巧总结
- 代码有了,自动补注释。会按照文档标准写注释
- 改写当前代码,可另起一块新写,AI 补全得更准,完成后再删旧代码
cmd/ctrl + →
只接受一个 token
对话式编程
对话式编程很简单,你发指令,AI 完成任务。效果好坏,取决于模型能力,和你的 prompt。
GPT4
GPT-4 是目前编程能力最强的大模型,没有之一,可以使用 ChatGPT Plus
,Poe GPT-4
,或者直接使用 API key
。免费羊毛是 Bing Chat,但是不稳定。
使用技巧:
- 所有
prompt engineering
的技巧都有效,可以把代码、错误信息直接粘贴进去 - 不只写代码,任何技术相关的问题都可以问,比自己搜索效率高很多
- 太多轮次对话并不会带来性能提升,可能反倒引入不相关的东西。开新轮次,最近 5 轮对话带足够的信息量,效果更好
GitHub Copilot Chat
官方使用演示:
使用感受:
- 猜测背后是 gpt-3.5-turbo,比 gpt-4 效果差很多很多
- 因为和 IDE 结合得好,所以简单任务交给它更高效
- 各种场景都有「Ask Copilot」链接,
cmd/ctrl + i
直接呼出 - 可以解释代码、修 bug、改进代码、写测试用例等等
- 它会从 terminal 里取 context
Copilot Chat
是 Copilot X 的一部分。
Copilot X
是个野心勃勃的项目,要把 AI 带到所有编程场景。
Agent
前面的工具都是帮你编程,而 Agent 是完全代替你编程。甚至能做更多……
GPT Engineer
地址: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
评价:
GPT Web App Generator
主页: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
评价:
MetaGPT
:多智能体元编程框架
官方地址:https://github.com/geekan/MetaGPT
使 GPTs 组成软件全过程,协作处理更复杂的任务。
官方说明:
- MetaGPT 输入一句话的老板需求,输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等
- MetaGPT 内部包括产品经理 / 架构师 / 项目经理 / 工程师,它提供了一个软件公司的全过程与精心调配的 SOP
它不只写代码,而且写文档、画图。
核心 prompts:https://github.com/geekan/MetaGPT/tree/main/metagpt/prompts
评价:
特别值得一提:MetaGPT 的目标其实是个比肩 LangChain 的框架。
更多工具
国产开源 CodeGeeX
CodeGeeX 是 GitHub Copilot 的替代品。
- 纯国产,智谱 AI 开发
- IDE 插件免费使用
- 模型开源,个人使用免费,商用需授权
- 补全和对话插件都有
其他编程工具
- Bito - 基于 GPT-3.5 的代码补全,免费。功能更多,比如可以自建 prompt 模板。CLI 工具值得一用
- Amazon CodeWhisperer - 代码补全,免费。AWS 相关的编程能力卓越。其它凑合
- Cursor - AI first 的 IDE。被逼开源
- Tabnine - 代码补全,个人基础版免费
更多开源编程大模型
- Code Llama - Meta 出品,可能是开源中最强的
- 姜子牙 Ziya-Coding-15B-v1 - 深圳 IDEA 研究院出品
- CodeFuse-CodeLlama-34B - 阿里出品
- WizardCoder - WizardLM 出品
AI 编程的适用场景
懂技术,但是懒
- 快速完成重复性工作
- 知道是咋回事,但要需要思考才能写出来
技术不是很懂,让 AI 先做,自己边用边学
- 当心它犯错
- 当心给的不是最佳方案
完全不懂技术
- 不要指望能用 AI 完成真实系统的编程任务!
AI 幻觉的必然性和 AI 能力的天花板
AI 祖师爷阿兰·图灵 1947 年在伦敦数学学会的演讲上说过:
…if a machine is expected to be infallible, it cannot also be intelligent.
如果一个机器绝对不会犯错,它就不可能是智能的。