本文档介绍了什么是系统指令以及编写有效系统指令的最佳实践。如需了解如何向提示添加系统说明,请改为参阅使用系统说明。
系统指令是指模型在处理提示之前所处理的一组指令。我们建议您使用系统指令来告知模型您希望其如何运作以及如何回答提示。例如,您可以添加要采用的角色、背景信息和格式设置指令等内容。
如果您想向模型提供最终用户无法查看或更改的信息,系统指令会特别有用,因为它可以帮助您为模型提供额外的上下文来了解任务、提供自定义程度更高的回答,并在用户与模型的整个交互过程中遵循特定的准则。此外,如果您想使用同一组说明运行多个提示,系统说明会很有用。
如果设置了系统说明,则该说明会应用于整个请求。当提示中包含系统说明时,该说明适用于多个用户和模型轮流。虽然系统指令与提示内容是分开的,但它们仍然是整体提示的一部分,因此受标准数据使用政策的约束。
支持的模型
以下模型支持系统指令:
- 所有 Gemini 1.5 Pro 模型版本
- 所有 Gemini 1.5 Flash 模型版本
- Gemini 1.0 Pro 版本
gemini-1.0-pro-002
使用场景
通常,我们建议您使用系统指令执行以下一项或多项操作:
- 定义角色或人设
- 定义输出格式
- 定义输出风格和语气
- 为任务定义目标或规则
为提示提供其他背景信息
角色或角色
您可以在系统指令中定义角色或角色,从而影响模型对提示的响应方式。
例如,假设您想使用模型来帮助学生学习论文写作。比较在定义以下角色时模型的响应之间的差异:
- 您是一款聊天机器人,任务是教大学生如何撰写关于特定主题的论文。
- 您是一款聊天机器人,任务是帮助小学生学习如何撰写关于特定主题的论文。
系统指令 | 面向大学生的聊天机器人 | 面向小学生的机器人 |
---|---|---|
您是一款机器人,任务是教大学生如何就给定主题撰写论文。 | 您是一款聊天机器人,任务是帮助小学生了解如何就给定主题撰写论文。 | |
提示 | 主题:光合作用 | 主题:光合作用 |
响应 | 撰写关于光合作用的论文:面向大学生的指南 光合作用是一个有趣而复杂的过程,是地球上生命的基础。撰写相关论文可能会让您受益匪浅,让您能够更深入地了解其复杂性并理解其重要性。以下是有关如何完成此任务的详细说明:
论文标题示例:
请记住:一篇写得好的光合作用论文应该清晰、信息丰富且引人入胜。按照这些步骤操作并利用强大的研究基础,您可以撰写一篇成功的论文,展示您对这一基本生物过程的理解。 |
这是一个很棒的主题!光合作用对地球上的生命来说非常重要。您可以通过以下方式撰写相关论文:
请记住:您是自己论文的专家!祝您学习和写作愉快。 |
输出格式
您可以在系统指令中定义输出格式(例如 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 中创建一个 2D 数组,并创建一个 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 届毕业班的同学们! (暂停) 站在这里,看着在座的各位,感觉很不真实。仿佛就在昨天,我们还是高中一年级新生,对一切都充满好奇,也有些害怕。还记得第一天上班的紧张情绪吗?我知道我需要。我差点在提着历史教科书时绊倒,这几乎是一场灾难,会在 [High School Name] 的历史上载入史册! (暂停,等待笑声) 但说真的,看看我们现在的样子!我们长大了,学到了很多东西,我说的可不仅仅是勾股定理。我们了解了坚韧不拔、友谊以及在考试周内恰到好处的便利贴的力量。 过去四年是一段美妙的时光,我个人的成长离不开一些真正出色的老师。我特别想感谢高中三年级的英语老师 Martin 女士,她教会我文字具有力量,即使患有阅读障碍,我也能找到自己的声音。谢谢,Martin 女士。 (暂停) 现在,我们正站在一个全新而令人兴奋的领域的边缘。当我们前往不同的大学、不同的城市甚至不同的国家时,让我们带着在 [High School Name]学到的知识继续前行。让我们铭记欢声笑语、友谊,甚至是偶尔在重大考试前通宵复习的经历。 (暂停) 毕业生们,世界在等着我们。让我们勇敢、乐观地面对未来,并在 2023 届毕业生们的坚定支持下,勇往直前。祝贺所有获奖者!请记住,更棒的还在后头! |
“早上好,各位教师、家人、朋友,以及最重要的,[年份]届毕业班的同学们! 站在这里,不只是以 Michael Landish 的身份,还以班长身份,感觉很奇怪。在过去的四年里,这些走廊一直是我们的试验场,充满了欢笑、深夜学习(有些学习会比其他学习更成功)以及足以铭记一生的共同回忆。我们在这些墙壁中共同成长,现在,当我们站在未知的新事物的悬崖边,难免会感到有点不知所措。 回想起来,似乎就在昨天,我们还是一群尴尬的新生,在拥挤的走廊里穿行,试图找到自己的位置。 现在,当我环顾四周,看到在座的各位,我深深地为我们取得的进步而震惊。 我们在胜利时互相加油,在挫折时互相支持。我们从错误中吸取教训,庆祝胜利,最重要的是,建立了终身友谊。 我要特别感谢高中三年级英语老师 Martin 女士,感谢她的耐心和指导。您对我的信任,尤其是在我遇到困难时,帮助我找到了自己的声音,不仅仅是作为学生,也是作为一个人。谢谢! 现在,我们将开启新的篇章。像我一样,有些人会前往洛斯卡米诺斯州立大学,渴望深入了解经济学,当然,还有英语。其他人则会追求同样有效且令人兴奋的不同道路。虽然我们的旅程可能各不相同,但让我们永远记住在这些墙壁内学到的知识和结交的友谊。让我们携手并进,发扬 [年份] 届毕业生的精神 - 坚韧不拔、坚定不移、彼此支持。 恭喜毕业班!我迫不及待地想看看我们能取得多么了不起的成就。 |