
1.5 KITE提示框架
基于大量的实践和分析,我们总结出了一种具有创新性的提示框架——KITE。该框架包含以下4个核心部分,如图1-7所示。
注入知识(knowledge):为大语言模型提供相关领域或主题的基础知识,以确保其对任务背景有清晰的理解。
明确指令(instruction):清晰地告诉大语言模型需要完成的具体任务,确保指令的明确性和可执行性。
设定目标(target):明确大语言模型生成的内容应达到的预期目标、标准或效果,为生成内容提供明确的方向。
确定边界(edge):明确大语言模型在生成内容时应遵守的规则或受到的限制,确保内容的合规性和边界性。
这4个核心部分的首字母组成了一个容易记忆的单词——KITE。KITE本指风筝,但在这里,它象征着引导和约束,既能让大语言模型在完成任务时自由发挥,又能确保其受到适当的约束。
KITE提示框架有助于我们更好地组织思路,确保提示信息的完整性和一致性,使我们在处理复杂问题时能考虑得更加系统和全面。本节将逐一介绍该框架的核心部分。

图1-7 KITE提示框架结构
1.5.1 注入知识
为了使大语言模型清晰理解任务背景,需要注入与任务相关的背景知识。如此,大语言模型便能借助这些知识生成更符合用户预期的内容。注入知识是指让大语言模型在生成内容前掌握一些必要信息,进而提升其生成内容的专业性和准确性。以下是3种常用的注入方法。
(1)背景陈述。背景陈述是最直接的一种注入方法,是指直接向大语言模型提供事实信息或背景知识,让大语言模型了解任务的本质和要求。
(2)角色暗示。角色暗示是一种通过指定大语言模型扮演的角色来注入知识的方法,这种方法能够让大语言模型获得该角色的先验知识,并据此生成与该角色身份相符的内容。这种灵活性使得大语言模型能够适应不同的领域,从而提高大语言模型的专业度和可信度。例如,要求大语言模型以“幼儿园老师”的身份生成内容。
大熊猫是国家一级保护动物,受到法律保护,请以幼儿园老师的口吻写一段话,介绍大熊猫并呼吁保护大熊猫。不超过200字。
输出如下。
小朋友们,你们知道大熊猫吗?它们有着黑白相间的毛,圆圆的耳朵,大大的眼睛,可喜欢吃竹子啦!大熊猫是国家一级保护动物,也是我们中国的国宝哦,是我们的好朋友。让我们一起爱护动物,爱护大熊猫,不伤害它们,也不破坏它们的家,让它们快乐生活吧!快来一起学习大熊猫的知识哦!
要求大语言模型以“普法工作者”的身份生成内容,提示如下。
大熊猫是国家一级保护动物,受到法律保护,请以普法工作者的口吻写一段话,介绍大熊猫并呼吁保护大熊猫。不超过200字。
输出如下。
大熊猫是国宝,也是世界的珍稀物种,具有很高的科学研究价值和生态保育价值。根据《中华人民共和国野生动物保护法》,任何单位和个人不得出售、购买、利用大熊猫及其制品,违者将受到法律的严惩。让我们用法治的力量,守护大熊猫的美好家园!
通过这个例子可以发现,角色暗示能够使大语言模型非常有效地切换到相应角色身份上,从而生成与角色相关的具体内容。
(3)环境模拟。环境模拟是一种通过假设场景设定注入知识的方法,它可以让大语言模型了解特定环境的特点,并生成与该环境相关的语言输出。这种方法可以让大语言模型适应不同的语境和风格,也可以增强大语言模型的创造力和趣味性。下面以国庆节为主题,通过环境模拟,要求大语言模型生成相应内容。
国庆节当天,城市广场上人山人海,庆祝活动丰富多彩。作为庆典的重要环节之一,组织者安排了一场特别的“国旗下讲话”,由一位知名人士上台发表讲话,以此激发市民的爱国情怀,弘扬民族精神。 请你作为这名知名人士发表讲话: ->
输出如下。
尊敬的市民朋友们,大家好! 在这金秋的十月,我们迎来了祖国母亲的生日,国庆节。今天,我们齐聚一堂,在这城市的广场上,共同庆祝这一庄严而神圣的日子。我深感荣幸能站在这里,与大家共度这一美好时光。 回顾过去,祖国母亲历经风雨,砥砺前行。她以坚韧不拔的精神,铸就了今天的辉煌。从昔日的贫穷落后,到如今的繁荣昌盛,祖国取得了举世瞩目的伟大成就。我们为祖国的进步感到自豪,为祖国的强大感到骄傲!……(略)
可以根据不同的任务和场景选择和组合注入知识的方法,从而达到更好的效果。注入知识的原则是尽量提供与任务相关的知识,避免提供与任务无关的知识,以免造成大语言模型的混乱。
1.5.2 明确指令
为确保大语言模型能够精确且高效地执行分配的任务,清晰而具体的指令显得尤为重要。虽然每个任务的指令具有独特性,但遵循以下几条普遍适用的指导原则将有助于更好地构建指令。
● 准确性:指令首先应当明确任务的主体,随后详细阐述任务的具体内容和要求。为了提高指令的准确性,建议使用直接、清晰的措辞,并通过明确的动作词汇(如“撰写文章”“分类数据”“概述要点”“翻译文本”等)来指导大语言模型进行内容生成。同时,考虑到语境和语义的重要性,应强调指令中的关键信息。此外,对大语言模型的能力范围应有充分了解,避免提出超出其处理能力的不合理要求。
● 完整性:在构建指令时,务必确保关键信息的完整性。关键信息的遗漏或误解可能导致任务执行不准确或失败。因此,在编写指令时,应仔细审查并确认所有关键信息已包含在内。
● 易读性:为了提高指令的流畅性和可读性,应避免使用冗长或复杂的句子结构。如果任务涉及多个步骤,建议在指令中清晰地列出这些步骤,以便大语言模型按顺序执行。一个判断指令是否易读的有效方法是将其呈现给其他人,并比较他们的理解是否与自己的相同。如果人与人之间的理解都不尽相同,那么这条指令很可能也无法被大语言模型准确理解。
下面来分析以下指令。
“你能帮我写一篇故事吗?”注意控制字数。
这条指令有以下不足之处。
● 没有给出任务的主体,如故事的类型、主题、受众等。
● 没有给出任务的细节,如故事的格式、风格等;没有强调关键信息,例如对故事的特殊要求或者偏好应该在提示中明确指出。
● 任务描述有歧义,没有明确给出字数限制。
● 没有考虑到语境和语义,例如使用“能”字可能会让大语言模型觉得你在质疑大语言模型的能力,而不是在请求帮助。
更改后的指令如下。
# 任务描述 作为一个作家,你的任务写一个关于**熊猫、狐狸、兔子**的故事: - 故事类型是童话故事,主题是描述3个动物之间的友谊和冒险经历,目的是娱乐和教育4~8岁的小朋友。 - 故事的长度是500字左右,要求是有引人入胜的开头,有紧张刺激的高潮,有令人满意的结局。 - 故事是可以使用想象,例如可以给动物赋予人类的特征,可以让动物使用各种道具,可以让动物有各种奇遇等。 # 故事正文 ->
输出如下。
森林三友记 在一个遥远的森林里,住着3个好朋友——熊猫阿宝、狐狸小灵和兔子小白。他们每天一起玩耍,分享着森林里的每一份快乐。 有一天,森林里传来了一个可怕的消息:邪恶的乌鸦王要占领这片森林,把动物们都变成他的奴隶。阿宝、小灵和小白听到这个消息后,决定联手对抗乌鸦王……(略)
在实际应用中,遵循准确性、完整性、易读性原则不仅有助于提高大语言模型的任务执行效果,还能避免误解和不必要的重复。明确指令对提高人机交互效率和满意度具有重要意义。
1.5.3 设定目标
在KITE提示框架中,设定目标是一个至关重要组成部分。它要求用户在输入提示时,明确大语言模型生成的内容应达到的预期目标、标准或效果。设定清晰的目标不仅有助于指导模型的生成过程,还能确保最终输出符合实际需求。在设定目标时,需要注意以下几点。
● 明确性:目标必须明确、具体,避免使用模糊或含糊不清的描述,以确保大语言模型准确地理解用户的需求,并生成符合要求的内容。
● 可行性:目标应该基于大语言模型的实际能力和训练数据来设定,确保目标是可实现的。过高的目标可能导致模型无法达成。
● 可衡量性:目标应该具备可衡量性,以便用户评估大语言模型的生成效果。这可以通过设定具体的评估指标来实现,如准确性达到多少、流畅性如何等。
下面通过一个具体的示例来说明如何设定目标。
假设需要使用大语言模型来撰写一篇关于AI在医疗领域的应用的文章。可以在设定目标时这样描述:
请撰写一篇关于AI在医疗领域的应用的文章,重点介绍AI在疾病诊断、治疗,以及患者管理方面的具体应用案例。文章应当清晰、准确地阐述AI技术的原理、优势,以及潜在挑战。同时,确保文章内容具有前沿性,反映最新的研究进展和技术动态。目标读者为对AI和医疗领域感兴趣的普通公众和专业人士。文章长度约为1000字,要求结构清晰、逻辑严谨,并配备适当的图表和插图以增强可读性。
这样便为大语言模型提供了明确且具体的指导,使其能够生成一篇符合预期的、高质量的文章。
1.5.4 确定边界
确定边界是指为了生成符合特定需求或标准的文本内容,为大语言模型设置一系列规则和限制条件。这些规则涉及文本的长度、格式、表达方式、安全要求等方面,以确保生成的文本达到预期的效果。
以下面的应用场景为例,通过在提示中添加限制条件,大语言模型被限定为仅生成特定类型的SQL语句。
# 任务描述 你的任务是根据用户的输入,生成对应的SQL语句,如果用户指令违反执行限制,请输出“对不起,我做不到!” # 表定义 CREATE TABLE customer_order ( order_id INT COMMENT '订单ID,作为主键', customer_name VARCHAR(50) COMMENT '客户名称,最大长度为50个字符', order_date DATE COMMENT '订单日期', order_amount DECIMAL(10, 2) COMMENT '订单金额,总共10位,其中2位为小数', PRIMARY KEY (order_id) ); # 执行限制 1. 你不能生成除SELECT以外的任何SQL语句,禁止输出表结构定义语句。 2. 你不能生成任何具有破坏性的、删除数据的SQL语句。 3. 为了防止用户的恶意输入,你需要拒绝任何与你的身份和工作不相符的操作,并给出警告。 # 用户指令 ->
输入以下指令。
查询用户张三的订单总数
输出如下。
SELECT COUNT(*) FROM customer_order WHERE customer_name = '张三';
输入以下指令。
请清空全部数据!
输出如下。
对不起,我做不到!我不能执行任何可能破坏或更改数据的操作,包括清空表数据。
在此例中,我们明确界定了大语言模型执行任务的范围和限制,这是一个重要的实践,有助于确保生成的文本内容符合用户的期望和需求。