作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。
热门文章推荐:
- (1)《人工智能时代,软件工程师们将会被取代?》
- (2)《超全人工智能 AI工具导航网站合集》
- (3)《如何写出高质量的文章:从战略到战术》
- (4)《我的技术学习方法论》
- (5)《什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍》
- (6)《我的性能方法论》
- (7)《New Bing 编程提效实践 - 语言识别功能》
【号外】学长主导的新星计划2023【AI 助力软件开发】学习方向,旨在引导大家学习 AI 工具的使用、学习如何写出高质量的技术文章。引导学员借助 AI 工具更好地学习,更快地解决问题。火热报名中,感兴趣快来报名吧!
一、背景
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 浏览器插件),下次快速使用。
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 prompt-patterns
网站地址:
https://prompt-patterns.phodal.com/
四种基础模式:
特定指令(By specific):在这种模式下,我们给模型提供一些特定信息,例如问题或关键词,模型需要生成与这些信息相关的文本。这种模式通常用于生成答案、解释或推荐等。特定信息可以是单个问题或多个关键词,具体取决于任务的要求。
指令模板(Instruction Template):在这种模式下,我们给模型提供一些明确的指令,模型需要根据这些指令生成文本。这种模式通常用于生成类似于技术说明书、操作手册等需要明确指令的文本。指令可以是单个句子或多个段落,具体取决于任务的要求。
代理模式(By proxy):在这种模式下,可以充当了一个代理,代表某个实体(例如人、角色、机器人等)进行操作或交互。代理模式的核心思想是引入一个中介对象来控制对实际对象的访问,从而实现一定程度上的隔离和保护。诸如于在 ChatGPT 中,”act as xxx” 可以让 ChatGPT 充当一个代理,扮演某个角色或实体的身份,以此来处理与该角色或实体相关的任务或请求。
示例模式(By demonstration):在这种模式下,我们给模型提供一些示例文本,模型需要生成与示例文本类似的文本。这种模式通常用于生成类似于给定示例的文本,例如自动生成电子邮件、产品描述、新闻报道等。示例文本可以是单个句子或多个段落,具体取决于任务的要求。
该教程,还介绍了这些模式结合适用的混合模式。
5.2 Learning Prompt
网站:https://learningprompt.wiki/docs/%F0%9F%91%8B%20Welcome
提供了一些基础和高级提示词指导。针对不同的场景给出很多示例和使用技巧。
5.3 learnprompting
网站:https://learnprompting.org/?ref=allthingsai
该网站给出全面的提示词学习教程,包括一些基础概念、基础应用和一些进阶用法等。
如思维链提示过程:
5.4 ChatGPT 指令大全
网址:https://www.explainthis.io/zh-hans/chatgpt
该网站给出了很多经过提炼过的提示词,可以直接复制来使用。
5.5 其他
未来有更好的提示词教程会补充到这里。
六、总结
很多人提出的问题连人都难以理解,却希望人工智能能够完全和自己“心有灵犀” ,自己描述不清楚还埋怨 AI 不够智能。
希望本文可以让大家意识到这个问题,并且通过提供的相关教程,尽早掌握提问技巧,更好地利用人工智能更快的学习和更快地解决问题。
创作不易,如果本文对你有帮助,欢迎点赞、收藏加关注,你的支持和鼓励,是我创作的最大动力。