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

news2025/4/6 3:07:35

文章目录

    • 人人都需要掌握的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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『C++成长记』string使用指南

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 📒2.1string类对象的常…

线下店铺的商品如何查价

品牌渠道主要分为线上和线下,线上的价格查价方式可以通过系统完成,系统筛选不同平台的数据,然后做价格的比较,输出是否破价的监测报表,这个过程多依赖系统去操作,但线下店铺的产品价格查价方式则没有固定的…

Windows下Cloudreve WebDAV挂载失败解决方法

如果你正在使用Windows的资源管理器挂载WebDAV,并且发现挂载失败,无论你如何去配置他 首先,Cloudreve 中可以为每个用户组单独设置“是否允许使用WebDAV访问”的开关,但是这玩意儿默认是开启的,所以如果不小心手残关掉…

机器学习系列——(六)数据降维

引言 在机器学习领域,数据降维是一种常用的技术,旨在减少数据集的维度,同时保留尽可能多的有用信息。数据降维可以帮助我们解决高维数据带来的问题,提高模型的效率和准确性。本文将详细介绍机器学习中的数据降维方法和技术&#…

解锁文档处理的全新维度:ONLYOFFICE 文档开发者版

前言 相信大家对于 ONLYOFFICE 这款办公软件可能已经有所耳闻,最近因工作需要,我在众多办公协作工具中选择了 ONLYOFFICE,原因主要是它开源经济实惠,可以部署在自己的服务器上并且能够轻松集成到我们的平台中。在数字化信息时代&…

10、数据结构与算法——堆

一、什么是堆 堆是一种特殊的树形数据结构,通常实现为完全二叉树或满二叉树。堆又分为两种类型最大堆(Max Heap) 和 最小堆(Min Heap) 1.1、什么是二叉树 二叉树是一种数据结构,它是由n(n≥0&a…

Python 计算两个时间之间的耗时

博主按照自己的需求写的一个可以计算程序耗时的函数,各位有需要的自行改写哈 实现的大致功能 功能1 记录开始时间,返回一个时间字典。数据包括:开始时间的日期格式、文本格式 功能2 记录结束时间和耗时,返回一个时间字典。数据包…

Web3智能合约:重新定义商业合作的未来

随着区块链技术的飞速发展,Web3时代正逐渐到来,而其中的智能合约成为推动商业合作变革的关键力量。本文将深入探讨Web3智能合约的概念、特点以及对商业合作未来的巨大影响。 什么是Web3智能合约? 智能合约是一种以代码形式编写、自动执行合同…

Oracle 面试题 | 05.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Flask 入门4:Flask 模板

1. 前言 Flask 拥有丰富的扩展方法,且都有统一的特点:简单和即学即用。当我们要实现某个功能之前,可以提前去搜一搜这个功能包是否已经存在,这样也能帮助我剩下很多时间。那么要去哪里找到这些扩展包呢,这里推荐两个方…

Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

前言: RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库&#xff1…

微信小程序可以一个人开发么?

随着移动互联网的飞速发展,微信小程序已经成为了人们日常生活中不可或缺的一部分。它以其便捷性和高效性赢得了广大用户的青睐。对于许多有志于进入小程序领域的开发者来说,一个常见的问题是:微信小程序可以一个人开发吗?答案是肯…

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…

【笔记】React-Native Navigation页面导航

/** * 须知:a bare React Native Project(not an Expo managed project) * * React官方文档:https://reactnative.dev/docs/navigation * * 当前文档基于6.x * React Navigation文档:https://reactnavigation.org/docs/getting-started * …

C++ Webserver从零开始:基础知识(七)——多进程编程

前言 在学习操作系统时,我们知道现代计算机往往都是多进程多线程的,多进程和多线程技术能大大提高了CPU的利用率,因此在web服务器的设计中,不可避免地要涉及到多进程多线程技术。 这一章将简要讲解web服务器中的多进程编程&#x…

AI与数字孪生

源自:译文 “人工智能技术与咨询”发布 AI和数字孪生 预测分析:网络安全水晶球 面对不断变化的威胁,提供自适应安全防护 自然语言处理:解码威胁语言 先进技术:人工智能作为数字孪生安全的基础 道德考量 …

关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本

对于值类型b来说,就直接释放了其占用的内存,对于引用类型obj来说,销毁的只是变量obj对堆内存地址 1001 的引用,obj的值 { c: 3 } 依然存在于堆内存中。那么堆内存中的变量如何进行回收呢? V8的垃圾回收策略主要是基于…

git将项目的某次签入遴选(Cherry-Pick)另一个项目

需求&#xff1a;将项目Product&#xff0c;分支feature/platform&#xff0c;签入959294ce6b75ee48c5cb22c46d7398654628a896&#xff0c;遴选到项目BRP&#xff0c;分支dev 第一步&#xff1a;使用原签入生成patch文件&#xff08;git format-patch -1 <commit_hash>&a…

西部数据DX4000数据恢复案例

西部数据DX4000是一款NAS&#xff08;网络附加存储&#xff09;产品&#xff0c;它集成了存储、备份、共享和远程访问企业数据等多种功能。然而&#xff0c;和任何电子设备存在一样通病&#xff0c;DX4000也可能会出现故障&#xff0c;导致数据无法访问。下面是一个客户的西部数…

Python OpenCV实现图片像素区域缩放

Python OpenCV实现图片像素区域缩放 前言项目安装OpenCV和Pillow思路代码编写 前言 遇到一个要将大量图片缩放成统一规格的难题&#xff0c;并且这些图片周围还有很多空白像素&#xff0c;所以用Python实现一下。 项目 安装OpenCV和Pillow pip install opencv-python pip …