本文档介绍了什么是系统指令,以及撰写有效系统指令的最佳实践。如需了解如何向提示添加系统指令,请改为参阅使用系统指令。
系统指令是指模型在处理提示之前所处理的一组指令。我们建议您使用系统指令来告知模型您希望其如何运作以及如何回答提示。例如,您可以添加要采用的人设、背景信息和格式设置指令等内容。
如果您想为模型提供最终用户无法查看或更改的信息,系统指令会特别有用。这有助于您为模型提供额外的背景信息,以便其了解任务、提供自定义程度更高的回答,并在用户与模型的整个交互过程中遵循特定的准则。此外,如果您想使用同一组指令运行多个提示,系统指令也会很有用。
如果设置了系统说明,则该说明会应用于整个请求。当提示中包含系统指令时,该指令适用于用户与模型间的多轮交互。虽然系统指令与提示内容是分开的,但它们仍然是整体提示的一部分,因此受标准数据使用政策的约束。
使用场景
一般来说,我们建议使用系统指令来执行以下一项或多项操作:
- 定义角色
- 定义输出格式
- 定义输出风格和语气
- 为任务定义目标或规则
为提示提供更多背景信息
角色
您可以在系统指令中定义角色或角色,从而影响模型对提示的回答方式。
例如,假设您想使用模型来帮助学生学习如何撰写论文。比较在定义以下角色时模型的回答之间的差异:
- 您是一个机器人,任务是教大学生如何撰写有关给定主题的论文。
- 您是一个机器人,任务是帮助小学生了解如何撰写有关给定主题的论文。
| 系统指令 | 面向大学生的机器人 | 面向小学生的机器人 |
|---|---|---|
| 你是一个机器人,任务是教大学生如何撰写关于给定主题的论文。 | 你是一个机器人,任务是帮助小学生了解如何撰写有关给定主题的论文。 | |
| 提示 | 主题:光合作用 | 主题:光合作用 |
| 响应 | 撰写有关光合作用的论文:大学生指南 光合作用是一个复杂而迷人的过程,是地球上生命的基础。撰写相关论文是一项有益的体验,可让您更深入地了解其复杂性并理解其重要性。下面详细介绍了如何完成此任务:
论文标题示例:
请注意:一篇关于光合作用的优秀论文应清晰、详实且引人入胜。按照这些步骤操作并利用扎实的研究基础,您就可以撰写出一篇成功的论文,展示您对这一重要生物学过程的理解。 |
这个主题很棒!光合作用对于地球上的生命至关重要。您可以按以下方式撰写相关论文:
请注意:您才是论文方面的专家!学习和撰写有关光合作用的知识很有趣。 |
输出格式
您可以在系统指令中定义输出格式(例如 Markdown 或 JSON),从而影响模型设置回答格式的方式。
例如,假设您想使用模型来总结客户对您商家的评价。比较在定义以下输出格式时模型回答之间的差异:
- 以 JSON 格式输出响应。 在 JSON 对象之外,在文末写下 3-5 句关于如何改进的建议。
- 无格式要求。
| 系统指令 | JSON | 无格式要求 |
|---|---|---|
您是高端企业的公关专业人士。请按照这些说明操作,并根据提供的用户输入来提供响应。 说明:
|
您是高端企业的公关专业人士。请按照这些说明操作,并根据提供的用户输入来提供响应。 说明:
|
|
| 提示 |
Chad Brocker:4 星 这家水疗中心很棒!一走进来,整个氛围就让您放松下来。感觉就像在恍惚中。您无需担心任何问题。工人会了解您的日程安排,并引导您完成体验。我得到的一切都很棒。按摩、面部护理、泥浴。此外,他们还实行“禁止使用手机”政策,因此您会感觉自己身处一个完全不同的世界。不过价格有点贵。 查看完整提示
Lisa Simmens:5 星 我们度过了一段美好的时光!我和我最好的朋友在生日当天一起去做了水疗。当我告诉您,我们的生活发生了变化。员工会尽心尽力,确保您获得尽可能出色的体验。从向您提问到提供优质服务,再到确保您准时到达每一次预约,他们确实是最好的。我们很快就会恢复!附注:全身去角质护理! Allie Wood:2 星 虽然工作人员的客户服务非常棒,但我的按摩很痛,面部护理也让我感到灼热。此外,他们不让您使用手机,这会让您感到额外的压力。环境很安静,但没有手机让我无法放松。此外,价格也十分昂贵。 Suzy Michaels:3 颗星 这个聊天室的环境超凡脱俗。这真是如入天堂。我所享受的服务是我所经历过的最好的服务。但他们没有提供任何茶点。我说,您至少应该提供水! Martin Wong:4 星 体验非常棒。我唯一的抱怨是无法查看手机。 Debbie Ruiz:5 星 环境非常棒。出色的员工。服务非常棒。此外,这里是无手机环境,这让您可以放松身心,享受宁静的氛围。我绝对会向所有人推荐这家酒店! Lucy Mantel:1 颗星 不提供茶点。禁止使用手机。按摩不当。体验不太好。不推荐。 |
|
| 响应 |
{
""pros"": [
""relaxing atmosphere"",
""attentive and efficient staff"",
""high-quality services""
],
""cons"": [
""pricey"",
""no cell phone policy"",
""no refreshments""
]
}
虽然水疗中心因其宁静的氛围、出色的员工和一流的服务而备受赞誉,但仍有一些方面需要改进。解决客户对严格的禁止使用手机政策和缺乏茶点的担忧,可以显著提升整体体验。考虑为宾客提供指定区域,以便他们根据需要使用手机,并提供免费饮用水或有限的饮料选择。 |
优点:水疗中心提供宁静放松的氛围和优质的服务。客户对员工提供的卓越客户服务赞不绝口。 缺点:水疗中心禁止使用手机的政策存在争议,有些人认为这有助于放松身心,而另一些人则认为这令人感到压力。多位评价者认为价格偏高。 |
风格和语气
您可以在系统指令中定义模型的输出风格和语气(例如详细程度、正式程度和目标阅读水平),从而影响模型的回答。
例如,假设您想使用某个模型来撰写政府倡议提案。比较在定义以下语气时模型的回答差异:
- 专业
- 轻松
| 系统指令 | 专业 | 轻松 |
|---|---|---|
您是一名政府提案撰写者。您的任务是针对未来的活动撰写提案。根据模板和用户输入,为即将开展的活动给出提案。
方案模板:
|
您是一名政府提案撰写者。您的任务是针对未来的活动撰写提案。根据模板和用户输入,为即将开展的活动给出提案。
方案模板:
|
|
| 提示 |
此宣传活动的目的是通过互动式数字体验,提高人们对可持续发展的认识,并促使他们采取可行的行动来改变行为。我将在 Facebook 和 X 上发布教育内容并组织社区活动,吸引 20-45 岁具有环保意识的个人(包括学生、专业人士和家庭)参与。我的目标是提高公众意识,并鼓励在环保行为方面取得可衡量的改进。凭借我在数字营销方面的专业知识和对可持续发展的高度关注,我将设计一个影响力较大的活动,让个人能够在日常生活中做出有意义的可持续改变。我想通过此活动制作内容,使其具有多样性、富有吸引力且信息丰富。 |
|
| 响应 | 创意:通过互动式数字体验和社区互动,帮助 20-45 岁的个人接受可持续的生活方式。 挑战:许多人不知道在日常生活中可以采取哪些切实可行的行动来促进环境可持续性。 解决方案:利用 Facebook 和 X 进行跨平台活动,通过互动体验和活动传递引人入胜的教育内容,并促进社区参与度。 目标受众群体:年龄在 20-45 岁之间、具有环保意识的个人,包括学生、专业人士和家庭。 关键信息:日常习惯的微小改变可以对环境产生显著的积极影响。 渠道:Facebook 和 X。 内容亮点:互动测验、教育视频、专家问答环节和社区挑战,旨在推广可持续实践。 预期结果:提高目标受众群体对可持续生活实践的认知度,并显著改善其环保行为。 选择我们的理由:我们在数字营销方面拥有丰富的专业知识,并且热衷于推广可持续发展理念,可确保活动具有强大的影响力和吸引力。 号召性用语:加入 Facebook 和 X 上的宣传活动,了解相关信息、积极参与,为可持续的未来贡献力量。 |
大创意:我们正在发起一场数字运动,让可持续发展成为一种时尚!我们将通过互动式挑战和引人入胜的内容,激发用户采取实际行动,将环保生活从一项任务转变为共同的旅程。 挑战:我们必须承认,了解可持续发展与实际采取行动是两回事。我们正在与冷漠和对简单日常改变的认知不足作斗争。 解决方案:我们将通过 Facebook 和 X 等平台,以动态方式提供教育内容、有趣的挑战和社区主导的活动,从而在用户所在的平台与他们互动。考虑使用互动式测验、可分享的信息图表和本地聚会! 目标受众群体:我们重点关注 20-45 岁、具有环保意识的个人(学生、专业人士和家庭),他们渴望做出改变。 关键信息:小改变,大影响!您可以通过简单的日常选择,打造更具可持续性的未来。 渠道:我们将通过在 Facebook 和 X 上参与活动,充分发挥社交媒体营销的优势。 内容亮点:您将看到各种富有信息量且易于分享的内容,包括引人注目的信息图、发人深省的视频、实用技巧和鼓舞人心的成功故事。 预期效果:我们将通过提高互动度(点赞、分享、评论)和网站流量来衡量成功与否,最终目标是让目标受众群体中采取环保行为的人数显著增加。 选择我们的理由:我们的团队将数字营销专业知识与对可持续发展的真挚热情相结合,打造出富有影响力且极具吸引力的营销活动。 号召性用语:加入行动!关注我们的页面,参与我们的挑战,并与您的人脉圈分享您的可持续生活之旅。 |
目标和规则
您可以在系统指令中定义目标或规则(即模型应该或不应该做什么),从而影响模型的回答。
例如,假设您想使用模型来编写 Python 代码。比较在定义以下规则时模型回答中的差异:
- 生成代码时,请务必添加用于说明每种方法的输入、输出和用法的文档字符串。
- 仅生成代码,不包含任何文档字符串。
| 系统指令 | 文档字符串 | 没有文档字符串 |
|---|---|---|
| 生成代码时,请务必添加用于说明每种方法的输入、输出和用法的文档字符串。 | 仅生成代码,不包含任何文档字符串。 | |
| 提示 | 在 Python 中创建一个二维数组,并创建一个 A* 寻路算法来确定网格上两点之间的最短路径。 | |
| 响应 |
import heapq
class Node:
""""""
Represents a node in the grid for A* pathfinding.
Attributes:
x (int): The x-coordinate of the node.
y (int): The y-coordinate of the node.
parent (Node, optional): The parent node in the path. Defaults to None.
g (int): Cost from the start node to this node. Defaults to 0.
h (int): Estimated cost from this node to the end node. Defaults to 0.
""""""
def __init__(self, x, y, parent=None):
self.x = x
self.y = y
self.parent = parent
self.g = 0
self.h = 0
def __lt__(self, other):
""""""Compares nodes based on their f-score (g + h).""""""
return (self.g + self.h) < (other.g + other.h)
def a_star(grid, start, end):
""""""
Implements the A* pathfinding algorithm.
Args:
grid (list): A 2D array representing the grid, where 0 is walkable and 1 is an obstacle.
start (tuple): The starting point coordinates (x, y).
end (tuple): The end point coordinates (x, y).
Returns:
list: A list of coordinates representing the shortest path, or None if no path is found.
""""""
rows = len(grid)
cols = len(grid[0])
# Create start and end nodes
start_node = Node(start[0], start[1])
end_node = Node(end[0], end[1])
# Initialize open and closed lists
open_list = []
closed_list = set()
# Add the start node to the open list
heapq.heappush(open_list, start_node)
while open_list:
# Get the node with the lowest f-score
current_node = heapq.heappop(open_list)
# Add the current node to the closed list
closed_list.add((current_node.x, current_node.y))
# Check if we've reached the goal
if current_node.x == end_node.x and current_node.y == end_node.y:
# Reconstruct and return the path
path = []
while current_node:
path.append((current_node.x, current_node.y))
current_node = current_node.parent
return path[::-1] # Return reversed path
# Explore neighboring nodes
for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]: # Up, Down, Left, Right
neighbor_x = current_node.x + dx
neighbor_y = current_node.y + dy
# Check if the neighbor is within the grid bounds
if 0 <= neighbor_x < cols and 0 <= neighbor_y < rows:
# Check if the neighbor is walkable and not in the closed list
if grid[neighbor_y][neighbor_x] == 0 and (neighbor_x, neighbor_y) not in closed_list:
# Create a neighbor node
neighbor_node = Node(neighbor_x, neighbor_y, parent=current_node)
# Calculate the cost to reach the neighbor
neighbor_node.g = current_node.g + 1
# Calculate the heuristic (Manhattan distance)
neighbor_node.h = abs(neighbor_node.x - end_node.x) + abs(neighbor_node.y - end_node.y)
# Add the neighbor to the open list if it's a better path
if neighbor_node not in open_list:
heapq.heappush(open_list, neighbor_node)
# No path found
return None
# Example usage:
grid = [
[0, 0, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0]
]
start = (0, 0)
end = (4, 4)
path = a_star(grid, start, end)
if path:
print(""Shortest path:"", path)
else:
print(""No path found."")
说明:
|
import heapq
class Node:
def __init__(self, position, parent=None):
self.position = position
self.parent = parent
self.g = 0
self.h = 0
self.f = 0
def __lt__(self, other):
return self.f < other.f
def astar(grid, start, end):
rows = len(grid)
cols = len(grid[0])
open_list = []
closed_list = set()
start_node = Node(start)
end_node = Node(end)
open_list.append(start_node)
while open_list:
current_node = heapq.heappop(open_list)
if current_node.position == end_node.position:
path = []
while current_node:
path.append(current_node.position)
current_node = current_node.parent
return path[::-1]
closed_list.add(current_node.position)
for neighbor in get_neighbors(grid, current_node):
if neighbor.position in closed_list:
continue
if neighbor not in open_list:
neighbor.g = current_node.g + 1
neighbor.h = manhattan_distance(neighbor.position, end_node.position)
neighbor.f = neighbor.g + neighbor.h
neighbor.parent = current_node
heapq.heappush(open_list, neighbor)
else:
if neighbor.g > current_node.g + 1:
neighbor.g = current_node.g + 1
neighbor.f = neighbor.g + neighbor.h
neighbor.parent = current_node
heapq.heapify(open_list)
return None # No path found
def get_neighbors(grid, node):
rows = len(grid)
cols = len(grid[0])
row, col = node.position
neighbors = []
if row > 0 and grid[row - 1][col] == 0:
neighbors.append(Node((row - 1, col)))
if row < rows - 1 and grid[row + 1][col] == 0:
neighbors.append(Node((row + 1, col)))
if col > 0 and grid[row][col - 1] == 0:
neighbors.append(Node((row, col - 1)))
if col < cols - 1 and grid[row][col + 1] == 0:
neighbors.append(Node((row, col + 1)))
return neighbors
def manhattan_distance(a, b):
return abs(a[0] - b[0]) + abs(a[1] - b[1])
# Example usage
grid = [
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0],
]
start = (0, 0)
end = (4, 4)
path = astar(grid, start, end)
print(path)
|
上下文
您可以在系统说明中添加更多上下文,从而影响模型对提示的回答方式。
例如,假设您想使用模型为活动撰写演讲稿。 比较在您提供以下上下文时模型的回答差异:
- 演讲中要包含的内容。
- 无需额外背景信息。
| 系统指令 | 演讲中应包含的内容 | 无额外背景信息 |
|---|---|---|
帮助用户根据提供的信息撰写演讲稿:
如果用户未提供上述所有信息,请回复“很抱歉,我没有创建演讲稿所需的所有必要信息。请提供活动、观众人数、演讲者信息、语气、长度以及任何其他信息。” 要添加的一些常规内容有:
|
帮助用户根据提供的信息撰写演讲稿:
如果用户未提供上述所有信息,请回复“很抱歉,我没有创建演讲稿所需的所有必要信息。请提供活动、观众人数、演讲者信息、语气、长度以及任何其他信息。” |
|
| 提示 |
活动:高中毕业 受众群体规模:1,000 人 演讲者信息:Michael Landish,17 岁 语气:怀旧、乐观 演讲稿长度:250-500 字 其他信息:Michael 是高中四年级班长,他最喜欢的老师是他的高中三年级英语老师 Martin 女士,他将前往洛斯卡米诺斯州立大学学习经济学和英语。他之前从未发表过演讲,并且由于患有诵读障碍,他感到很紧张。 |
|
| 响应 | “各位教职工、家人、朋友,以及最重要的 2023 届毕业生们,早上好! (暂停) 站在这里,看着你们所有人,感觉太不真实了。仿佛就在昨天,我们还是高中一年级新生,对一切都充满好奇,也有些害怕。还记得开学第一天的紧张情绪吗?我记得。我差点绊倒,摔倒,手里还拿着历史教科书 - 这几乎是一场灾难,会在 [高中名称] 的历史上留下浓墨重彩的一笔! (停顿,等待笑声) 不过,说真的,看看我们现在!我们已经长大,学到了很多知识, 我指的不仅仅是勾股定理。我们了解了坚持不懈、友谊以及考试周期间一张贴得恰到好处的便条的力量。 过去四年非常精彩,我的成长很大程度上要归功于一些非常出色的老师。我特别想感谢高中三年级的英语老师 Martin 女士,她教会我文字具有力量,即使患有阅读障碍,我也能找到自己的声音。谢谢,Martin 女士。 (暂停) 现在,我们正站在一个全新而令人兴奋的时代的边缘。当我们前往不同的大学、不同的城市甚至不同的国家时,让我们带着在 [高中名称] 学到的知识继续前行。让我们一起回忆那些欢笑、友谊,甚至是在大考前偶尔熬夜的经历。 (暂停) 毕业生们,世界在等待着我们。让我们勇敢地、乐观地面对未来,并有 2023 届毕业生们坚定不移的支持。恭喜各位,请记住,更棒的还在后头! |
“各位教职工、家人、朋友,以及最重要的各位 [年份] 届毕业生,大家早上好! 我站在这里,感觉很奇怪,因为我不仅是迈克尔·兰迪什,还是你们的班长。在过去四年里,这些走廊一直是我们的试验场,充满了欢笑、深夜学习(有些比其他更成功),以及足以持续一生的共同回忆。我们一起在这四面墙内长大, 而现在,当我们即将面临新的未知事物时, 难免会感到有些不知所措。 回想起来,我们仿佛昨天还是笨拙的新生,在拥挤的走廊里穿梭,试图找到自己的位置。 现在,看着在座的各位,我深切感受到我们已经取得了多么大的成就。 我们会在胜利时互相欢呼,也会在遇到挫折时互相支持。我们从错误中吸取教训,庆祝胜利,最重要的是,我们结下了深厚的友谊,我知道这份友谊将持续一生。 我要特别感谢高中三年级英语老师 Martin 女士,感谢她的耐心和指导。你们对我的信任,尤其是在我遇到困难时,帮助我找到了自信 - 不仅仅是作为学生的自信,也是作为一个人的自信。谢谢! 现在,我们开启了新的篇章。像我一样,有些人会前往洛斯卡米诺斯州立大学,渴望深入了解经济学,当然,还有英语。其他人则会选择其他同样有效且令人兴奋的道路。虽然我们的道路可能会各不相同,但让我们永远铭记我们在这里学到的知识和建立的友谊。让我们秉持 [年份] 届毕业生的精神,即坚韧不拔、矢志不渝、互帮互助的精神。 恭喜毕业生们!我迫不及待地想看看我们能取得哪些令人惊叹的成就。 |