一、清晰的指令
技巧一:你的问题细节越多,就能得到越相关的答案
你的问题细节越多,大模型就越能够知道你想要问什么,不然它就只能靠猜了。
反面例子 ❌ | 正面例子 ✅ |
---|---|
如何在 Excel 中添加数字? | 如何在 Excel 中累加一行金额数?我想要让整个表格的每一行都能够自动计算,最终所有行的总数显示在最后一列。 |
总统是谁? | 2021 墨西哥总统是谁?选举周期是多久? |
写一段计算斐波那契数列的代码 | 编写一个 TypeScript 函数来高效地计算斐波那契数列。对代码进行详细注释,解释每个部分的作用以及为什么以这种方式编写。 |
总结会议纪要 | 用一段话总结会议要点,然后为每一个发言人和他们的关键点做一个总结列表 |
技巧二:设定角色/性格
可以在「系统消息」或者「角色预设」中设定大模型的角色/性格,设定角色/性格的好处挺多,比如可以让 AI 明确后续的指令意图,生成的内容更加地一致等。
🌰 例子:
【系统消息】你是一个英语母语人士,在美国的一所中学担任英语教师。接下来,我会告诉你一些单词,你必须向像我这样的初中生解释它们的意思。单词解释应包含三个部分:发音、详细含义和另外三个例句。当你给出例句时,请在句子中突出显示目标单词。
技巧三:使用分隔符
使用像三引号(英文引号 """
)、html/xml 标签、章节标题等分隔符,清晰地表示输入的不同部分
三引号(
"""
或'''
)是 Python 中用于表示多行字符串的标识符,其他语言比如 JavaScript 中也有类似的标识符,比如三个反引号( ```)。
🌰 例子 1:
消息类型 | 消息内容 |
---|---|
【用户消息】 | """这是我的文本""" |
🌰 例子 2:
消息类型 | 消息内容 |
---|---|
【系统消息】 | 我会提供给你相同主题的两篇文章(用 XML 符号分割)。首先总结一下每篇文章的论点,然后判断哪篇文章观点更有力,并提供你的理由 |
【用户消息】 | <article>第一篇文章</article> <article>第二篇文章</article> |
消息类型 | 消息内容 |
---|---|
【系统消息】 | 我会给你一篇论文摘要和一个建议的标题。论文标题应该能够让读者对论文的主题有一个很好的了解,同时也要引人注目。如果这个标题不符合这些标准,请提供5个替代方案。 |
【用户消息】 | 摘要:这是摘要内容 标题:这是标题内容 |
对于一些简单的任务,用分隔符效果没啥大的区别,但是对于复杂的任务、引用不同的内容,必须使用分隔符清晰地区分,不要让 AI 去瞎猜。
技巧四:少量样本学习
一般来说,我们基本都是零样本(Zero-Shot)让 ChatGPT 输出,但大模型输出的格式并不是我们想要的:
反面例子 ❌
【用户消息】
"断月"是一种树,长得很高且树叶茂密。输出一个使用"断月"这个单词的例子:
【AI 回复消息】
"断月"这棵树巍峨挺立,它的枝叶茂盛,仿佛能遮挡月光。夜晚,当月亮升起时,它的树影在地面上投下一片阴影,好像月亮被它巧妙地切割了一般。
少数样本(Few-Shot)学习很简单,就是给大模型一些适当的例子,来得到预期的输出格式和内容:
正面例子 ✅
【用户消息】
"追云"是一种小型的、毛茸茸的动物,原产于坦桑尼亚。一个使用"追云"这个单词的句子是:我们在非洲旅行,我们看到了这些非常可
爱的追云。
"落红雨"是一种植物,常常在潮湿的环境中开花。一个使用"落红雨"这个单词的句子是:我们在亚马逊热带雨林中,拍到了很多落红雨的美丽照片。
"断月"是一种树,长得很高且树叶茂密。输出一个使用"断月"这个单词的例子:
【AI 回复消息】
"断月"是一种生长在高海拔地区的大树,它的树干直且粗壮。一个使用"断月"这个单词的句子是:在我们的登山旅程中,我们经过了许多高耸入云的断月树,它们在峭壁旁显得格外壮观。
技巧五:指定输出的长度
我们可以要求模型输出指定的长度/数量,可以是单词、句子、段落、列表项等等。值得注意的是,大模型在指定单词数量方面的精度有限,但在句子数量、段落数量、列表项数量等方面还是很可靠的。
🌰 例子 1:
消息类型 | 消息内容 |
---|---|
【用户消息】 | 大概 50 个字总结三引号中的内容: """这是我的文本内容""" |
🌰 例子 2:
消息类型 | 消息内容 |
---|---|
【用户消息】 | 用 2 个段落总结三引号中的 内容: """这是我的文本内容""" |
🌰 例子 3:
消息类型 | 消息内容 |
---|---|
【用户消息】 | 用 3 个列表项总结三引号中的内容: """这是我的文本内容""" |