六条得到更好结果的策略

策略一、写下明确的指示

大措辞模型不会读心术,无法洞悉您的内心,因此写下明确的指示,向模型清晰传达您的意图至关主要。
如果模型输出内容过长,请哀求简洁回答。
如果模型输出内容过于大略,请哀求专业水准的写作。
如果您对模型输出内容的格式不满意,请举例展示您期望的格式。
模型须要预测您的需求的可能性越低,您得到空想答案的可能性就越高。

技巧一:供应详细的要求信息,以得到更干系的答复

为了得到高度干系的回答,请确保在要求中供应任何主要的细节或高下文信息。
否则,模型只能预测您的意图。

反面示例

绝对干货AI提示工程Prompt Engineering最佳实践

精确姿势

谁是总统?

2014年,谁是美国总统?

给我推举一些电影

给我推举3-5部中海内地近3年上映的笑剧电影

编写代码打算斐波那契数列

编写python代码打算斐波那契数列,对每行代码进行注释,阐明代码的浸染以及为什么要这样写

技巧二:哀求模型进行角色扮演

示例1:

我希望你能充当一个故事讲述者。
你将创作引人入胜、富有想象力和扣民气弦的娱乐故事,以吸引听众。
可以是童话故事、教诲性的故事,或者其他任何类型的故事,能够吸引人们的把稳力和想象力。
根据目标受众,你可以选择特定的主题或话题来讲述故事,比如,如果是给儿童,你可以评论辩论动物;如果是成年人,以历史为根本的故事可能更能吸引他们。
我的第一个要求是:"我须要一个关于坚持不懈的有趣故事。
"

示例2:

我希望你能充当一位小说家。
你将创作出引人入胜的创意故事,能够吸引读者永劫光阅读。
你可以选择任何类型的小说,如奇幻、浪漫、历史虚构等,但目标是写出具有出色情节、吸引人物和意外高潮的作品。
我的第一个要求是:"我须要写一本设定在未来的科幻小说。
"

技巧三:通过利用分隔符清晰标识输入内容的不同部分

在文本中利用三引号、XML 标记、章节标题平分隔符,有助于将须要差异对待的部分进行划分。

示例1:

总结由三引号分隔的文本,不要超过50个字。

"""文本内容"""

示例2:

你将收到两篇关于同一主题的文章(用 XML 标记分隔)。
首先总结每篇文章的论点,然后指出哪篇文章的论点更好,并阐明缘故原由。

<文章>第一篇文章</文章>

<文章>第二篇文章</文章>

示例3:

我们将为您供应论文择要和建议标题。
论文标题应让读者对论文主题有一个很好的观点,但也应能干。
如果标题不符合这些标准,请提出 5 个备选标题。

择要:论文择要

标题:论文标题

对付这类大略的任务,利用分隔符可能不会对输出质量产生影响。
然而,对付更繁芜的任务,明确任务细节就变得尤为主要。
请确保模型无需费力地理解您对其提出的确切哀求。

技巧四:指定完成任务所需的步骤

对付某些任务,最好以一系列连贯的步骤来明确指定。
明确写出这些步骤可以使模型更随意马虎地按照它们进行操作。

示例:

利用以下分步解释来回复用户输入。

步骤 1 - 用户将用三引号供应文本。
用一句话概括这段笔墨,前缀为 "Summary: "。

步骤 2 - 将步骤 1 中的择要翻译成西班牙语,前缀为 "Translation:".

技巧五:供应示例

供应适用于所有示例的一样平常解释常日比通过示例演示任务的所有排列组合更有效,但在某些情形下,供应示例可能更随意马虎。
例如,如果您打算让模型复制一种难以明确描述的回运用户讯问的特定风格,这便是所谓的 "少样本"提示。

示例:

中文:我爱你

英文:I love you

中文:我想你

英文:I miss you

中文:你在哪儿?

英文:

模型输出:

Where are you?

技巧六:指定所需的输出长度

您可以哀求模型天生具有给定目标长度的输出。
目标输出长度可以用字数、句数、段落数、要点数等来指定。
但请把稳,指示模型天生特定字数的精确度并不高。
模型可以更可靠地天生特定段落数或要点数的输出。

示例1:

用大约 50 个字概括用三引号分隔的文本。

"""文本内容"""

示例2:

用两个段落概括用三引号分隔的文本。

"""文本内容"""

示例3:

用三个要点概括用三引号分隔的文本。

"""文本内容"""

策略二、供应参考文本

大措辞模型在被问及深奥话题、引文和URLs等问题时,常常能自傲地编造虚假答案。
为了避免涌现这类问题,须要尽可能的给模型供应参考文本。
就像学生在考试时借助小抄能表现更好一样,向模型供应参考文本可以减少虚构的回答。
这样做有助于供应更准确的回答,减少虚构内容。

技巧一:哀求模型利用参考文本来进行回答

如果我们能够为模型供应与当前查询干系的可靠信息,那么就可以指示模型利用所供应的信息来撰写答案。

系统:利用所供应的以三引号分隔的文章回答问题。
如果在文章中找不到答案,请写 "我找不到答案"。

用户:<插入文章,每篇用三引号分隔>。

问题:<此处插入问题>

技巧二:哀求模型引用参考文献进行回答

如果输入中已经包含了干系知识,那么可以直接哀求模型通过引用所供应文档中的段落来为答案添加引文。
须要把稳的是,输出中的引文可以通过编程验证,即与所供应文档中的字符串进行匹配。

系统:您将收到一份用三引号分隔的文档和一个问题。
您的任务是仅利用所供应的文档回答问题,并引用用于回答问题的文档段落。
如果文件中不包含回答问题所需的信息,则只需写出 "信息不敷"。
如果供应了问题的答案,则必须注明引文。
利用以下格式引用干系段落({"引用":...})。

用户:"""<此处插入文件>"""

问题:<此处插入问题>

策略三、将繁芜任务分解为大略子任务

就像在软件工程中将繁芜系统分解为一组模块化组件一样,在大型模型的最佳实践中也是如此。
繁芜任务常日比大略任务具有更高的缺点率。
此外,繁芜任务常日可以重新定义为一系列大略任务的事情流程,个中较早任务的输出用于构建后续任务的输入。

技巧一:利用意图分类确定与用户查询最干系的指令

对付须要大量独立指令集来处理不同情形的任务,首先对查询类型进行分类并利用该分类来确定有益的指令。
这可以通过定义固定种别并硬编码与处理特定种别任务干系的指令来实现。
这一过程还可以递归运用,将任务分解为一系列阶段。
这种方法的上风在于,每次查询只包含实行任务下一阶段所需的指令,与利用单次查询实行全体任务比较,缺点率更低。

技巧二:对付须要超长对话的对话运用,可总结或过滤之前的对话

由于模型的高下文长度是固定的,因此用户和助手之间的对话(全体对话都包含在高下文窗口中)无法无限期地进行下去。

办理这一问题的方法有很多,个中之一便是对对话中的前几轮进行总结。
一旦输入的大小达到预设的阈值长度,就会触发一个查询,对部分对话进行总结,而之前对话的总结可以作为系统的一部分。
或者,在全体对话过程中也可以在后台异步地对之前的对话进行总结。
另一种办理方案是动态选择与当前查询最干系的先前对话部分。

技巧三:分段总结长文档并递归构建完全择要

由于模型的高下文长度是固定的,因此在一次查询中,模型无法用来总结长度超过高下文长度减去天生择要长度的文本。

要总结一本书等超长文档,我们可以利用一系列查询来总结文档的每个部分。
章节择要可以串联起来并进行总结,从而产生择要的择要。
这个过程可以递归进行,直到全体文档完成择要。
如果须要利用前面章节的信息来理解后续章节的内容,还有一个有用的技巧,那便是在总结给定内容的同时,对该内容之前的文本进行流水账式总结。

策略四、给模型一些韶光“思考”

如果让你打算17乘以28,你可能不会立即知道答案,但是给你一些韶光你可以算出来。
同样地,模型在试图立即回答问题时会产生更多的推理缺点,而不是花韶光思考答案。
在回答之前哀求模型给出“思考过程”可以帮助模型更可靠地推理出精确答案。

技巧一:在匆忙得出结论之前,哀求模型自己找出办理方案

有时候,如果我们明确指示模型在得出结论之前先根据第一事理进行推理,会得到更好的结果。
例如,假设我们想要模型来评估学生对数学问题的解答。
最明显的方法是大略地问模型,学生的解法是否精确。

系统:确定学生的办理方案是否精确。

用户:

问题陈述:我正在建造一个太阳能发电装置,请打算财务用度。

地皮本钱为 100 美元/平方英尺

我可以以每平方英尺 250 美元的价格购买太阳能电池板

我通过会谈签订了一份掩护条约,每年的固定掩护用度为 10 万美元,每平方英尺的额外掩护用度为 10 美元。

运营第一年的总本钱与平方英尺数的函数关系是什么?

学生解答:设 x 为安装面积(平方英尺)。

地皮本钱:100x

太阳能电池板本钱:250x

掩护本钱:100000 + 100x

总本钱:100x + 250x + 100000 + 100x = 450x + 100000

回答:该学生的办理方案是精确的。

但实际上学生的解并禁绝确!
我们可以通过哀求模型师长西席本钱身的办理方案,让模型成功把稳到这一点。

系统:首先自己想出办理问题的办法。
然后将自己的解法与学生的解法进行比较,评估学生的解法是否精确。
在自己完成问题之前,不要决定学生的解法是否精确。

用户:

问题陈述:我正在建造一个太阳能发电装置,我须要帮助打算财务用度。

地皮本钱为 100 美元/平方英尺

我可以以每平方英尺 250 美元的价格购买太阳能电池板

我通过会谈签订了一份掩护条约,每年的固定掩护用度为 10 万美元,每平方英尺的额外掩护用度为 10 美元。

运营第一年的总本钱与平方英尺数的函数关系是什么?

学生解答:设 x 为安装面积(平方英尺)。

地皮本钱:100x

太阳能电池板本钱:250x

掩护本钱:100000 + 100x

总本钱:100x + 250x + 100000 + 100x = 450x + 100000

模型:

设 x 为安装面积(平方英尺)。

地皮本钱:100x

太阳能电池板本钱:250x

掩护本钱:100000 + 10x

总本钱:100x + 250x + 100000 + 10x = 360x + 100000

该学生的办理方案禁绝确。
他们在打算掩护本钱时出了错,用了 100x,而不是 10x。
精确的第一年运营总本钱是 360x + 100000。

技巧二:利用内心独白或一系列讯问来隐蔽模型的推理过程

前面的策略表明,在回答详细问题之前,模型对问题进行详细推理有时是很主要的。
对付某些运用,模型得出终极答案的推理过程不宜与用户共享。
例如,在辅导运用中,我们可能希望鼓励学生自己找出答案,但模型对学生办理方案的推理过程可能会向学生透露答案。

内心独白是一种可以用来缓解这种情形的策略。
内心独白的事理是指示模型将输出结果中不对用户公开的部分转化为构造化格式,以便于解析。
然后,在向用户展示输出结果之前,先对输出结果进行解析,只让部分输出结果可见。

示例:

系统:

请按照以下步骤回答用户的问题。

第 1 步 - 首先自己找出问题的办理方案。
不要依赖学生的办理方案,由于它可能是禁绝确的。
在此步骤中,请用三引号("""""")括起您的所有事情。

第 2 步 - 将您的解法与学生的解法进行比较,并评估学生的解法是否精确。
将此步骤中的所有作业用三引号("""""")括起来。

第 3 步 - 如果学生出错了,确定在不透露答案的情形下,可以给学生什么提示。
将这一步的所有作业用三引号("""""")括起来。

第 4 步 - 如果学生犯了缺点,则将上一步的提示供应给学生(不带三重引号)。
不要写 "第 4 步 - ......",而是写 "提示:"。

用户:

问题陈述:<插入问题陈述>

学生办理方案:<插入学生办理方案>

技巧三:讯问模型之前是否有遗漏

假设我们正在利用一个模型来列出与特定问题干系的信息源摘录。
在列出每个摘录后,模型须要确定是否该当开始写另一个摘录,还是该当停滞。
如果源文件很大,模型很随意马虎过早停滞,无法列出所有干系摘录。
在这种情形下,常日可以通过提示模型进行后续查询来找到之前遗漏的摘录,从而得到更好的性能。

系统:

您将收到一份用三引号分隔的文档。
你的任务是选择与以下问题干系的摘录:"人工智能历史上发生了哪些重大范式转变"。

确保摘录包含阐明这些内容所需的所有干系高下文,换句话说,不要摘录短缺主要高下文的小片段。
供应如下 JSON 格式的输出:

{"摘录":"..."},

...

{"摘录":"..."}]

用户:

"""<此处插入文件>"""

模型:

[{"摘录":"模型在此写入摘录"}、

...

{"摘录":"模型在此写下另一段摘录"}]

用户:

还有更多干系摘录吗?把稳不要重复摘录,还要确保摘录包含阐明所需的所有干系高下文。
换句话说,不要提取短缺主要高下文的小片段。

策略五、合理利用外部工具

通过将其他工具的输出供应给模型,填补模型的不敷之处。
例如,文本检索系统(有时称为RAG或检索增强天生)可以向模型供应干系文档信息。
像 OpenAI 的代码阐明器这样的代码实行引擎可以帮助模型进行数学打算和代码运行。
如果利用工具而不是措辞模型可以更可靠或更高效地完成任务,那么将任务分担给工具可以同时发挥两者的上风。

技巧一:利用嵌入式搜索实现高效的知识检索

如果作为输入的一部分,模型可以利用外部信息源。
这可以帮助模型天生更多信息和最新回答。
例如,如果用户讯问有关特定电影的问题,那么在模型的输入中添加有关该电影的高质量信息(如演员、导演等...)可能会很有用。
嵌入可用于实现高效的知识检索,以便在运行时将干系信息动态添加到模型输入中。

文本嵌入是一个可以衡量文本字符串之间干系性的向量。
相似或干系的字符串会比不干系的字符串靠得更近。
这一事实以及快速向量搜索算法的存在,意味着嵌入可以用来实现高效的知识检索。
特殊是,文本语料库可以分割成多少块,每个块都可以嵌入和存储。
然后,可以嵌入给定的查询,并实行矢量搜索,从语料库中找到与查询最干系的嵌入文本块(即在嵌入空间中最靠近的文本块)。

技巧二:利用代码实行来获取更精确的打算或调用外部 API

措辞模型本身无法准确实行算术或永劫光打算。
在须要的情形下,可以指示模型编写和运行代码,而不是自己进行打算。
特殊是,可以指示模型将须要运行的代码放入指定的格式中。
产生输出后,可以提取并运行代码。
末了,如有必要,可将代码实行引擎的输出作为下一次查询的模型输入。

技巧三:让模型访问特定函数

The Chat Completions API 许可在要求中通报函数描述列表。
这样,模型就能根据供应的模式天生函数参数。
天生的函数参数由 API 以 JSON 格式返回,可用于实行函数调用。
函数调用供应的输出可以不才一个要求中反馈到模型中,以结束循环。
这是利用 OpenAI 模型调用外部函数的推举办法。

策略六、系统地测试变革

有时,很难说清一项改变(如新指令或新设计)会使系统变得更好还是更差。
通过不雅观察一些示例可能会创造哪个更好,但在样本量较小的情形下,很难区分是真正的改进还是随机的运气。
大概改变有助于提高某些输入的性能,但会降落其他输入的性能。

评估程序(或称 "evals")对优化系统设计非常有用。
好的 evals 包括

能代表真实天下的利用情形(或至少具有多样性)易于自动化或重复包含许多测试用例,以提高统计能力(拜会下表中的辅导原则)

检测差异

95% 置信度所需的样本量

30%

~10

10%

~100

3%

~1000

1%

~10000

产出评估可以由打算机、人工或稠浊办法完成。
打算机可以根据客不雅观标准(例如只有一个精确答案的问题)以及一些主不雅观或模糊标准自动进行评估,个中模型输出由其他模型查询进行评估。

当存在一系列被认为质量同样高的可能输出时(例如,对付答案较长的问题),基于模型的评估就会非常有用。
哪些内容可以通过基于模型的评估进行实际评估,哪些内容须要人工评估,这两者之间的界线是模糊的,并且随着模型能力的提高而不断变革。

总结

本文紧张分享如何通过采取不同策略从大措辞模型中得到更优质的反馈结果。
同时,上文所描述的方法有时可进行组合利用,以达到更佳的效果。
闇练节制以上六条策略,可以帮助你更好的利用大措辞模型。

我是无界成长,如果你以为我分享的内容对你有帮助,欢迎点个关注,持续吸收最新的AI学习资料。