听说你把 ChatGPT 当成搜索引擎用了?

未经作者(微信ID:Byte-Flow)允许,禁止转载
文章首发于公众号:字节流动

图片

看到一些读者朋友把 ChatGPT 当成搜索引擎使用了,当然这样使用也没有问题,只是并不能发挥出 ChatGPT 背后大型语言模型(LLM)的优势,似乎有一种在“拿斧头切菜”的感觉。

其实 ChatGPT 正确的使用姿势需要结合着清晰、明确的 Prompt ,那 Prompt 又是什么?

Prompt 翻译为“提示词”,它通常是一段文本或问题,用于引导语言模型生成相应的文本回复或完成某项任务。

通常,当用户输入一个 Prompt 时,ChatGPT 会根据这个 Prompt 生成一段回复文本。

这个回复文本的内容和质量取决于模型的训练数据、模型的结构和参数、以及输入 Prompt 的质量和准确性

一个好的 Prompt 应该能够清晰地表达用户的意图和需求,同时包含足够的上下文信息,以便模型能够生成准确和有意义的回复。

一个好的 Prompt 至少要包含三个要素:

任务: 明确而简洁地陈述 Prompt 要求模型生成的内容;
指令: 模型在生成文本时应遵循的指令;
角色: 模型在生成文本时应扮演的角色。

举个简单的例子:

Prompt1:请写一篇以环保为主题的文章;

Prompt2:你是一名语文教师,请写一篇以环保为主题 800 字左右的文章。

我们可以对比下这两个提示词哪一个更加完整,更能清晰地表达用户的意图和需求?

很明显,Prompt2 包含了上述三个要素:

任务:写文章;
指令:以环保为主题 800 字左右;
角色:语文教师。

除了上述三个要素之外,在设计 Prompt 时,我结合自己的经验总结了下面几点给你参考:

  • 提供足够的上下文:你提出这个问题的背景要尽量交代清楚,比如有一些读者在技术群里提问时完全不交代背景,还期望别人帮他解决问题;

  • 同一个对话中要避免频繁切换角色:同一个对话保持上下文的一致性,比如你突然向一个程序员询问医疗方面的问题,很可能得不到最优的回答;

  • 避免使使用激烈或具有强烈情感色彩的词语:使用激烈言辞的 Prompt 可能导致生成的文本更加情感化、强烈或争议性(官方解释)。

现在我们基于上面的几个要素来设计一个 Prompt , 让 ChatGPT 帮我们阅读一段代码:

你是一名非常有经验的程序员,对各种编程语言都非常熟练。我将提供给你一段代码,你需要在行内为这段代码添加注释,注释使用中文,并在最后解读这段代码,比如具体完成什么任务,思路是什么。如果代码有错误,你需要指出,并且给出改正的意见。回答中有包含代码的部分,请以代码段的格式显示。我的第一段代码如下:

void CoordSystemSample::UpdateMVPMatrix(glm::mat4 &mvpMatrix, int angleX, int angleY, float ratio)
{// Ensure angles are within the range [0, 359]angleX = angleX % 360;angleY = angleY % 360;// Convert angles to radiansfloat radiansX = static_cast<float>(MATH_PI / 180.0f * angleX);float radiansY = static_cast<float>(MATH_PI / 180.0f * angleY);// Create a perspective projection matrixglm::mat4 Projection = glm::perspective(45.0f, ratio, 0.1f, 100.f);// Define the view matrix using glm::lookAtglm::mat4 View = glm::lookAt(glm::vec3(0, 0, 4),  // Camera is at (0,0,1), in World Spaceglm::vec3(0, 0, 0),  // and looks at the originglm::vec3(0, 1, 0)   // Head is up (set to 0,-1,0 to look upside-down));// Create a model matrix with scaling, rotation, and translationglm::mat4 Model = glm::mat4(1.0f);Model = glm::scale(Model, glm::vec3(m_ScaleX, m_ScaleY, 1.0f));Model = glm::rotate(Model, radiansX, glm::vec3(1.0f, 0.0f, 0.0f));Model = glm::rotate(Model, radiansY, glm::vec3(0.0f, 1.0f, 0.0f));Model = glm::translate(Model, glm::vec3(0.0f, 0.0f, 0.0f));// Calculate the final MVP matrix by multiplying Projection, View, and Model matricesmvpMatrix = Projection * View * Model;
}

ChatGPT 回答:


void CoordSystemSample::UpdateMVPMatrix(glm::mat4 &mvpMatrix, int angleX, int angleY, float ratio)
{// 确保角度在 [0, 359] 范围内angleX = angleX % 360;angleY = angleY % 360;// 将角度转换为弧度float radiansX = static_cast<float>(MATH_PI / 180.0f * angleX);float radiansY = static_cast<float>(MATH_PI / 180.0f * angleY);// 创建透视投影矩阵glm::mat4 Projection = glm::perspective(45.0f, ratio, 0.1f, 100.f);// 使用 glm::lookAt 定义视图矩阵glm::mat4 View = glm::lookAt(glm::vec3(0, 0, 4),  // 相机位置在 (0,0,1),在世界坐标系中glm::vec3(0, 0, 0),  // 朝向原点glm::vec3(0, 1, 0)   // 头部朝上 (设置为 0,-1,0 以倒置视图));// 使用缩放、旋转和平移变换矩阵创建模型矩阵glm::mat4 Model = glm::mat4(1.0f);Model = glm::scale(Model, glm::vec3(m_ScaleX, m_ScaleY, 1.0f));Model = glm::rotate(Model, radiansX, glm::vec3(1.0f, 0.0f, 0.0f));Model = glm::rotate(Model, radiansY, glm::vec3(0.0f, 1.0f, 0.0f));Model = glm::translate(Model, glm::vec3(0.0f, 0.0f, 0.0f));// 将投影矩阵、视图矩阵和模型矩阵相乘,得到最终的 MVP 矩阵mvpMatrix = Projection * View * Model;
}

解读:

这段代码定义了一个名为CoordSystemSample的类的成员函数 UpdateMVPMatrix,该函数用于更新一个传入的 glm::mat4 类型的矩阵mvpMatrix,以实现模型视图投影(MVP)矩阵的计算。

具体而言,函数接受三个参数:angleX 和 angleY 表示绕 X 轴和 Y 轴的旋转角度(以度为单位),ratio 表示投影矩阵的宽高比。

在函数内部,首先确保角度在 [0, 359] 的范围内,然后将角度转换为弧度。接着,创建透视投影矩阵Projection 和视图矩阵 View,其中视图矩阵使用 glm::lookAt 函数定义了一个相机位置在 (0,0,4),朝向原点,上方朝向 y 轴正方向的视图。

然后,通过组合缩放、旋转和平移的变换矩阵,构建了模型矩阵Model。最后,将投影矩阵、视图矩阵和模型矩阵相乘,得到最终的 MVP 矩阵,存储在传入的 mvpMatrix中。


从整体看,ChatGPT 这个回答水平已经可以了。

到这里,估计会有读者觉得自己设计 Prompt 竟然要考虑那么多细节,感觉有点麻烦。

没有问题,其实一些生活中常用的 Prompt 模版早已经有人设计好并共享出来了,直接复制粘贴拿过来用就好了。

图片

推荐网站:https://prompts.chat/

图片

网站搜集了很多种类的 Prompt 模版,支持在线编辑和复制,使用起来非常方便。

关于 ChatGPT 的高效使用,你有什么心得不妨也分享一下吧。

技术交流

技术交流群/职场困惑解答,可以添加我的微信:Byte-Flow

联系我

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

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

相关文章

​ 云计算的尽头是轻量应用服务器?带你了解亚马逊Lightsail的卓越优势

很多小伙伴可能都在好奇&#xff0c;轻量应用服务器有什么特点&#xff1f;为什么相较于普通的云服务器&#xff0c;很多用户现在都更青睐于轻量应用服务器?这个“轻”就是它独特的优势所在。轻量应用服务器以其“开箱即用、应用优质、轻松上手、投入划算、运维便捷和稳定可靠…

School training competition ( Second )

A. Medium Number 链接 : Problem - 1760A - Codeforces 就是求三个数的中位数 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std; typedef long long LL; const int N 2e510;inline void …

name 属性:提高 Vue 应用可维护性的关键

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

JavaSE 知识点总结

路在脚下&#xff0c;行则将至 目录 1. 初始Java 1.1 Java之父——高斯林 1.2 一次编译&#xff0c;到处运行 1.3 注释 2. 数据结构与变量 2.1 数据类型 2.2 变量 2.3 常量 3. 运算符 3.1 逻辑与 && 3.2 逻辑 || 3.3 逻辑非 ! 3.4 特殊的位运算符(C语言没有)…

javascript 运算符

javascript 运算符 目录 javascript 运算符 一、算术运算符 1、自增运算符 2、自减运算符 二、比较运算符 三、赋值运算符 四、逻辑运算符 五、条件运算符 疑难解答&#xff1a; 这一节&#xff0c;我们来介绍JavaScript的运算符。运算符是完成一系列操作的符号&…

基于HTML+CSS+JavaScript的登录注册界面设计

一、界面效果: 二、HTML代码: 登录注册html: 登录成功html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <h1>登录成功!</h1> </body> <…

线程基本方法

1。设置线程名 继承Thread类的线程&#xff0c;可以直接使用.setName()方法&#xff0c;设置线程名。也可以使用构造方法&#xff0c;需要注意java默认不继承构造方法&#xff0c;所以需要自己调用下父类的构造方法。 public class Demo {public static void main(String[…

powershell获取微软o365 21v日志

0x00 背景 o365 21v为o365的大陆版本&#xff0c;主要给国内用户使用。微软提供了powershell工具和接口获取云上日志。微软o365国内的代理目前是世纪互联。本文介绍如何用powershell和配置证书拉取云上日志。 0x01 实践 第一步&#xff0c;ip权限开通&#xff1a; 由世纪互联…

CGAN原理讲解与源码

1.CGAN原理 生成器&#xff0c;输入的是c和z&#xff0c;z是随机噪声&#xff0c;c是条件&#xff0c;对应MNIST数据集&#xff0c;要求规定生成数字是几。 输出是生成的虚假图片。 判别器的输入是 1.生成器输出的虚假图片x; 2.对应图片的标签c 来自真实数据集&#xff0c;且…

什么是高性能计算岗位

最近有小伙伴咨询什么是高性能计算岗位。 1、什么是高性能计算 高性能计算&#xff0c;在很多招聘信息中也会被标注为 HPC&#xff0c;是 High Performance Computing 的缩写。 目前很多 AI 公司或者从事 AI 的部门招聘都有这个岗位需求&#xff0c;我从某聘上截取了几个有代…

Shopee买家号想要多开怎么解决?

拥有多个Shopee买家号有很多优势。多账号可以帮助卖家获得更多流量、还能帮助提供关键词排名、提高销量等。 但是要管理多个Shopee买家号并非易事。面对不同账号的登录、注销和切换&#xff0c;可能会花费大量的时间和精力。而且&#xff0c;Shopee平台对于使用同一IP地址同时登…

Android Termux SFTP如何实现远程文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…