AI 时代,提示词便是生产力_learn prompting-程序员宅基地

技术标签: 工具使用  java  AI 助力软件开发  人工智能  开发语言  

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。

热门文章推荐

一、背景

2023 年可谓是 AI 元年,随着 GPT 的发布,人工智能正在影响着人们的生活。甚至有些人会焦虑是否自己将会被取代而失业。
据 36 氪,如何看待 AI 代替人类工作
李彦宏表示,不管有多少工作被替代,这只是整个图景的一部分,另外一部分是,存在我们现在甚至无法想象的更多新机会。做一个大胆预测,十年以后,全世界有50%工作会是提示词工程(prompt engineering),不会写提示词(prompt)的人会被淘汰。

人工智能时代提示词.png

现在很多人都已经开始使用人工智能工具,如 ChatGPT 、 Bard、文心一言等聊天机器人,还有 New Bing 、Phind、You.com 等人工智能搜索引擎,还有 Notion AI、印象 AI 等人工智能笔记软件,还有其他诸多类型的工具。
使用人工智能工具的人比没使用工具的人会有很大优势,不同的人工智能工具对同一个问题的理解程度不同,同一款人工智能工具,不同的提问方式得到的答案也会有很大差异,因此提示词至关重要

二、反向示例

有些同学请教同事,在一些技术群里提问时,提出的问题都是模糊的,人都很难理解,更别说人工智能了。

2.1 示例一

比如“我想实现用户在某个网页提交时获取用户提交的信息,怎么实现?”
某个网页是哪个网页?是你开发的还是别人开发的?
获取信息的目的是什么?

2.2 示例二

比如“帮我给某个 Dao 类写一个缓存”,然后期待它能够写完美的实现自己的想法,然后大失所望,说人工智能也不咋地啊。
大哥,你这描述人都听不懂啊。
某个 Dao 是哪个 Dao?是不是可以给举个例子,比如有一个 StudentDao,其中包括增删改查方法。
写一个缓存是指啥?使用什么编程语言,使用哪个缓存框架?是内存缓存还是分布式缓存?是不是可以限定清楚是 Java 语言,使用 Guava框架。

三、什么是好的提示词

Prompt 是指对模型提出的问题进行描述和约束的文本片段,可以包括问题的主题、范围和关键词等信息。
image.png

好的 Prompt 应该具备以下几个特点:
清晰具体:好的 Prompt 应该简单明了,避免使用复杂或模糊的语言。Prompt 应该越具体越好,避免过于广泛或开放式的问题。例如,如果我们想让 ChatGPT 回答策略模式的使用场景,我们可以使用 “请描述下策略模式的使用场景” 而不是 “请描述下策略模式”。
Xnip2023-04-01_23-25-30.png

重点明确:好的 Prompt 应该有明确的目的,避免过于广泛或开放式的问题。Prompt 应该能够让 ChatGPT 理解问题的背景和范围,从而更好地回答问题。 有可能,提供可选项或问题列表供 AI 选择回答。对于有多个可能回答的 prompts,提供可选项或问题列表可以帮助 AI 选择最恰当的回答方式。但不要提供太多可选项,以免导致 AI 无法决定。 例如,我们可以使用 “请列举出可以提高代码拓展性的设计模式” 而不是 “请告诉我几个设计模式”。
Xnip2023-04-01_23-23-34.png

充分详尽:好的 Prompt 应该包含足够的信息,以便 ChatGPT 能够理解问题的背景和范围。例如,如果我们想让 ChatGPT 回答关于狗的健康问题,我们可以使用 “请描述下策略模式的使用场景,并给出 Java 语言的示例代码” 而不是 “告诉我一些策略模式的信息”。
Xnip2023-04-01_23-22-40.png

与任务相关:好的 Prompt 应该与任务相关,能够引导 ChatGPT 完成特定的任务。例如,如果我们想要 ChatGPT 回答某个特定的问题,我们可以将问题直接作为 Prompt,以确保 ChatGPT 能够理解任务要求。

语言上下文:好的 Prompt 应该包含一些语言上下文和限制条件,必要的背景信息和前提条件,以帮助 ChatGPT 更好地理解问题。例如,我们在上面的聊天中要求 ChatGPT 给我们准备一篇描写包装器模式的文章大纲,我们可以使用 “请根据上面的大纲帮我写一个草稿”,这样 ChatGPT 更容易理解问题。
Xnip2023-04-01_14-56-06.png
多样性:好的 Prompt 应该具备一定的多样性,不仅可以满足不同的需求和场景,还可以帮助 ChatGPT 更好地理解和生成不同类型的回答。例如,我们可以使用不同类型的 Prompt,例如填空式、选择题或开放式问题,以获得更丰富和多样化的回答。

总之,好的 Prompt 应该具备清晰简洁、重点明确、充分详尽、与任务相关、语言上下文和多样性等特点,这样才能帮助 ChatGPT 更好地理解问题和生成准确有用的回答。

四、经验

4.1 根据 AI 的表现调整 prompts

你可以根据 AI 的表现来调整和改进你给出的 prompts。找出哪些 prompts 使 AI 回答成功, 哪些则需要改进。适当调整 prompts 可以促进更好的互动体验。

另外,有时候不要期待一次提问就一定可以得到想要的答案,可以分步骤提问
比如想写一篇文章,可以先提问让 AI 给你写出一个大纲;如果大纲不符合你的要求,你可以再次提问让它修改大纲;大纲修改好之后,再让 AI 给你写出草稿;如果草稿不满意可以再描述自己的想法让它再次修改。

4.2 中文不满足时可以翻译成英文提问

现在很多大语言模型的语料中文占比较少,使用中文提问时有些模型会优先匹配中文的内容,很容易得不到想要的答案。
当使用中文得不到满意的答案,可以尝试将问题翻译成英文再去提问,或许会有意外收获。
image.png

4.3 预定义提示词模板可以提高效率

大家可以将常用的提示词定义成模板(参考 ChatGPT Sidebar 浏览器插件),下次快速使用。
Xnip2023-04-02_19-30-00.png

也可以在 poe.com 中自定义 AI 助手。
如我想自定义一个擅长 Java 语言软件工程专家:

请扮演软件工程领域的高级专家。
你对计算机科学领域的知识非常熟悉,特别擅长 Java 编程语言,善于解决编程和软件架构设计中遇到的问题,也善于解读源代码,擅长给出设计难题的建议。
我会问一些编程或编码方面的问题,希望你能回答。
要求:
1 请用中文回答我
2 给出的回复尽可能详细
我的问题是:

将自己想要表达的内容翻译成英文做成提示词,在提示词中要求 AI 用中文回答:

Please play the role of a senior expert in the field of software engineering.
You are very familiar with the knowledge in the field of computer science, especially good at Java programming language, good at solving problems encountered in programming and software architecture design, and also good at interpreting source code, good at giving suggestions for design challenges.
I will ask some programming or coding questions, I hope you can answer.
Requirements:
1 Please answer me in Chinese
2 The replies given are as detailed as possible
My question is:

要求中说明它要扮演的角色,要做的任务,给出任务的具体要求和注意事项。
在这里插入图片描述

然后直接和该机器人对话即可,输入直接输入内容即可完成预定好的提示词所描述的任务,非常方便。
在这里插入图片描述

4.4 尝试多种语言模型

有时候哪怕提示词准确,某个大语言模型也未必能够得到满意的答案。
大家除了尝试调整提示词之外,还可以考虑换几个不同的语言模型。
通常结合不同的语言模型更能够得到更全面的答案。
Xnip2023-04-01_21-57-58.png
可以使用 Utools 的网页快开的功能,输入一个问题同时打开多个 AI 搜索引擎来搜索问题,效率翻倍。

在这里插入图片描述

Phind 网页快开的搜索结构:

https://www.phind.com/search?q={query}&source=searchbox

New Bing 网页快开的搜索结构:

https://www.bing.com/?q={query}&setmkt=zh-HK&setlang=zh-CN

You.com 网页开开的搜索结构:

https://you.com/search?q={query}&fromSearchBar=true&tbm=youchat
在这里插入图片描述

五、提示词教程

网上还有很多相对专业的提示词教程,大家可以参考学习。

5.1 hayo

官网: https://www.hayo.com/download

hayo 是国内即可访问的支持 ChatGPT 和 Stable Diffusion 的非常不错的 AI 工具箱。
其中指令工坊里提供了很多非常常用的提示词模板,非常值得学习。
在这里插入图片描述
大家定义提示词时可以重点参考下。

5.2 learnprompt.org

网站地址:https://www.learnprompt.org/

在这里插入图片描述
这个论坛非常火爆,其中 ChatGPT 提示词 for 开发者提供了很多非常专业的提示词模板,非常值得学习。
https://www.learnprompt.org/chatgpt-prompts-for-developers/

5.3 prompt-patterns

网站地址:
https://prompt-patterns.phodal.com/
Xnip2023-04-01_22-16-00.png
四种基础模式:
特定指令(By specific):在这种模式下,我们给模型提供一些特定信息,例如问题或关键词,模型需要生成与这些信息相关的文本。这种模式通常用于生成答案、解释或推荐等。特定信息可以是单个问题或多个关键词,具体取决于任务的要求。
image.png
指令模板(Instruction Template):在这种模式下,我们给模型提供一些明确的指令,模型需要根据这些指令生成文本。这种模式通常用于生成类似于技术说明书、操作手册等需要明确指令的文本。指令可以是单个句子或多个段落,具体取决于任务的要求。
image.png

代理模式(By proxy):在这种模式下,可以充当了一个代理,代表某个实体(例如人、角色、机器人等)进行操作或交互。代理模式的核心思想是引入一个中介对象来控制对实际对象的访问,从而实现一定程度上的隔离和保护。诸如于在 ChatGPT 中,”act as xxx” 可以让 ChatGPT 充当一个代理,扮演某个角色或实体的身份,以此来处理与该角色或实体相关的任务或请求。
image.png
示例模式(By demonstration):在这种模式下,我们给模型提供一些示例文本,模型需要生成与示例文本类似的文本。这种模式通常用于生成类似于给定示例的文本,例如自动生成电子邮件、产品描述、新闻报道等。示例文本可以是单个句子或多个段落,具体取决于任务的要求。
image.png

该教程,还介绍了这些模式结合适用的混合模式。

5.4 Learning Prompt

网站:https://learningprompt.wiki/docs/%F0%9F%91%8B%20Welcome
提供了一些基础和高级提示词指导。针对不同的场景给出很多示例和使用技巧。
Xnip2023-04-01_23-46-07.png

5.5 learnprompting

网站:https://learnprompting.org/?ref=allthingsai
Xnip2023-04-01_23-36-08.png

该网站给出全面的提示词学习教程,包括一些基础概念、基础应用和一些进阶用法等。
Xnip2023-04-01_23-36-50.png
如思维链提示过程:
Xnip2023-04-01_23-39-34.png

5.6 ChatGPT 指令大全

网址:https://www.explainthis.io/zh-hans/chatgpt
该网站给出了很多经过提炼过的提示词,可以直接复制来使用。
Xnip2023-04-01_23-48-01.png

5.6 其他

未来有更好的提示词教程会补充到这里。

六、总结

很多人提出的问题连人都难以理解,却希望人工智能能够完全和自己“心有灵犀” ,自己描述不清楚还埋怨 AI 不够智能。

希望本文可以让大家意识到这个问题,并且通过提供的相关教程,尽早掌握提问技巧,更好地利用人工智能更快的学习和更快地解决问题。


创作不易,如果本文对你有帮助,欢迎点赞、收藏加关注,你的支持和鼓励,是我创作的最大动力。
在这里插入图片描述

欢迎加入我的知识星球,知识星球ID:15165241 一起交流学习。
https://t.zsxq.com/Z3bAiea 申请时标注来自CSDN。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w605283073/article/details/129905379

智能推荐

图像分类篇——使用pytorch搭建ResNet网络_resnet实战:使用resnet实现图像分类(pytorch)-程序员宅基地

文章浏览阅读2.7k次,点赞6次,收藏40次。目录1. ResNet网络详解1.1 ResNet网络概述1.2 Batch Normalization1.3 residual结构1.4 ResNet结构和详细参数1.5 迁移学习2. Pytorch搭建本文为学习记录和备忘录,对代码进行了详细注释,以供学习。内容来源:★github:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing★b站:https://space.bilibili.com/18161609/chan_resnet实战:使用resnet实现图像分类(pytorch)

Beautiful Soup之find()和find_all()的基本使用_soup.find_all-程序员宅基地

文章浏览阅读1w次,点赞17次,收藏66次。1.HTML文本这里以官方文档提供的html代码来演示Beautiful Soup中find_all()和find()的基本使用。<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="stor_soup.find_all

chatgpt赋能python:Python中升序和降序排序:什么是升序和降序以及如何使用Python进行排序_python中降序和逆序有什么区别-程序员宅基地

文章浏览阅读528次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python中降序和逆序有什么区别

Django使用 haystack+whoosh实现搜索功能,并返回json数据_django填加whoosh backend-程序员宅基地

文章浏览阅读228次。【代码】Django使用 haystack+whoosh实现搜索功能,并返回json数据。_django填加whoosh backend

nginx反向代理-程序员宅基地

文章浏览阅读341次。环境是政务微信放请求71代理服务器,71代理服务器请求项目所在的14服务器。1.服务器的映射 server { listen 8080; server_name 10.99.89.71; #charset koi8-r; #access_log logs/host.access.log main; rewrite ^(.*)$ https://${server_name}$1 permanent;

[FPGA入门笔记](十四):IIC总线控制原理与Verilog实现_fpga作为iic的从机-程序员宅基地

文章浏览阅读2.1k次,点赞8次,收藏39次。简介今天购买了AXLINX AX7020的开发板,从今天开始每一个例程都要做文档记录,为自己加油。本实验,基于ALINX AX7020开发板,芯片为xc7z020clg400-2。开发板输入时钟为50MHz。参考文章本文主要参考了以下两篇文章,并在其基础上加以改进和完善,加入了作者自己的理解。博客一:【IIC协议原理以及主机、从机Verilog实现】博客二:【接口时序】6、IIC总线的原理与Verilog实现一、IIC协议介绍IIC(Inter-Integrated Circuit)总线是一_fpga作为iic的从机

随便推点

计算机输入法无法启动,Win7系统开机后输入法总是消失如何解决-程序员宅基地

文章浏览阅读1.2k次。输入法是我们在使用电脑的时候经常会用来输入文字的工具,一般在开机的时候都会自动启动并在任务栏右下角显示,可是有不少win7系统用户却遇到开机后输入法总是消失的情况,要怎么解决呢?现在为大家带来Win7系统开机后输入法总是消失的详细解决步骤。1、在win7系统中点击“开始”--“运行”输入--regedit,打开“注册表编辑器”,找到“HKEY_USERS\.DEFAULT\ControlPanel..._开机输入法消失

手把手教你利用ORB_SLAM2制作自己的数据集(手机拍摄即可,不需要ROS)_orbslam2 自己的视频-程序员宅基地

文章浏览阅读633次,点赞7次,收藏14次。利用ORB_SLAM2运行自己数据集_orbslam2 自己的视频

filter函数回数是指从左向右读和从右向左读都是一样的数,例如12321,909。_回数的函数名称是什么-程序员宅基地

文章浏览阅读833次。def is_palindrome(n): arr = [] while n&amp;gt;0: arr.append(n % 10) n //= 10 l = len(arr) for i in range(0, len(arr)//2): if arr[i] != arr[l-i-1]: retu..._回数的函数名称是什么

C/C++坦克大战项目-程序员宅基地

文章浏览阅读4.8k次,点赞10次,收藏48次。本次坦克大战项目已实现的功能背景音效,动画界面,各级菜单选项,暂停游戏,重新开始,储存与读取游戏进度。单人,双人(闯关模式) (自定义游戏),双人联机模式每辆坦克独立的HP,MP,移动速度,攻击CD,自动回HP,MP,3种不同的炮弹攻击针对BOSS的自动寻找玩家并攻击。使用A星算法。各种类型食物:无敌,攻击翻倍,全屏秒杀,无限子弹,全场冰冻。各种类型敌人:4种按等级区分的普通敌人,1种...

北京54或国家80或CGCS2000转WGS84坐标系的程序实现方法_cgcs2000转换到wgs84 c# 代码-程序员宅基地

文章浏览阅读3.9k次,点赞10次,收藏17次。介绍在工程测量中,经常使用的坐标系如北京54坐标系、国家80(也叫西安80)坐标系、CGCS2000坐标系。而在终端设备或定位平台中,一般使用WGS84坐标系。这样的情况下,就需要一种北京54、国家80、CGCS2000转WGS84坐标系的通用程序方法。而我们使用的就是布尔莎七参数法来进行的程序转换。通过使用C++程序,从而得到平台需要的wgs84坐标。布尔莎七参数标准的七参数转换方法,使用X、Y、Z平移,X、Y、Z旋转,K尺度,这七个参数,在已知三个以上点的情况下,来计算七参数模型。具体七参数计_cgcs2000转换到wgs84 c# 代码

山东大学软件学院增强现实2020年期末考试试题回忆_增强现实算法基础 秦学英 答案-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏32次。山东大学软件学院增强现实2020年期末考试试题回忆一、选择题(8题,每题5分,共40分)基本上都是认知性题目,只需要对课上的东西看过一眼就一眼(大部分题只要知道增强现实是什么),就可以做了。增强现实的三要素。张正友定标是怎么实现的。二、论述与证明题 (4题,每题15分,共60分)1、给出了ppt上一个光学穿透式头盔显式器的图,问:(1)根据下图描述光学穿透式头盔显式器的原理。(2)它的核心部件(技术)是什么?(3)它的优缺点是什么?2、 homographic单应性矩阵 H,两平面上的_增强现实算法基础 秦学英 答案

推荐文章

热门文章

相关标签