大模型时代,程序员如何卷?

最近在看电影《碟中谍7》,该片讲述了特工伊森·亨特尝试与一个被称为智体的全能人工智能作战,其可以即时访问任何在线网络,他和他的团队成员试图找回控制人工智能智体所必需的两部分钥匙并将其摧毁的故事。
在这里插入图片描述
在剧中,智体是一个虚拟反派。人们看不到智体,但电子设备遍布每个角落。影片中,欧美各国的军事、经济系统防火墙被智体轻松攻破,它来去自由。智体以超乎想象的运算能力,站在了网络世界制高点。它可以任意干扰伊森·亨特(汤姆·克鲁斯 饰)行动小组的通讯,肆意侵入小组成员的电脑,即使这些成员是一流的电脑天才也无计可施。人类在网络世界中面对智体,不堪一击。

在这里插入图片描述
在这里插入图片描述
过去,这些只存在电影里的科幻情节,随着大模型的发展,正在进入现实世界。

大模型是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数。大模型的设计目的是为了提高模型的表达能力和预测性能,能够处理更加复杂的任务和数据。大模型在各种领域都有广泛的应用,包括自然语言处理、计算机视觉、语音识别和推荐系统等。大模型通过训练海量数据来学习复杂的模式和特征,具有更强大的泛化能力,可以对未见过的数据做出准确的预测。

ChatGPT 对大模型的解释更为通俗易懂,也更体现出类似人类的归纳和思考能力:大模型本质上是一个使用海量数据训练而成的深度神经网络模型,其巨大的数据和参数规模,实现了智能的涌现,展现出类似人类的智能。

那么,大模型和小模型有什么区别?

小模型通常指参数较少、层数较浅的模型,它们具有轻量级、高效率、易于部署等优点,适用于数据量较小、计算资源有限的场景,例如移动端应用、嵌入式设备、物联网等。

而当模型的训练数据和参数不断扩大,直到达到一定的临界规模后,其表现出了一些未能预测的、更复杂的能力和特性,模型能够从原始训练数据中自动学习并发现新的、更高层次的特征和模式,这种能力被称为“涌现能力”。而具备涌现能力的机器学习模型就被认为是独立意义上的大模型,这也是其和小模型最大意义上的区别。

相比小模型,大模型通常参数较多、层数较深,具有更强的表达能力和更高的准确度,但也需要更多的计算资源和时间来训练和推理,适用于数据量较大、计算资源充足的场景,例如云端计算、高性能计算、人工智能等。

在这里插入图片描述
对于程序员来说,现在不了解大模型,很有可能要被淘汰了。

最近在玩百度的”Baidu Comate智能编码助手“,就发现,未来已来。

在这里插入图片描述
代码生成、注释、对话提问、代码解释,看上去很强,有他,大部分的重复性编码工作都可以快速完成了,生产力直线上升。我直接去官网注册了一个账号,试试水。有需要的小伙伴自取:https://comate.baidu.com/

在这里插入图片描述

下载完插件,重启IDE后,点击右边侧边栏登录。
在这里插入图片描述
登录成功。
在这里插入图片描述
官方介绍说,comate很会coding。我于是找了几道leetcode。

先来一道二分查找。

在这里插入图片描述

对于comate来说,这么简单的题目自然不在话下。
在这里插入图片描述

小小代码,拿下。

在这里插入图片描述

不过这种题目,百度也可以解决。我又找了一道难度高一点的。这是一道某书真题。

小红在刷小x书的时候看到了一颗挂着小红薯的小红树,所以小红也想种一颗小红树挂一些小红薯发小x书。小红有一颗树,每个结点有一个权值,初始时每个节点都是白色。小红每次操作可以选择两个相邻的结点,如果它们都是白色且权值的和是质数,小红就可以选择其中一个节点染红。小红想知道最多可以染红多少个节

AI给出了他的解题思路。
在这里插入图片描述

接下来,让他帮我们实现下代码。下面是AI给出的解答。

在这里插入图片描述
完整代码

import java.util.*;public class Main {static class Node {int val;List<Node> neighbors = new ArrayList<>();boolean isRed = false;Node(int val) {this.val = val;}}static boolean isPrime(int num) {if (num <= 1) return false;for (int i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;}static int maxRedNodes(Node root) {if (root == null) return 0;return dfs(root, null);}static int dfs(Node node, Node parent) {if (node == null) return 0;int maxRed = 0;for (Node neighbor : node.neighbors) {if (neighbor == parent) continue;maxRed += dfs(neighbor, node);if (!node.isRed && !neighbor.isRed && isPrime(node.val + neighbor.val)) {int redBefore = maxRed;node.isRed = true; // Try to paint the node redmaxRed = Math.max(maxRed, 1 + redBefore - dfs(neighbor, node) + dfs(neighbor,node));node.isRed = false; // Backtrackneighbor.isRed = true; // Try to paint the neighbor redmaxRed = Math.max(maxRed, 1 + redBefore - dfs(neighbor, node) + dfs(neighbor,node));neighbor.isRed = false; // Backtrack}}return maxRed;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // Number of nodesMap<Integer, Node> nodes = new HashMap<>();for (int i = 0; i < n; i++) {int val = scanner.nextInt();nodes.put(i + 1, new Node(val)); // Assuming nodes are numbered from 1 to n}for (int i = 0; i < n - 1; i++) {int u = scanner.nextInt();int v = scanner.nextInt();nodes.get(u).neighbors.add(nodes.get(v));nodes.get(v).neighbors.add(nodes.get(u));}System.out.println(maxRedNodes(nodes.get(1))); // Assuming the root is node 1}
}

自测通过
在这里插入图片描述
这既是一个好消息,又是一个坏消息。对码农来说,算法很难,对大模型来说,so easy,那么,程序员的价值何在?

没关系,你还可以搬砖。起码,目前是这样。

测试全部用例,发现上述代码的时间复杂度过高。

在这里插入图片描述
这时候,你可以修改你的提示词,让他更具体。请comate给我们一个性能更优的解法。

在这里插入图片描述
全新解法如下:

import java.util.*;public class RedTree {static class TreeNode {int val;List<TreeNode> children = new ArrayList<>();boolean isRed = false;}static int maxRedNodes = 0;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // 节点数量TreeNode[] nodes = new TreeNode[n + 1];for (int i = 1; i <= n; i++) {nodes[i] = new TreeNode();nodes[i].val = scanner.nextInt(); // 节点权值}for (int i = 1; i < n; i++) {int u = scanner.nextInt();int v = scanner.nextInt();nodes[u].children.add(nodes[v]);nodes[v].children.add(nodes[u]); // 无向边,所以双向添加}scanner.close();dfs(nodes[1], null); // 从节点1开始遍历,假设节点1是根节点System.out.println(maxRedNodes);}public static int dfs(TreeNode node, TreeNode parent) {int redCount = 0;for (TreeNode child : node.children) {if (child == parent) continue; // 避免回到父节点redCount += dfs(child, node); // 递归处理子树}if (parent != null && !node.isRed && !parent.isRed && isPrime(node.val + parent.val)) {// 如果当前节点和父节点都是白色且它们的权值和是质数,则可以选择一个节点染红node.isRed = true; // 选择当前节点染红redCount++; // 增加染红节点计数}maxRedNodes = Math.max(maxRedNodes, redCount); // 更新最大染红节点数return redCount;}public static boolean isPrime(int num) {if (num <= 1) return false;for (int i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;}
}

Comate真牛逼!!!

在这里插入图片描述
大模型还给出了详细的解题思路。

这个问题可以通过深度优先搜索(DFS)或广度优先搜索(BFS)遍历所有可能的染色方案来解决,但考虑到题目中的时间限制和可能的效率问题,我们需要一个更优化的算法。我们可以观察到,如果我们将树转换为以任意节点为根,那么对于任意一对相邻节点,我们总是可以选择其中一个来染色(如果它们的权值和是质数),这给我们提供了一个优化的思路。

我们可以自底向上地处理树,对于每个节点,先处理其所有子树,然后检查当前节点是否可以与其父节点一起被染色。在这个过程中,我们需要记录每个节点为根的子树中最多可以染红多少个节点,以及这个节点是否已经染红。

由于题目没有明确指出树的形状如何输入,我将假设输入的是一个树的边和节点的权值,并通过邻接表来表示树。

甚至贴心的给出了注意事项。
在这里插入图片描述
这简直就是刷算法题的神奇啊!!!

更牛的是,你不懂,还可以要求他给你慢慢解释。

除了算法题以外,小小笔试题他也不在话下。

在这里插入图片描述

就问你能不能吊打面试官?

在这里插入图片描述
除了作为刷题神器,comate最主要的还是帮我们提升工作效率。它可以帮你轻松研读别人的“屎山代码”。甚至帮你写注释、优化代码!

在这里插入图片描述
除此之外,他还能帮你写测试用例。

在这里插入图片描述
再不会用它,你真的会失业的好吗?

在这里插入图片描述
comate下载链接,快拿去:https://comate.baidu.com/

接下来再给小伙伴们总结下,怎么去写提示词。

(1)结构化
首先需要强调的是,并不是所有提示词都要写的这么“复杂”,对于简单的任务可以写的更“随意”一些。通常来说,越是复杂的任务提示词越详细,越是简单的任务提示词越简单。

提示词的本质就是通过语言将模型要做的事情交代清楚,是一种“语言的艺术”,换句话说:提示词写不好说明你语文不好。

想要模型更好地理解你的意图,就需要将提示词“结构化”。这里所说的结构化并不是经典的“金字塔原理”,而是遵循优秀的 Agent 范式。

根据官方材料:总结出来的一个范式。包括概述、过程、依赖和控制四大部分。

概述:在什么背景下,要做一件什么事;可以指明用户或 AI 的角色是什么。
过程:承担什么样的智能,满足什么样的规则,按照什么样的流程。
依赖:使用什么样的工具,用到哪些知识,处理哪些素材?
控制:对模型的处理过程有哪些要求,包括正向和负向的要求。

(2)加分割符
在提示词中合理添加分隔符,可以准确区分指令和待处理的内容,避免模型解读提示词时出现困扰。
常见的分隔符包括:```、— 、=== 等

(3)加示例
有时候,为了让模型更好地理解你的意图避免歧义,可以更精确地控制模型的输出,需要在提示词中给出一些示例。

(4)加要求
我们在使用模型过程中会出现各种 Bad Case,为了引导模型按照我们想要的结果输出,为了规避这些 Bad Case ,可以在提示词中加入要求。

(5)给出步骤
有些相对复杂一点的任务,需要在提示词中给出处理步骤,用来指导模型按照你的意图来输出信息。

(6)用户输入完整性检查
可以在提示词中设定用户必须给出的一些关键信息,如果用户在对话中没有给出,模型可以主动询问用户让用户进行补充,补充完整之后再继续执行。

(7)自带知识库
对于非通用的知识或和常识相违背的知识,大模型可能不理解相关概念,容易产生误解。可以在提示词中给出知识库,让模型更加清楚得理解相关知识,从而,更好地处理任务。

拓展阅读:
AI大神吴恩达教你写提示词:https://zhuanlan.zhihu.com/p/626290417
提示词工程指南:https://www.promptingguide.ai/zh
大模型思维链技术原理:https://www.zhihu.com/tardis/zm/art/629087587?source_id=1003

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

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

相关文章

文旅行业| 某景区导游培养和管理项目成功案例纪实

——整合导游资源并进行统一管理&#xff0c;构建完善的培养与管理机制&#xff0c;发挥景区导游价值 【客户行业】文旅行业&#xff1b;景区&#xff1b;文旅企业 【问题类型】人才培养&#xff1b;人员管理 【客户背景】 南方某5A级景区&#xff0c;作为国内极具代表性和特…

学习使用jQuery将光标移动到textarea的末尾

学习使用jQuery将光标移动到textarea的末尾 代码 代码 $(document).ready(function(){var textarea $(#your-qipa-id); // 替换为你的textarea IDtextarea.focus(); // 将焦点设置到textarea// 获取textarea的值的长度var len textarea.val().length;// 使用setSelectionRan…

【python】python中的argparse模块,教你如何自定义命令行参数

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

intellij idea中build project与build module以及rebuild module的区别与联系

IntelliJ IDEA是一个功能强大的Java集成开发环境(IDE)。它提供了几个与构建相关的操作,包括: Build Project: - 这将构建整个项目,包括其中的所有模块。 - 它将编译所有已修改的源文件,并重新生成输出文件(如.class文件)。 - 这通常用于确保整个项目的代码是最新的,并且可以正…

Openssl X509证书从HexStream中解析

整体思路 从hex 转换成字节流 然后从字节流中进行解析 You have access to the raw certificate in memory. In the case that you have access to the raw encoding of the certificate in memory, you can parse it as follows. This is useful if you have stored raw cer…

【Pip】pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]解决方案

pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED] 大家好 我是寸铁&#x1f44a; 总结了一篇pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 报错 今天在安装第三方包时报错如下: 解决方案 本质上是需要指定信任的镜像…

开启异步线程的方法

1&#xff0c;开启异步线程&#xff0c;在启动类上加注解&#xff1a; 2&#xff0c;自定义线程池&#xff1a; Configuration public class PromotionConfig {Beanpublic Executor generateExchangeCodeExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExec…

搜维尔科技:【案例分享】Xsens用于工业制造艺术创新设计平台

用户名称&#xff1a;北京理工大学 主要产品&#xff1a;Xsens MVN Awinda惯性动作捕捉系统 在设计与艺术学院的某实验室内&#xff0c;通过Xsens惯性动作捕捉&#xff0c;对人体动作进行捕捉&#xff0c;得到人体三维运动数据&#xff0c;将捕到的数据用于后续应用研究。…

蓝桥杯备战9.拼数

P1012 [NOIP1998 提高组] 拼数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题作对了&#xff0c;但是题解看到更好的 我写的史 #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int a[N],h[…

x_t格式介绍

x_t格式 X_T格式&#xff0c;通常被称为Parasolid文件格式&#xff0c;是一种用于3D CAD数据交换的文件格式。Parasolid本身是一个几何建模内核&#xff0c;由Siemens PLM Software开发和维护&#xff0c;广泛应用于许多主流CAD、CAM、CAE系统中&#xff0c;如SolidWorks、Sol…

小心电子合同这个坑:手写签名图片

一、引言 在数字化浪潮的推动下&#xff0c;电子合同因其便捷性和高效性受到广泛应用。然而&#xff0c;在使用电子合同的过程中&#xff0c;一个看似简单的签名方式——手写签名图片&#xff0c;却可能带来意想不到的法律风险。本文将详细解析这一陷阱&#xff0c;并为大家提…

单播、组播、广播

​​​​​​ 概念 单播&#xff08;Unicast&#xff09; 单播是网络中最常用、最基本的通信方式。在单播通信中&#xff0c;数据包从一个节点发送到特定的另一个节点。换句话说&#xff0c;发送端和接收端之间建立一对一的连接&#xff0c;然后进行数据传输。 例如&#x…

PMP证书好考吗?

PMP新考纲还颠覆了自己旧有的五大知识领域&#xff0c;将原来的五大过程组整合成新领域中过程的一部分&#xff0c;提出了新的商业环境、过程、人员三大知识领域。 最关键的是&#xff0c;在新考纲中明确写到&#xff1a; 重要注意事项。通过工作任务分析开展的研究证实&…

将H264文件封装为mp4文件的三种方法(三种库)

​ 1、使用MP4v2库 前提&#xff1a;交叉编译好RV1106的工具链 &#xff08;1&#xff09;下载路径&#xff1a;MP4v2 | mp4v2 源码&#xff08;2&#xff09;解压后修改CMakeLists.txtoption(BUILD_UTILS "Build MP4v2 auxiliary tools" OFF)&#xff08;3&#x…

PX4FMU和PX4IO最底层启动过程分析(上)

PX4FMU和PX4IO最底层启动过程分析&#xff08;上&#xff09; 主处理器和协处理器的固件烧写和运行过程 PX4FMU&#xff1a;各种传感器数据读取、姿态解算、PWM控制量的计算、与PX4IO通信。负责飞控最主要的工作。 PX4IO&#xff08;STM32F103&#xff09;&#xff1a;为PIXHA…

大模型面试常考知识点2

文章目录 1. LLM推理attention优化技术KV CachePageAttention显存优化MHA\GQA\MQA优化技术FlashAttention优化技术稀疏Attention1. Atrous Self Attention2. Local Self Attention3. Sparse Self Attention 2. LLM数据处理关键去重多样性保证构造扩充数据充分利用数据 参考文献…

Vue Router activated deactivated 路由守卫

在Vue.js应用程序中&#xff0c;Vue Router是一个重要的库&#xff0c;用于管理应用程序的路由。Vue Router提供了一些路由守卫&#xff0c;这些守卫允许我们在导航过程中执行一些操作。其中&#xff0c;activated和deactivated路由守卫是在路由切换时触发的两个关键守卫。本文…

【电路笔记】-无源高通滤波器

无源高通滤波器 文章目录 无源高通滤波器1、概述2、一阶高通滤波器的频率响应3、高通滤波器示例4、二阶高通滤波器5、RC 差异化因素高通滤波器与低通滤波器电路完全相反,因为这两个组件已互换,滤波器输出信号现在从电阻器两端获取。 1、概述 由于低通滤波器只允许低于其截止…

Shell编程之循环语句

目录 1.for循环语句&#xff08;遍历循环&#xff09; 1.1 for语句的结构 1.2 for语句的执行流程 1.3 for语句应用示例 1.4 echo命令参数 2.while循环语句 2.1 while语句应用示例 2.2 通过while循环读取行内容 3.until 4.双重循环 4.1 双重循环案例 4.2 循环的退出 …

从零开始详解OpenCV条形码区域分割

前言 在识别二维码之前&#xff0c;首先要划分出二维码的区域&#xff0c;在本篇文章中将从零开始实现二维码分割的功能&#xff0c;并详细介绍用到的方法。 我们需要处理的图像如下&#xff1a; 完整代码 首先我们先放出完整代码&#xff0c;然后根据整个分割流程介绍用到…