当前位置: 首页 > news >正文

AI编程简介

文章目录

  • AI 编程的特点
  • 常见编程工具
  • copilot的工作原理
  • AI编程常用技巧

AI 编程的特点

AI 编程是指利用人工智能技术来辅助开发过程的一种编程方式。包括但不限于:代码生成、优化、调试、审查,文档生成、测试自动化。
编程能力是大模型各项能力的天花板,由于训练数据质量高、结果可衡量、编程语言无二义性等特点,目前大模型在编程方面的处理能力,甚至超越了对自然语言本身。同时编程训练也能增强模型的推理能力。

常见编程工具

工具Value
GitHub CopilotGitHub 平台和 OpenAI 合作的编程助手
tbaby无需联网,可本地化部署, 支持所有开源编程模型
Tongyi Lingma代码补全,免费。阿里云相关
CodeGeeX清华智谱制造,CodeGeeX 3 Pro 免费可用
Comate百度制造,有免费试用版
Bito比 Copilot 还多些创新
DevChat前端开源,同时卖 GPT 服务
CursorAI 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 中包含:

    1. 组织上下文:光标前和光标后的代码片段
    2. 获取代码片段:其它相关代码片段。当前文件和其它打开的同语言文件 tab 里的代码被切成每个 60 行的片段,取 Jaccard 相似度评分高的。经验tabs个数选择为20 个。
    3. 修饰相关上下文:被取用的代码片段的路径。用注释的方式插入,例如:# filepath: foo/bar.py,或者 // filepath: foo.bar.js
    4. 优先级:根据一些代码常识判断补全输入内容的优先级
    5. 补全格式:在函数定义、类定义、if-else 等之后,会补全整段代码,其它时候只补全当前行
      在这里插入图片描述

AI编程常用技巧

为了更加的对当前代码的理解以及生成有效代码,需要有效地添加提示词。部分技巧总结如下:

  • 所有 prompt engineering 的技巧都有效,可以把代码、错误信息、环境信息直接粘贴进去
  • 任何技术相关的问题都可以问,比自己搜索效率高很多
  • 注意每次问答上下文窗口的大小
  • 改写当前代码,可另起一块新写,AI 补全得更准,完成后再删旧代码
  • Cmd/Ctrl + → 只接受一个 token
  • 如果有旧代码希望被参考,就把代码文件在新 tab 页里打开

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【第69课】Java安全JWT攻防Swagger自动化算法签名密匙Druid未授权
  • java-Mybatis框架
  • MFC程序设计(一) MFC框架
  • 23种设计模式详细知识点(软件设计师)
  • 【工控】线扫相机小结
  • Linux编程:使用 CSV 与 UnQLite 进行数据存储的比较分析
  • Java中‘==’ 和 equals()的区别
  • GeoScene Pro教程(001):软件功能产品介绍
  • Win11配置Pytorch深度学习环境(GPU版本)
  • 鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信
  • 【ROS2】launch启动文件:基础
  • pyyaml:Python 中的 YAML 处理大师
  • 【数学建模】TOPSIS法(优劣解距离法)
  • JimuReport 积木报表 v1.8.0 版本发布,开源可视化报表
  • fpga图像处理实战-图像旋转
  • Android单元测试 - 几个重要问题
  • Java超时控制的实现
  • Js基础知识(一) - 变量
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 汉诺塔算法
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 王永庆:技术创新改变教育未来
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 译米田引理
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #数据结构 笔记一
  • (11)MSP430F5529 定时器B
  • (3)STL算法之搜索
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (含笔试题)深度解析数据在内存中的存储
  • (黑马点评)二、短信登录功能实现
  • (离散数学)逻辑连接词
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET C# 配置 Options
  • .NET 给NuGet包添加Readme
  • .net 后台导出excel ,word
  • .NET 解决重复提交问题
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [20190113]四校联考
  • [20190416]完善shared latch测试脚本2.txt
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [Cloud Networking] Layer3 (Continue)
  • [CSS]CSS 的背景
  • [Electron]ipcMain.on和ipcMain.handle的区别
  • [FC][常见Mapper IRQ研究]
  • [go-zero] 简单微服务调用
  • [leetcode] Longest Palindromic Substring