使用AI给编程赋能

传送门:https://www.bilibili.com/video/BV1pf421B71v?p=23&vd_source=092ecb16e8482a7243d0f8f7718c31a2

1. AIGC


AI(Artificial Intelligence):人工智能,是计算机科学体系下的一个学科,是指通过计算机系统模拟人类智力的一种技术。

简单地说,AI是一种模拟人类智能的技术,它通过机器学习、深度学习等算法,使计算机具备对数据分析、理解、推理和决策的能力,来帮助我们解决各种问题。

我们可以把“人工智能”想象成一个聪明的机器人,它不仅会自动学习,还能像人的大脑一样思考和决策。在常生活中,它可以帮助我们解决诸多问题,例如在出门前预测当天的天气状况、通过分析交通路况推荐汽车的最佳行驶路线等。

AIGC(AI Generated Content):AIGC是AI领域的一个应用分支,专注于利用AI技术自动生成内容,包括文本,代码,图片,音频,视频。

image-20240720162449081

AI大模型:通常指的是具有大量参数的深度学习模型,经过大量数据训练,具备复杂计算能力的人工智能系统,它们能够执行多种高级任务,其中包括内容生成。

image-20240720162507640

常见的通用大模型产品:

国家对话产品大模型链接
美国OpenAI ChatGPTGPT-3.5、GPT-4https://chat.openai.com/
美国Microsoft CopilotGPT-4 和未知https://copilot.microsoft.com/
美国Google BardGeminihttps://bard.google.com/
国产百度文心一言文心4.0https://yiyan.baidu.com/
中国讯飞星火星火3.5https://xinghuo.xfyun.cn/
中国智谱清言GLM-4https://chatglm.cn/
中国月之暗面 Kimi ChatMoonshothttps://kimi.moonshot.cn/
中国MiniMax星野abab6https://www.xingyeai.com/
中国通义干问Qwen-Maxhttps://tongyi.aliyun.com/

2. 什么是Prompt?


Prompt(提示词):是我们对大语言模型提出的问题。

举一个最简单的例子,很多同学在第一次使用AI时,都会问AI"你是谁","你是谁"这个问题便是prompt。

image-20240720162934826


为什么学?

在与AI交流时,我们常常发现直接提问可能得不到满意的答案。

但如果我们换一种方式提问,或者提供一些额外的上下文信息,AI的表现就会大大提升。

image-20240720163004865

同一个问题使用不同的prompt可能会获得不同的答案,怎么调教出一个聪明的AI助手呢?

这时候,提示工程就派上用场了。通过精心设计的提示,我们可以引导AI模型,让它的输出更加准确、相关和有用。


3. 什么是提示工程?


提示工程(Prompt Engineering)也被称为上下文提示,它涉及到设计和优化输入文本,也就是Prompt,来引导AI模型生成预期的输出。

简单来说,就像是给AI出一个好问题(模板),让它给我们一个满意的答案。

image-20240720163038028


4. Prompt的组成


  • 角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,[实践证明其对输出正确性有帮助]
  • 输入:任务的输入信息;在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、Java)

先定义角色,其实就是在开头把问题域收窄,减少二义性。

示例:

角色:你是一位专业的博客作者。指示:撰写一篇关于最新AI技术发展的文章。上下文:文章应该涵盖AI技术的当前状态和未来趋势。例子:可以引用最近的AI技术突破和行业专家的见解。输入:当前AI技术的相关信息和数据。输出:一篇结构清晰、观点鲜明的文章草稿。
角色:你是一位资深的Java开发工程师。指示:编写一个Java函数,该函数接收两个整数参数,并返回它们的和。上下文:这个函数将被用于一个简单的数学应用程序,该程序帮助学生练习基本的算术运算。例子:如果你调用函数 `addNumbers(3, 5)`,它应该返回 `8`。输入:两个整数参数,分别为 `int a` 和 `int b`。输出:返回这两个整数的和,类型为 `int`。

5. 常见的编程相关的Prompt


5.1 表结构生成

你是一个软件工程师,帮我生成MySQL的表结构
需求如下:1,课程管理表,表名tb_course,字段有主键id、课程编码、课程学科、课程名称、课程价格、适用人群、课程介绍
其他要求:1,每个表中都有创建时间(create_time)、修改时间(date_time)、创建人(create_by)、修改人(update_by)、备注(remark)这些字段2,每个表的主键都是自增的3,课程价格是整型、课程编码是字符串4,请为每个字段都添加上comment5,帮我给生成的表中插入一些IT课程示例数据课程学科:Java、人工智能、大数据适用人群:小白学员、中级程序员

5.2 生成数据库说明文档

你是一个软件工程师,现在要根据数据库的sql脚本,编写数据库说明文档,sql脚本如下:
CREATE TABLE `tb_course` (`id` INT AUTO_INCREMENT COMMENT '主键ID',`course_code` VARCHAR(255) NOT NULL COMMENT '课程编码',`course_subject` VARCHAR(100) NOT NULL COMMENT '课程学科',`course_name` VARCHAR(255) NOT NULL COMMENT '课程名称',`course_price` INT COMMENT '课程价格',`target_audience` VARCHAR(100) COMMENT '适用人群',`course_introduction` TEXT COMMENT '课程介绍',`create_time` DATETIME COMMENT '创建时间',`update_time` DATETIME COMMENT '修改时间',`create_by` VARCHAR(64) COMMENT '创建人',`update_by` VARCHAR(64) COMMENT '修改人',`remark` VARCHAR(255) COMMENT '备注',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程管理表';输出要求是:1,每个表以及每个表的字段都要详细说明,包括,字段名称、类型、作用2,使用markdown的输出格式,字段的描述需要使用表格展示3,如果表之间有关系,需要描述清楚表之间的关系

5.3 生成代码

代码生成算是比较常规的方案,用的也比较多,分为了几种情况

  • 给出表生成代码(项目中常见)
    • 给出表结构的ddl,可以输出这个表的增删改查的所有代码
    • 给出表结构的dll,可以输出增删改查的接口文档
  • 补全代码
    • 例1-给出实体类,帮助编写getter、setter、toString、构造方法等等
    • 例2-给出一个controller,帮助编写swagger注解等
  • 提取结构(无含金量,费时间的编程)
    • 例1-根据接口文档提取dto类或者vo类

5.4 生成代码流程图

有一些比较复杂的业务流程,往往需要画出流程图,现在就可以使用ai协助我们画流程图

你是一个软件工程师,为了方便理解代码执行流程,需要给出代码执行的流程图,代码如下:// 创建工单@Transactional@Overridepublic int insertTaskDto(TaskDto taskDto) {//1. 查询售货机是否存在VendingMachine vm = vendingMachineService.selectVendingMachineByInnerCode(taskDto.getInnerCode());if (vm == null) {throw new ServiceException("设备不存在");}//2. 校验售货机状态与工单类型是否相符checkCreateTask(vm.getVmStatus(), taskDto.getProductTypeId());//3. 校验这台设备是否有未完成的同类型工单,如果存在则不能创建hasTask(taskDto.getInnerCode(), taskDto.getProductTypeId());//4. 校验员工是否存在Emp emp = empService.selectEmpById(taskDto.getUserId());if (emp == null) {throw new ServiceException("员工不存在");}// 5. 校验非同区域下的工作人员不能接受工单if (emp.getRegionId() != vm.getRegionId()) {throw new ServiceException("非同区域下的工作人员不能接受工单");}//6. 保存工单信息Task task = new Task();BeanUtil.copyProperties(taskDto, task);// 属性赋值task.setCreateTime(DateUtils.getNowDate());// 创建时间task.setTaskCode(generateTaskCode());// 工单编号 202405150001task.setTaskStatus(DkdContants.TASK_STATUS_CREATE);// 创建工单task.setAddr(vm.getAddr());task.setRegionId(vm.getRegionId());task.setUserName(emp.getUserName());int taskResult = taskMapper.insertTask(task);//7. 如果是补货工单,向工单明细表插入记录if (task.getProductTypeId() == DkdContants.TASK_TYPE_SUPPLY) {if (CollUtil.isEmpty(taskDto.getDetails())) {throw new ServiceException("补货工单明细不能为空");}List<TaskDetails> taskDetailsList = taskDto.getDetails().stream().map(details -> {TaskDetails taskDetails = BeanUtil.copyProperties(details, TaskDetails.class);taskDetails.setTaskId(task.getTaskId());return taskDetails;}).collect(Collectors.toList());taskDetailsService.insertBatch(taskDetailsList);}return taskResult;
}输出:请使用mermaid语言来描述这个方法的流程
失败
成功
查询售货机
售货机不存在?
抛出异常: 设备不存在
校验售货机状态与工单类型
校验失败?
抛出异常
检查未完成同类型工单
存在未完成同类型工单?
抛出异常
查询员工
员工不存在?
抛出异常: 员工不存在
校验员工区域与售货机区域是否一致
不一致?
抛出异常: 非同区域工作人员不能接受工单
保存工单信息
保存成功?
处理保存失败
工单类型为补货?
处理补货工单明细
补货明细处理结果?
抛出异常: 补货工单明细不能为空
结束

5.5 代码优化

你现在充当一名高级Java开发工程师,请指出下面代码可优化的地方以及优化后的代码,并为优化后的代码添加注释//此处引入你要优化的代码  

扩展:https://blog.csdn.net/Angelina_Jolie/article/details/139147709


6. 代码副驾


IDEA插件篇:

  • 通义灵码
  • 文心快码
  • iFlyCode(科大讯飞)
  • Github Copilot
  • CodeGeeX
  • TalkX
  • Tabnine(前身是Codota)
  • Bito
  • Codeium
  • JetBrains AI Assistant

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

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

相关文章

c# 开发AutoCAD扩展

在C#中开发AutoCAD扩展涉及使用AutoCAD的.NET API&#xff0c; 利用AutoCAD的功能并创建自定义命令、对话框、块、图层和其他图形元素。以下是一些关键步骤和概念&#xff0c;可以帮助你开始使用C#开发AutoCAD扩展&#xff1a; 准备开发环境 安装AutoCAD&#xff1a;确保你有一…

【Linux】线程互斥和同步

目录 线程互斥 相关概念 互斥量mutex 互斥量的接口 初始化互斥量 销毁互斥量 互斥量加锁/解锁 可重入VS线程安全 概念 可重入与线程安全的联系 可重入与线程安全的区别 死锁 死锁的四个必要条件 避免死锁 避免死锁的算法 线程同步 条件变量 条件变量函数 初始…

语义分割——为什么单通道8bit灰度图像能显示多种色块???

目录 一、问题二、解答2.1 标签图的实际存储格式2.2 标签图的显示颜色2.3 颜色映射示例 三、应用颜色映射3.1 OpenCV显示标签图3.2 Matplotlib显示标签图 四、总结 一、问题 大家在做语义分割时不知道有没有这样的疑惑&#xff0c;使用打标签工具后&#xff0c;标签图是单通道…

项目收获总结--大数据量存储架构设计方案

项目收获总结--大数据量存储架构设计方案 一、背景二、数据存储层技术选型2.1 MySQL2.2 MongoDB2.3 HBase2.4 HBaseElasticSearch 三、HBaseElasticSearch基本原理3.1 前置考虑3.2 HBaseElasticSearch优点3.3 HBaseElasticSearch缺点 四、HBaseElasticSearch数据一致性架构4.1 …

大语言模型-Transformer-Attention Is All You Need

一、背景信息&#xff1a; Transformer是一种由谷歌在2017年提出的深度学习模型。 主要用于自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;特别是序列到序列&#xff08;Sequence-to-Sequence&#xff09;的学习问题&#xff0c;如机器翻译、文本生成等。Transfor…

【UE5】可反射的射线检测

目录 效果 步骤 一、准备射线 二、生成第一次反射后的射线 三、多次反射 四、通过循环进行多次反射 效果 步骤 一、准备射线 1. 新建一个工程&#xff0c;添加一个俯视角游戏资源包 2. 双击打开俯视角游戏地图 删除大纲中的后期处理体积使得地图可以正常显示 3. 添加一…

SAP批量报工源码

SAP批量报工源码,适用于工序少的情景。 *&---------------------------------------------------------------------* *& Report ZPPR106 *& *&---------------------------------------------------------------------* *& *& *&--------------…

网络编程中的TCP和UDP

什么是TCP协议 TCP( Transmission control protocol )即传输控制协议&#xff0c;是一种面向连接、可靠的数据传输协议&#xff0c;它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。 面向连接 &#xff1a;数据传输之前客户端和服务器端必须建立连…

Aouth2单点登录

信息来源B站 不改bug早点睡&#xff0c;北冥 时序图 -----------------------------总结描述 总体流程 浏览器 - 系统1 - 系统2 - 认证中心(SSO) 访问系统1 浏览器&#xff0c;访问系统1&#xff0c;询问认证中心是否登录 未登录&#xff0c;重定向一个登录页面返回给浏…

(二)原生js案例之数码时钟计时

原生js实现的数字时间上下切换显示时间的效果&#xff0c;有参考相关设计&#xff0c;思路比较难&#xff0c;代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…

光盘防水嘛 ? DVD+R 刻录光盘泡水实验

首发日期 2024-07-20, 以下为原文内容: 同志们好, 欢迎来到 胖喵穷人实验室 ! 这里专注于 低成本, 低难度, 低风险 的 “三低” 小实验. 胖喵穷人实验室 (PM-PLab-E)正式名称: 紫腹巨蚊 (Toxorhynchites gravelyi) 系列穷人 (Poor people) 实验室风险警告: 低风险并不是零风险…

人工智能与语音识别:技术进步与应用前景

引言 人工智能&#xff08;AI&#xff09;作为当今科技进步的核心驱动力&#xff0c;正在各个领域展现其变革力量。其中&#xff0c;语音识别技术作为人工智能的重要应用之一&#xff0c;已经深入到我们的日常生活和工作中。从智能助手如Siri、Google Assistant&#xff0c;到智…

kubernetes k8s Deployment 控制器配置管理 k8s 红蓝部署 金丝雀发布

目录 1、Deployment控制器&#xff1a;概念、原理解读 1.1 Deployment概述 1.2 Deployment工作原理&#xff1a;如何管理rs和Pod&#xff1f; 2、Deployment资源清单文件编写技巧 3、Deployment使用案例&#xff1a;创建一个web站点 4、Deployment管理pod&#xff1a;扩…

科研绘图系列:R语言雨云图(Raincloud plot)

介绍 雨云图(Raincloud plot)是一种数据可视化工具,它结合了多种数据展示方式,旨在提供对数据集的全面了解。雨云图通常包括以下几个部分: 密度图(Density plot):表示数据的分布情况,密度图的曲线可以展示数据在不同数值区间的密度。箱线图(Box plot):显示数据的中…

模型剪枝入门

一、定义 1.定义 2. 案例1 3. 全局剪枝案例 4. 全局剪枝案例 5. 自定义剪枝 6. 特定网络剪枝 7. 多参数模块剪枝 8. torch.nn.utils.prune 解读 二、实现 定义 接口&#xff1a; import torch.nn.utils.prune as prune案例1 import torch.nn as nn import torch.nn.utils.…

全部由1组成的子矩形的数量

题目描述&#xff1a; 给定一个二维数组matrix&#xff0c;其中的值不是0就是1&#xff0c;返回全部由1组成的子矩阵的数量。 way&#xff1a; 假设我们遍历矩形的每一行&#xff0c;以当前遍历到的行作为地基&#xff0c;去看这一行的直方图&#xff08;直方图介绍 ->直方…

10.3.3 QGIS点类型注释(Annotation)的应用与二次开发实现

文章目录 前言注释(Annotation)图层QGis中的注释(Annotation)图层二次开发实现线段类型注释(Annotation)点类型Item 总结 前言 介绍注释(Annotation)图层在QGis中的使用以及二次开发的实现说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 注释(Annotation)…

【Unity实战100例】Unity声音可视化多种显示效果

目录 一、技术背景 二、界面搭建 三、 实现 UIAudioVisualizer 基类 四、实现 AudioSampler 类 五、实现 IAudioSample 接口 六、实现MusicAudioVisualizer 七、实现 MicrophoneAudioManager 类 八、实现 MicrophoneAudioVisualizer 类 九、源码下载 Unity声音可视化四…

代码随想录算法训练营第九天 |LeetCode151.翻转字符串里的单词 卡码网:55.右旋转字符串

代码随想录算法训练营 Day 9 代码随想录算法训练营第九天 |LeetCode151.翻转字符串里的单词 卡码网&#xff1a;55.右旋转字符串 目录 代码随想录算法训练营前言LeetCode151.翻转字符串里的单词卡码网&#xff1a;55.右旋转字符串 一、LeetCode151.翻转字符串里的单词1.题目链…

laravel为Model设置全局作用域

如果一个项目中存在这么一个sql条件在任何情况下或大多数情况都会被使用&#xff0c;同时很容易被开发者遗忘&#xff0c;那么就非常适用于今天要提到的这个功能&#xff0c;Eloquent\Model的全局作用域。 首先看一个示例&#xff0c;有个数据表&#xff0c;结构如下&#xff1…