Chat GPT最佳实践 [译]

type
status
date
slug
summary
tags
category
icon
password
在 2022 年 12 月,我注册了我的第一个 Chat GPT 账号,到了 2023 年 10 月,国内无数厂商都发布了自己的 AI 产品,这表明AI这个方向短期内一定是正确的。AI 技术具有更加明确的实际应用价值。AI 可以通过机器学习和自然语言处理等技术,帮助人们解决实际问题,提高工作效率和生活质量。
根据SuperCLUB的排行榜聊天机器人竞技场,我们可以看到Chat GPT的GPT-4几乎在各方面达到了优秀的水准。所以可以下一个不负责任的结论: 谁和GPT做朋友,谁就遥遥领先 !
本文内容译自Chat GPT官方 - Six strategies for getting better results,我会用大白话的方式介绍这些技巧

这份指南给你提供了如何从 GPT 获得更佳效果的一些方法和技巧。有些技巧可以组合起来用,以达到更好的效果,所以不妨大胆尝试,找到最适合你的方法。
需要特别提醒的是,某些示例只适用于我们最强大的模型——gpt-4。如果你还没有机会用这个模型,可以考虑加入等待名单。一般来说,如果你发现一个 GPT 模型不能完成某个任务,而手头又有更强大的模型,那就值得用这个强大的模型再试一次。
要想获得更好的结果,你可以试试以下策略:

一、写清晰的指令

GPT 并不能读懂你的心思。
如果你觉得输出结果太长,就明确要求它给出简短的答复。
如果觉得输出结果太过简单,就要求它用更专业的语言来回答。
如果你对输出格式有特殊要求,最好能给出示例。
GPT 对你的需求了解得越清晰,提供给你的答案就越可能是你想要的。
你可以用以下这些实用技巧来提高 GPT 的准确度和效用:

你说的细节越多,GPT回答的越好

要想从 GPT 那里得到你真正需要的答案,细节是关键。GPT并不能读懂你的心思,因此在提问时加入所有相关的信息和背景是至关重要的。
❌较差的提问方式
✅更好的提问方式
如何在 Excel 中加数字?
我应该如何在 Excel 中自动累加一行美元金额,并将所有的累加结果显示在一个名为 "Total" 的列中?
谁是总统?
2021年墨西哥的总统是谁?墨西哥多久举行一次总统选举?
编写用于计算斐波那契数列的代码。
请用 TypeScript 写一个用于高效计算斐波那契数列的函数,并在代码中详细注释各部分的功能和原因。
总结会议记录。
请用一个段落总结会议内容,然后用 Markdown 列出各个发言人和他们的关键观点,最后列出由发言人建议的下一步或行动项(如果有的话)。

角色扮演

设定模型的“角色”,你可以要求模型以某个特定角色或风格来回应你。在与 GPT 模型互动时,你可以通过系统设定来设定模型的回复风格或角色。
例如,如果你希望模型在帮你写作时加入幽默元素,你可以明确指出。
系统设定
当我需要写作帮助时,你的回复应该是一个每段都至少包含一个笑话或幽默评论的文档。
用户输入
请帮我写一封感谢信给我的钢螺栓供应商,感谢他们在极短的通知内准时交货,这让我们能够完成一个重要的订单。

使用分隔符

在与模型互动时,不要让GPT猜测你的话中哪一段是指令,哪一段是材料
使用分隔符(如三重引号、XML标签、段落标题等)来明确标识输入中的不同部分,有助于GPT按照不同的方式处理各个文本区块。
用户输入
你需要担任翻译,你要翻译的内容是: """这里是用户输入的"""
系统设定
您将收到一对关于同一主题的文章(用 XML 标记分隔)。首先总结每篇文章的论点。然后指出哪篇文章的论点更好,并解释原因。
用户输入
<article>在此插入第一篇文章</article> <article>在此插入第二篇文章</article>
系统设定
你将得到一个论文摘要和一个建议的标题。论文标题应该让读者很好地了解论文的主题,但也应该引人注目。如果标题不符合这些标准,请提供5个备选方案。
用户输入
摘要:在这里插入摘要 标题:在这里插入标题
在执行像这样的直接任务时,使用界定符可能并不会影响结果的质量。然而,任务的复杂度越高,就越需要清晰地定义任务的细节。不要让GPT模型费劲去解析你的问题是什么。

设定好你想要的解题步骤

对于某些任务,最好能通过明确列出一系列步骤来指定它们。这样做能让模型更容易理解并执行这些步骤。
系统设定
按照以下逐步说明来回应用户的输入。 - 第一步,用户会使用三重引号提供一段文本,你需要用“摘要:”作为前缀,将这段文本总结为一句话。 - 第二步,在第一步的摘要后加上前缀“翻译:”,并将其翻译成西班牙语。
用户输入
"""输入你的文本"""

多给GPT举几个例子

在大多数情况下,你无法写出非常通用的,适用于所有问题的通用提示词。然而,但有时候,提供一个例子会更加简单。例如,你很难描述一种语言风格,但是可以扔给他几个例子,他就能学会这种风格,这种方法被称为“少样本”提示。
系统设定
用一致的风格回复我
用户输入
告诉我什么是耐心
系统回复
最深邃的河谷源于一个不起眼的泉眼; 最宏伟的交响乐源自一个音符; 最复杂的织锦始于一根孤线。
用户输入
告诉我什么是海洋
系统回复
此时会GPT会按照上面的格式回答你的这个问题

控制输出长度

你可以指定模型输出内容的长度,无论是以单词、句子、段落或是列表形式。
但要注意2点
  • 如果你指定了特定的单词数量,模型可能无法非常精确地达到这个要求。
  • 这里说的单词数其实指的是Token数量,换成汉字近似是2倍的关系,比如你要生成50个汉字,你需要告诉GPT需要生成100字的内容,这大概能输出50个中文汉字,具体计数可以在Open AI官方的Tokenizer进行计算。
用户输入
用大约50个字来概括下面的原文
用户输入
用2段话概括下面的文字
用户输入
用3个要点概括下面的文字

二、提供参考文本

要求GPT仅使用提供的材料作答

如果你有一份可靠的参考文本,你可以指示模型根据这份文本来回答问题。这样,模型的回答将更准确和相关。
系统设定
请利用三重引号区分的文章内容来解答问题。如果在文章里找不到答案,请告诉我“我找不到答案。”
用户输入
"""文章粘贴在这里""" 问题: 问题写在这里

要求引用提供的材料

如果输入已经包含了与问题相关的文档,就可以明确要求模型在其回答中给出相关的引用。这种方式的优势是,你可以很轻松的验证GPT的回答和提供的材料之间的关系。
系统设定
你将收到一个由三重引号分隔的文档和一个问题。你的任务是仅使用提供的文档来回答问题,并引用用于回答问题的文档中的段落。如果文档不包含回答此问题所需的信息,则告诉我:"信息不足"。如果问题的在材料中有答案,必须使用以下格式来引用相关段落({"引用": …})
用户输入
"""文章粘贴在这里""" 问题: 问题写在这里

三、复杂任务拆解成子任务

使用意图分类,来找到最切题的分类

可能不是那么容易理解,举个例子,想象一下如果要让GPT充当一个电商客服,如何面对用户奇奇怪怪的问题呢? 我们不⼀定要写⼀个巨长的prompt来应对用户的所有回答。我们可以:设定好意图分类,再根据分类来调用prompt。
这种方式的优点是,每个用户查询只会包含执行下一任务阶段所需要的指令,这可能会降低错误率。因为运行更大的提示文本会增加成本,这种方法也可能更经济实惠。例如,在一个客户服务应用中,用户的查询可以按照一些有用的方式进行分类。
下面我们假设用GPT充当一个运营商客服
系统设定
您将收到客户服务询问。将每个查询分为一级类别和二级类别。以 json 格式提供输出,并标明键:主要类别和次要类别。 主要类别:账单、技术支持、账户管理或一般查询 计费二级类别: - 退订或升级 - 添加付款方式 - 收费解释 - 对收费提出异议 技术支持 二级类别: - 故障排除 - 设备兼容性 - 软件更新 账户管理 二级类别 - 密码重置 - 更新个人信息 - 关闭账户 - 账户安全 一般查询 二级类别: - 产品信息 - 定价 - 反馈信息 - 与人工对话询。
用户输入
我需要让我的网络恢复正常。
这里是:先识别了用户意图,把用户的问题分到“故障排除”类别里面。然后基于这个细的分类,再 向模型提供⼀组更具体的指令,从里面选。
系统设定
您将接到需要在技术支持环境中排除故障的客户服务咨询。通过以下方式帮助用户 - 要求用户检查所有连接路由器的电缆是否连接好。请注意,随着时间的推移,电缆松动是很常见的。 - 如果所有电缆都已连接,但问题仍然存在,请询问用户使用的路由器型号。 - 现在,您要告诉他们如何重启设备: - 如果型号是 MTD-327J,建议他们按下红色按钮并保持 5 秒钟,然后等待 5 分钟再测试连接。 - 如果型号是 MTD-327S,建议他们拔下插头并重新插入,然后等待 5 分钟再测试连接。 - 如果客户在重启设备并等待 5 分钟后问题仍然存在,则通过输出 {"请求 IT 支持"}将其连接到 IT 支持。 - 如果用户开始询问与此主题无关的问题,则确认他们是否愿意结束当前关于故障排除的聊天,并根据以下方案对其请求进行分类: <此处插入上面的主要/二级分类方案>。
用户输入
我需要让我的网络恢复正常。
模型被设置为输出特定的字符串来标示对话状态的变化。这样做使得整个系统能够作为一个状态机运行,在这个状态机中,不同的状态会触发不同的指令集。通过维护这些状态、确定每个状态下应用的指令,以及在需要的情况下,设定从一个状态到另一个状态的转换规则,我们可以更精确地控制用户体验,这在没有结构的情况下是很难实现的。

如果整体对话比较长,自己总结一下对话

GPT模型有一个固定的上下文长度,这意味着用户和模型之间的长对话不能一直持续下去。有几种解决方案可以解决这个问题。
  1. 在对话达到某个长度阈值时触发一个总结,这个总结可以作为系统消息的一部分。
  1. 在对话过程中持续异步地总结先前的交流内容。
  1. 一种更高级的方法是动态地选取与当前查询最相关的之前的对话内容。这最后一种方法与“使用基于嵌入的搜索来实现有效的知识检索”的策略有关。

分段总结长文档,并通过递归方式构建完整摘要

由于GPT模型有固定的上下文长度限制,单次的查询不能用来总结超过这个长度的文本。但如果你需要总结一个非常长的文档,比如一本书,你可以采用分段总结的方法。你可以首先分别对每一部分进行总结,然后将这些小的总结拼接并再次进行总结,这样就形成了“总结的总结”。这个过程可以递归地进行,直到整个长文本被总结完毕。如果后面的内容需要依赖前面的信息,那么在总结的时候可以加入前面内容的“持续性总结”。这种用于长文本总结的方法已经在之前使用GPT-3的OpenAI研究中得到了验证。

四、给GPT思考的时间

有时候,明确地让模型从最基础的原则出发进行推理会得到更好的结果。比如,如果我们想让模型评估一个学生解决数学问题的方法,最直接的方式是直接问模型这个学生的解法是否正确。然而,如果模型从基础原则出发进行推理,可能会得到更全面和准确的评估。
❌错误的使用方式
系统设定
判断学生的解答是否正确。
用户输入
问题陈述:我正在建造一个太阳能装置,我需要解决财务问题。 - 土地价格为100美元/平方英尺 - 我能以250美元/平方英尺的价格买到太阳能电池板 - 我谈妥了一份维护合同,每年固定费用为10万美元,每平方英尺另加10美元 作为平方英尺数量的函数,第一年运营的总成本是多少。 学生的解决方案:设x是装置的大小,单位为平方英尺。 1.土地成本:100倍 2.太阳能电池板成本:250倍 3.维护费用:100,000+100倍 总成本:100x+250x+100,000+100x=450x+100,000
系统回复
学生的解答是正确的
但实际上学生的解并不正确!我们可以通过提示模型先生成自己的解决方案,让模型成功注意到这一点。
✅正确的使用方式
系统设定
首先想出你自己解决问题的办法。然后将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在你自己做完这道题之前,不要决定学生的解答是否正确。
用户输入
(和上面一样,不再重复)
系统回复
设 x 为安装面积(平方英尺)。 1.土地成本:100x 2.太阳能电池板成本:250x 3.维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 10x = 360x + 100,000 该学生的解决方案不正确。他们在计算维护成本时出了错,用了 100x,而不是 10x。正确的第一年运营总成本是 360x + 100,000。

使用内心独白或一系列查询来隐藏模型的推理过程

在解答特定问题之前,模型有时需要进行详尽的推理,比如上面那种问题。
但在某些场景下,这种推理过程可能不宜与用户共享。比如,在教育辅导应用中,如果模型的推理过程被展示出来,可能会暴露出答案,影响学生自己解决问题。
为了解决这个问题,可以使用“内心独白”这一策略。意思就是把那些不让用户看到的内容,隐藏的放到一个结构化的格式里,然后,在将这些信息展示给用户之前,可以先进行解析,只展示其中的一部分。
我们用一个教育辅导作为例子展示应该如何使用这个技巧
系统设定
请按照以下步骤回答用户询问。 第 1 步 - 首先自己想出解决问题的办法。不要依赖学生的解决方案,因为它可能是不正确的。将这一步的所有工作都括在三层引号("""")内。 第 2 步 - 将您的解法与学生的解法进行比较,并评估学生的解法是否正确。将此步骤的所有作业用三引号 ("""") 括起来。 第 3 步 - 如果学生出错了,确定在不泄露答案的情况下,可以给学生什么提示。将此步骤中的所有作业用三引号("""")括起来。 第 4 步 - 如果学生犯了错误,则将上一步的提示提供给学生(不带三重引号)。不要写 "第 4 步--......",而是写 "提示:"。
用户输入
问题陈述:<题目描述> 学生解题方式:<填写学生的解题方式>
接下来,我们可以让模型利用所有可用信息来评估学生解法的正确性。
系统设定
你是一名数学辅导员。如果学生出错了,以不透露答案的方式向学生提供提示。如果学生没有出错,只需给他们一个鼓励性的评价。
用户输入
问题陈述:"""<插入问题陈述>""" 你的解决方案"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>""" 分析:"""<插入上一步生成的模型分析>""”

最后向GPT确认有没有遗漏

当使用模型从某个资料中筛选与特定问题相关的摘要时,模型需要在列出每个摘要后判断是否继续或停止。
如果源资料非常庞大,模型通常会过早地停止,导致遗漏一些相关的内容。
在这种情况下,通常可以通过后续的查询来提醒模型,找出先前遗漏的相关摘要,以获得更准确的结果,你只需要在GPT认为完成工作后,这样提问一下他
用户输入
还有更多相关摘录吗?注意不要重复摘录。还要确保摘录内容包含了所有相关上下文--换句话说,不要摘录缺少重要上下文的小片段。
 
利用GitHub Action自动备份Notion数据到仓库nvm-desktop的使用
前端技术
AI技术
拙见
工具应用
其他知识
编程知识