AI 编程的特点
AI 编程是指利用人工智能技术来辅助开发过程的一种编程方式。包括但不限于:代码生成、优化、调试、审查,文档生成、测试自动化。
编程能力是大模型各项能力的天花板
,由于训练数据质量高、结果可衡量、编程语言无二义性等特点,目前大模型在编程方面的处理能力,甚至超越了对自然语言本身。同时编程训练也能增强模型的推理能力。
常见编程工具
工具 | Value |
---|---|
GitHub Copilot | GitHub 平台和 OpenAI 合作的编程助手 |
tbaby | 无需联网,可本地化部署, 支持所有开源编程模型 |
Tongyi Lingma | 代码补全,免费。阿里云相关 |
CodeGeeX | 清华智谱制造,CodeGeeX 3 Pro 免费可用 |
Comate | 百度制造,有免费试用版 |
Bito | 比 Copilot 还多些创新 |
DevChat | 前端开源,同时卖 GPT 服务 |
Cursor | AI first 的 IDE |
Tabnine | 代码补全,个人基础版免费 |
Amazon CodeWhisperer | 代码补全,免费。AWS 相关的编程能力卓越。 |
更多开源编程大模型
- Code Llama - Meta 出品,可能是开源中最强的 (7B、13B、34B、70B)
- DeepSeek-Coder - 深度探索公司出品(1B、5.7B、6.7B、33B)
- CodeGemma - Google 出品(2B、7B)
copilot的工作原理
-
模型层:最初使用 OpenAI Codex 模型,它也是 GPT-3.5、GPT-4 的一部分。
-
应用层: prompt engineering。Prompt 中包含:
- 组织上下文:光标前和光标后的代码片段
- 获取代码片段:其它相关代码片段。当前文件和其它打开的同语言文件 tab 里的代码被切成每个 60 行的片段,取 Jaccard 相似度评分高的。经验tabs个数选择为20 个。
- 修饰相关上下文:被取用的代码片段的路径。用注释的方式插入,例如:# filepath: foo/bar.py,或者 // filepath: foo.bar.js
- 优先级:根据一些代码常识判断补全输入内容的优先级
- 补全格式:在函数定义、类定义、if-else 等之后,会补全整段代码,其它时候只补全当前行
AI编程常用技巧
为了更加的对当前代码的理解以及生成有效代码,需要有效地添加提示词。部分技巧总结如下:
- 所有 prompt engineering 的技巧都有效,可以把代码、错误信息、环境信息直接粘贴进去
- 任何技术相关的问题都可以问,比自己搜索效率高很多
- 注意每次问答上下文窗口的大小
- 改写当前代码,可另起一块新写,AI 补全得更准,完成后再删旧代码
- Cmd/Ctrl + → 只接受一个 token
- 如果有旧代码希望被参考,就把代码文件在新 tab 页里打开