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

智能推荐

python flask服务器假死_IE浏览器访问Flask自带服务器假死问题解决方法 - digwtx-程序员宅基地

文章浏览阅读2.5k次。在本地调试Flask应用程序,如果使用IE浏览器访问,会经常出现卡住(假死)现象,这是一个比较烦人的问题。 其实解决方法也比较简单,只要给app.run加上一个threaded=True参数或者processes=N参数(N改为实际数值)。假如: pythonif __name__ == '__main__':app.run(threaded=True)# 或者# app.run(processe..._flask服务假死的原因

MySQL 数据库常用命令-程序员宅基地

文章浏览阅读123次。MySQL数据库常用命令1、MySQL常用命令create database name; 创建数据库use databasename; 选择数据库drop database name 直接删除数据库,不提醒show tables; 显示表describe tablename; 表的详细描述select 中加上distinct去除重复字段mysqladmi...

不带头结点的单链表——数据结构课堂作业-程序员宅基地

文章浏览阅读2k次,点赞4次,收藏10次。#include <stdio.h>#include <stdlib.h>/**************************************//* 链表实现的头文件,文件名slnklist.h *//**************************************/#include <stdio.h>#include &l..._/* 假设不带头结点的单链表head是升序排列的,设计算法函数linklist insert(linkli

【蓝桥杯嵌入式学习笔记】(一)比赛及开发环境相关介绍_蓝桥杯嵌入式比赛时会提供什么-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏33次。一、比赛相关介绍1、我刚开始学习32的时候是先学习的库函数,这种传统的库函数开发方式会花费很多时间在各种模块的初始化上面,而CubeMX+HAL库开发的方式,则是省去了初始化的部分,让我们能将更多的精力放在实现功能和逻辑设计方面。当然,库函数的开发方式也是有必要学习的,一些相关底层知识也需要一定的理解,因为 CubeMX也可能存在Bug,如果你对库函数不了解的话也会出现一些麻烦无法解决。2、蓝桥杯嵌入式比赛开发板主控芯片采用STM32G431RBT6,并预留扩展板接口。..._蓝桥杯嵌入式比赛时会提供什么

JS 离散点生成等高线图的几种方式_observable plot-程序员宅基地

文章浏览阅读1.7k次,点赞15次,收藏27次。JS 离散点生成等高线图的几种方式_observable plot

随便推点

计算机毕业设计Java校园驿站(源码+系统+mysql数据库+Lw文档)_校园驿站数据表-程序员宅基地

文章浏览阅读40次。前端技术:Layui、HTML、CSS、JS、JQuery等技术。springboot基于SpringBoot的桦木加工厂管理系统。springboot石家庄学院学生实习管理系统。springboot离散制造业产品销售管理系统。ssm牧场奶牛疾病信息管理系统的设计与实现。ssm基于JavaEE的疆域特色农家乐系统。springboot高校固定资产管理系统。springboot超市购物数据管理系统。......_校园驿站数据表

160820服务器问题解决备忘-程序员宅基地

文章浏览阅读59次。查看apache的错误日志假如php不记录错误的时候,可以尝试看apache的日志,日志一般存放位置是: /etc/httpd/logs/error_log ,可以通过tail -f /etc/httpd/logs/error_log实时监听错误信息php 时区没有设置PHP Warning: date(): It is not safe to rely on the system's..._welhong系统 err160

计算机的外围设备找不到,bluetooth外围设备驱动程序找不到怎么办?来看看详细的解决方案...-程序员宅基地

文章浏览阅读6.8k次。bluetooth外围设备驱动程序找不到怎么办?最近小编在朋友在家玩的时候,他的电脑出现了“bluetooth外围设备找不到驱动程序”的问题,于是,朋友求助我,想让我帮他解决一下这个问题,下面智能手机网不来分享一下Win7系统出现bluetooth外围设备找不到驱动程序的解决方法吧,赶紧来瞧一瞧。bluetooth外围设备找不到怎么办bluetooth外围设备驱动程序找不到的解决方案操作步骤一:1..._bluetooth外围设备找不到驱动程序怎么办

Literature Lesson_lietrature lesson程序-程序员宅基地

文章浏览阅读424次。A. Literature Lessontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputVera adores poems. All the poems Vera knows are_lietrature lesson程序

回调函数例子-程序员宅基地

文章浏览阅读1k次。回调函数_回调函数例子

能量俘获阅读【5】- 纳米摩擦发电机之精密传感 - TENG文献阅读- 摩擦电子晶体管传感器用于增强型氢气检测传感装置_纳米摩擦发电机 用于传感-程序员宅基地

文章浏览阅读197次。这篇是近期,国家纳米中心的庞耀坤、陈立波、胡国锋等学者在NANO RESEARCH期刊上发表在Nano Research 上的一篇关于先进氢气监测传感器的文章,英文名称是:Tribotronic transistor sensor for enhanced hydrogen detection 研究团队将ZnO场效应晶体管(FET)与摩擦电纳米发电机在独立模式下耦合,研制了一种新型ZnO摩擦电子晶体管,并将其用作室温下氢气检测传感器。_纳米摩擦发电机 用于传感

推荐文章

热门文章

相关标签