AI大模型开发架构设计(7)——人人都需要掌握的AI编程及应用案例实战

文章目录

    • 人人都需要掌握的AI编程及应用案例实战
      • 1 AI代码生成模型与AI编程助手介绍
        • 程序设计方式的发展
        • 自动代码生成
        • AI编程工具
      • 2 AI编程助手的代码生成模型架构剖析
        • 以 CodeGeeX 为例-发展过程
        • 以 CodeGeeX 为例-训练过程
        • 以 CodeGeeX 为例-大规模代码数据处理
        • 以 CodeGeeX 为例-模型架构
        • 以 CodeGeeX 为例-模型训练框架及算力
        • 以 CodeGeeX 为例-如何评估代码生成模型的性能?
      • 3 AI编程助手应用案例
        • 基于 CodeGeeX 大模型架构
        • 应用案例一:正则表达式编写
        • 应用案例二:代码重构
        • 应用案例三:重构实现业务逻辑
        • 应用案例四:改Bugs
        • 应用案例五:写单测
        • 应用案例六:取名字
      • 4 AI 编程软件架构的几点思考
        • 第1点思考:代码仓库
        • 第2点思考:需求变更
        • 第3点思考:架构模式/编程范式
        • 第4点思考:程序员的核心竞争力

人人都需要掌握的AI编程及应用案例实战

1 AI代码生成模型与AI编程助手介绍

程序设计方式的发展
  • 从机器语言到人类语言,越来越 简单化、智能化、降本增效、提质

image.png

自动代码生成
  • 自动代码生成或程序合成(Program Synthesis)是计算机科学领域长久以来的一大难题

image.png

AI编程工具
  • 基于大模型的AI编程工具—Github Copilot

image.png

  • 基于大模型的AI编程工具
    • Cursor:https://www.cursor.so/
    • Bito:https://bito.ai/
    • CodeWhisperer:https://aws.amazon.com/codewhisperer/
    • CodeGeeX2:https://codegeex.cn/zh-CN

image.png

  • 基于大模型的AI编程工具费用比较

image.png

2 AI编程助手的代码生成模型架构剖析

以 CodeGeeX 为例-发展过程
  • 开源的大规模多语言代码生成模型

image.png

以 CodeGeeX 为例-训练过程

image.png

以 CodeGeeX 为例-大规模代码数据处理

image.png

以 CodeGeeX 为例-模型架构

image.png

以 CodeGeeX 为例-模型训练框架及算力
  • 框架:基于华为 Mindspore 1.7
  • 计算资源:1536 张昇腾 910 AI 处理器
  • 混合精度:FP16(Layernorm,Softmax 使用 FP32 保证稳定性)
  • 并行训练:192 路数据并行 + 8 路模型并行
  • 全局批大小:3072
  • 训练时长:2个月
  • 训练量:~8500 亿 tokens

image.png

以 CodeGeeX 为例-如何评估代码生成模型的性能?
  • 语义相似性 VS 功能正确性
  • 代码正确性基准评估
    • HumanEval:仅支持Python
    • HumanEval-X:支持多语言

3 AI编程助手应用案例

基于 CodeGeeX 大模型架构
  • 开发了 VS Code、IDEA、PyCharm等 IDE 上的编程助手插件
  • 提供多种交互模式
    • 代码生成、代码补全、代码翻译、代码注释等功能

image.png

应用案例一:正则表达式编写
  • 基于 Prometheus 的可观测平台研发,PromQL 是服务治理领域常用的查询语言,我们需要写一个正则表达式,来检测 PromQL 的合法性,以便于尽早发现不合法的 PromQL,抛出错误。

image.png

image.png

image.png

应用案例二:代码重构
  • 我们写代码的过程中,往往会因为疏忽,而产生各种 bug 和坏味道。可以试试 ChatGPT-4 能帮我们做什么,下面是随机从代码仓库拿出的一段基础代码。

image.png

image.png

应用案例三:重构实现业务逻辑
  • 我们要求一次性交付整个完整需求有点过分,但我们依然可以把需求拆分成小的逻辑单元让TA实现,并要求TA编写单测。
  • 需求,做一个事件的聚合能力,服务治理平台会收集各个平台的事件数据,聚合之后以更加可视化的方式给用户展示。

image.png

image.png

应用案例四:改Bugs
  • 服务治理平台支持自定义指标,底层识别的变量类型是1,2,$3这种形式,为了用户可读性,前端页面表现为 A、B、C。最近出现了一个 BUG,A+B+C+D+E+F+G+H+I+J+K 配置上去再加载上来之后变成了A+B+C+D+E+F+G+H+I+J+B0。原因 K 是11,但是前端转码的实现是 for 循环遍历处理的,所有处理两位数字有 Bug,转回来识别成了1和0。

image.png

image.png

应用案例五:写单测
  • 相信上面的例子也足够体现 ChatGPT-4 写单测的能力了,它不管是表驱动、测试用例的构造能力、代码的 Readability 能力都非常强。
应用案例六:取名字
  • 我们知道取变量名和函数名是工程师们最头疼的问题,ChatGPT-4 非常擅长,毕竟这是它的母语呀,例如上面的解析存储容量的函数,它给的建议确实比原名好太多了。

image.png

4 AI 编程软件架构的几点思考

第1点思考:代码仓库
  • AI 生成代码,代码还需要存储在代码仓库吗?
    • Prompt 即代码
第2点思考:需求变更
  • AI 重新生成代码还是 AI 辅助生成(手动修改原来代码)?
第3点思考:架构模式/编程范式
  • 微服务分层架构模式还适用吗?
  • Serverless 架构会是一种适合的模式吗?
第4点思考:程序员的核心竞争力
  • 程序员经历从手工编码、到低代码、零代码
  • 再到 AI 生成代码 的新时代,时代在进步,繁琐 Coding 终究交由机器来完成
  • 我们去从事更有思考深度的工作,做一个积极拥抱变化马车夫

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364927.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

消息中间件特性

一:消息队列的主要作用是什么? 1.消息队列的特性: 业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

Base64编码原理

Base64编码原理非常简单,首先确定好要编码的字符串,并查找其对应的 ASCII码将其转换为二进制表示,每三个8位的字节转换为四个6位的字节 (384 624),把6位的最高位添两位数字0 ,组成四个8位的字节…

内裤洗衣机有用吗?口碑好的小型洗衣机推荐

随着内衣洗衣机的流行,很多小伙伴在纠结该不该入手一款内衣洗衣机,专门来洗一些贴身衣物,答案是非常有必要的,因为我们现在市面上的大型洗衣机只能做清洁,无法对我们的贴身衣物进行一个高强度的清洁,而小小…

前端JavaScript篇之let、const、var的区别

目录 let、const、var的区别 let、const、var的区别 let、const和var是JavaScript中用于声明变量的关键字,它们之间有一些区别。 首先,var是在ES5中引入的关键字,而let和const是在ES6中引入的。在ES6之前,我们只能使用var来声明…

基于STM32F103C8T6最小系统板(对标某淘)

原理图和PCB都和某淘购买一样!!! 原理图 PCB 3D图

炒股操作方法!南通怎么开股票账户佣金最低?炒股交易手续费最低?

炒股操作方法可以有很多种,以下是一些建议:这些是一些股票交易技巧,希望对你有帮助。请记住,投资有风险,决策请谨慎。 设定明确的投资目标:确定你的投资目标,是为了长期投资还是短期交易&#x…

BGP按组打包

按组打包技术将所有拥有共同出口策略的BGP邻居当作是一个打包组 每条待发送路由只被打包一次然后发给组内的所有邻居 RR1发给三个Client,需要发三份路由。 通过按组打包,可以将路由打包,一次发给所有组内的邻居(前提是出口策略相…

【数据分享】1929-2023年全球站点的逐年最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据! 之前我们分享过1929-2023年全球气象站…

微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)

客户端流程 客户端心跳与实例往服务端注册

fastadmin导入excel并对导入数据处理

情景描述 fastadmin有自带的导入功能,但是不好用,它要求你的表格标题必须跟数据表的备注一致,而且拿到的数据是直接插入数据表,我们无法获取想要的数据并对数据进行处理;而且有时候我们只是想要单纯的读取文件功能&…

k8s之安装部署及kuboard发布应用

目录 环境准备 系统规划 配置免密 将桥接的IPv4流量传递到iptables的链 系统基础配置 安装docker 安装docker及基础依赖 配置docker的仓库下载地址 部署k8s 添加阿里云的k8s源 安装kubeadm,kubelet和kubectl 初始化masteer节点 部署node节点 部署flanne…

代码随想录算法训练营第五十九天|503.下一个更大元素II 、42. 接雨水

代码随想录算法训练营第五十九天|503.下一个更大元素II 、42. 接雨水 下一个更大元素II 503.下一个更大元素II 文章讲解:https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0II.html 题目链接:https://…

守好“安全关” 筑牢“安全线”—济南中医风湿病医院6S管理小组开展安全生产大检查活动

春节将至,许多患者希望在春节前获得康复,因此预约到院参与会诊的患者数量较多。为营造干净整洁迎佳节的浓厚氛围,提升群众就医满意度,优化就医服务,改善医院医疗环境,结合6S精益管理,做到整理、…

深度学习的新前沿:突破、应用与挑战

引言 深度学习的快速发展已经在人工智能领域引起了革命性的变化。作为模仿人脑结构和功能的强大工具,深度神经网络在图像识别、自然语言处理、医学诊断等多个领域取得了显著成就。但是,随着技术的不断推进,深度学习也在不断地进化和扩展其能…

【QT】贪吃蛇小游戏 -- 童年回忆

成品展示 项目分析: 🐍基本元素如下 🐍小蛇的设计,初始大小蛇头占一个方块,蛇身占两个方块。 🐍关于小蛇的移动,采用蛇头前进方向增加一个方块,蛇尾减掉一个方块的实现方法。 &#…

迷你洗衣机哪个牌子好又实惠?最好用的迷你洗衣机分享

随着大家工作的压力越来越大,下了班之后只能想躺平,在洗完澡之后看着还需要手洗的内衣裤真的很头疼。有些小伙伴还有会攒几天再丢进去洗衣机里面一起,而且这样子是非常不好的,用过的内衣裤长时间不清洗容易滋生细菌,而…

Vue3_基础使用

vue2的选项式与vue3的组合式区别: 选项式:vue2中数据与方法计算属性等等,针对一个数据的处理在不同的配置中,当业务复杂时很难维护,修改起来也不好查找。 vue3的组合式:将针对数据的方法计算属性等等放在一…

10.网桥是什么?网桥和路由器及交换机的区别?以太网和令牌环网,nat,查公网ip等

网桥是什么?有什么作用? 网桥是一种网络设备,它可以在数据链路层(第二层)上连接不同的局域网(LAN),并根据MAC地址转发数据帧。网桥的作用是: 隔离碰撞域,提…

QML自定义ComboBox组件,支持动态筛选

QtQuick.Controls提供了ComboBox组件,该组件能够满足日常的下拉选择框的需求,但当需要用户在ComboBox中通过输入关键字进行自动匹配时,原生的组件虽然提供了editable属性用于输入关键字,但是匹配内容不弹出下拉框,无法…

2024年美赛数学建模D题思路分析 - 大湖区水资源问题

# 1 赛题 问题D:大湖区水资源问题 背景 美国和加拿大的五大湖是世界上最大的淡水湖群。这五个湖泊和连接的水道构成了一个巨大的流域,其中包含了这两个国家的许多大城市地区,气候和局部天气条件不同。 这些湖泊的水被用于许多用途&#xff…