草庐IT

AI 时代,提示词便是生产力

明明如月学长 2024-02-27 原文

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

热门文章推荐

一、背景

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

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

二、反向示例

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

2.1 示例一

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

2.2 示例二

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

三、什么是好的提示词

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

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

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

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

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

语言上下文:好的 Prompt 应该包含一些语言上下文和限制条件,必要的背景信息和前提条件,以帮助 ChatGPT 更好地理解问题。例如,我们在上面的聊天中要求 ChatGPT 给我们准备一篇描写包装器模式的文章大纲,我们可以使用 “请根据上面的大纲帮我写一个草稿”,这样 ChatGPT 更容易理解问题。

多样性:好的 Prompt 应该具备一定的多样性,不仅可以满足不同的需求和场景,还可以帮助 ChatGPT 更好地理解和生成不同类型的回答。例如,我们可以使用不同类型的 Prompt,例如填空式、选择题或开放式问题,以获得更丰富和多样化的回答。

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

四、经验

4.1 根据 AI 的表现调整 prompts

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

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

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

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

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

大家可以将常用的提示词定义成模板(参考 ChatGPT Sidebar 浏览器插件),下次快速使用。

也可以在 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 尝试多种语言模型

有时候哪怕提示词准确,某个大语言模型也未必能够得到满意的答案。
大家除了尝试调整提示词之外,还可以考虑换几个不同的语言模型。
通常结合不同的语言模型更能够得到更全面的答案。

可以使用 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/

四种基础模式:
特定指令(By specific):在这种模式下,我们给模型提供一些特定信息,例如问题或关键词,模型需要生成与这些信息相关的文本。这种模式通常用于生成答案、解释或推荐等。特定信息可以是单个问题或多个关键词,具体取决于任务的要求。

指令模板(Instruction Template):在这种模式下,我们给模型提供一些明确的指令,模型需要根据这些指令生成文本。这种模式通常用于生成类似于技术说明书、操作手册等需要明确指令的文本。指令可以是单个句子或多个段落,具体取决于任务的要求。

代理模式(By proxy):在这种模式下,可以充当了一个代理,代表某个实体(例如人、角色、机器人等)进行操作或交互。代理模式的核心思想是引入一个中介对象来控制对实际对象的访问,从而实现一定程度上的隔离和保护。诸如于在 ChatGPT 中,”act as xxx” 可以让 ChatGPT 充当一个代理,扮演某个角色或实体的身份,以此来处理与该角色或实体相关的任务或请求。

示例模式(By demonstration):在这种模式下,我们给模型提供一些示例文本,模型需要生成与示例文本类似的文本。这种模式通常用于生成类似于给定示例的文本,例如自动生成电子邮件、产品描述、新闻报道等。示例文本可以是单个句子或多个段落,具体取决于任务的要求。

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

5.4 Learning Prompt

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

5.5 learnprompting

网站:https://learnprompting.org/?ref=allthingsai

该网站给出全面的提示词学习教程,包括一些基础概念、基础应用和一些进阶用法等。

如思维链提示过程:

5.6 ChatGPT 指令大全

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

5.6 其他

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

六、总结

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

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


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

有关AI 时代,提示词便是生产力的更多相关文章

  1. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  2. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  3. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

  4. ruby - 在 StockChart (highchart) 中以编程方式显示柱形图的工具提示 - 2

    我有一个Highstock图表(带有标记和阴影的线条),并且想以编程方式显示一个highstock工具提示,例如,当我选择某个表上的一行(包含图表数据)我想显示相应的highstock工具提示。这可能吗? 最佳答案 股票图表thissolution不起作用:在thisexample你必须更换这个:chart.tooltip.refresh(chart.series[0].data[i]);为此:chart.tooltip.refresh([chart.series[0].points[i]]);解决方案可用here.

  5. ruby-on-rails - Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境 - 2

    我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp

  6. ruby-on-rails - 为开发/测试和生产指定相同的 gem 两次,但路径不同 - 2

    有时您会制作特定于项目的gem。这有助于将一些“责任”从主Rails应用程序中抽象出来并转移到一个更加模块化的地方。gem将位于您应用程序的此处:gem'example_gem',path:'./example_gem'你捆绑,一切都很好。现在,您gitinitgem并将其存储在github上它自己的repo中。您尝试这样做以使其对开发人员友好:group:development,:testdogem'example_gem',path:'./example_gem'endgroup:productiondogem'example_gem',github:'company/exampl

  7. ruby-on-rails - 生产服务器上的 Rails 安全性 - 2

    我正在将我的第一个Rails应用程序放到互联网上,我已经阅读了有关安全性的Rails指南并实现了其中列出的要点,但有兴趣了解其他信息吗?另外,我目前将上传的内容存储在公共(public)/文档中,这样可以吗?我注意到没有保护目录的htaccess文件。 最佳答案 如果您想保密,将上传的内容存储在可预测的位置是个坏主意。如果您不关心访问它的人,那也没关系。使用.htaccess密码保护目录是一个很好的解决方案。您应该使用Acunetx测试您的应用程序是否存在漏洞($$)或Wapiti(开源)。您还应该阅读:Whatshouldadev

  8. 未来的趋势————以ChatGPT为标杆的AI对生活的影响是巨大的 - 2

    文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们

  9. 焕新古文化传承之路,AI为古彝文识别赋能 - 2

    目录1古彝文与古典保护2古文识别的挑战2.1西文与汉文OCR2.2古彝文识别难点3合合信息:古彝文保护新思路3.1图像矫正3.2图像增强3.3语义理解3.4工程技巧4总结1古彝文与古典保护彝文指的是云南、贵州、四川等地的彝族人使用的文字,区别于现代意义上的彝文,古彝文指的是在民间流通使用的原生态彝文,多达87046字。古彝文的起源距今至少数千年,是世界上最古老的文字之一。对古彝文字集研究有助于理解尚未被翻译成汉文、用字尚未规范化的古籍,更深层、透彻地作用于传统文化保护。古彝文字义对照图(网络资料+邵文苑供图)古籍是不可再生的宝贵资源,应当得到妥善保护。中国的古籍在历史上迭经水火兵燹等自然灾害、

  10. ruby - 我如何告诉 Sinatra 它是什么环境(开发、测试、生产)? - 2

    (免责声明:在Heroku上部署Sinatra的新手。)我看过http://www.sinatrarb.com/configuration.html它告诉我set:environment,:production。我的问题是,我该如何指定它:“在Heroku中,将环境设置为生产环境,否则留在测试/开发中。”此外,即使在set:environment,:production这行之后,我也不认为它在工作,因为当我尝试在本地rackup应用程序时,它是仍在运行(当我知道(或者我认为我知道)它不应该因为我没有在我的计算机上安装postgres时)。gem文件group:productiondog

随机推荐