本文將說明系統指令的用途,以及撰寫有效系統指令的最佳做法。如要瞭解如何在提示中新增系統指示,請參閱「使用系統指示」一文。
系統指令是一組指令,模型會先處理這組指令,再處理提示詞。建議您使用系統指令來調整模型行為,告訴模型應如何回應提示詞。舉例來說,您可以加入要採用的角色、背景資訊和格式設定指示。
如果您想向模型提供使用者無法查看或變更的資訊,系統指令就特別實用。這類資訊可協助模型瞭解任務、生成更符合需求的回覆,並在與使用者互動時全程遵守特定指引。此外,如要使用同一組指令執行多個提示,系統指令也很有幫助。
設定系統指令後,就會套用至整個要求。只要在提示詞中包含指令,就能用於多位使用者和模型的對話回合。雖然系統指令與提示內容分開,但仍屬於整體提示的一部分,因此須遵守標準資料使用政策。
用途
一般來說,我們建議使用系統指令執行下列一或多項操作:
- 定義形象或角色
- 定義輸出格式
- 定義輸出內容的風格和語氣
- 為工作定義目標或規則
提供改編提示的其他背景資訊
角色
您可以在系統指令中定義角色,影響模型對提示的回應方式。
舉例來說,假設您想使用模型協助教導學生撰寫論文。定義下列角色時,比較模型回覆的差異:
- 你是機器人,負責教導大學生如何撰寫指定主題的論文。
- 你是一個機器人,負責協助小學生撰寫特定主題的論文。
系統指示 | 大學生專用機器人 | 小學生專用機器人 |
---|---|---|
你是一個機器人,負責教導大學生如何撰寫指定主題的論文。 | 你是一個機器人,負責協助小學生撰寫指定主題的論文。 | |
提示 | 主旨:光合作用 | 主旨:光合作用 |
回應 | 撰寫光合作用論文:大學生指南 光合作用是複雜又有趣的過程,也是地球生命賴以生存的基礎。撰寫相關論文是很有意義的體驗,可讓你深入瞭解其複雜性,並理解其重要性。以下說明如何完成這項工作:
論文標題範例:
請注意:撰寫光合作用相關論文時,應清楚、提供實用資訊且引人入勝。只要按照上述步驟操作,並運用紮實的研究基礎,就能撰寫出成功的論文,展現您對這項重要生物程序的瞭解。 |
這個主題很棒!光合作用對地球上的生命至關重要。撰寫相關論文的步驟如下:
請記住:您才是論文的專家!祝你學習愉快,並享受撰寫光合作用相關內容的樂趣。 |
輸出格式
您可以在系統指令中定義輸出格式 (例如 Markdown 或 JSON),藉此影響模型的回覆格式。
舉例來說,假設您想使用模型來摘要貴商家的顧客評論,定義下列輸出格式時,請比較模型回覆的差異:
- 以 JSON 格式輸出回覆。最後,在 JSON 物件外部,針對如何改善業務撰寫 3 到 5 句建議。
- 沒有格式規定。
系統指示 | JSON | 沒有格式規定 |
---|---|---|
您是高檔企業的公關專業人員,請按照這些指示操作,並根據提供的使用者輸入內容回覆。 指示:
|
您是高檔企業的公關專業人員,請按照這些指示操作,並根據提供的使用者輸入內容回覆。 指示:
|
|
提示 |
Chad Brocker:4 顆星 這間水療中心很棒!一走進店內,就能感受到放鬆的氛圍。你幾乎感覺自己處於恍惚狀態。您完全不必擔心。工作人員會提供行程表,並引導你完成體驗。我買的每樣東西都很棒。按摩、臉部護理、泥浴。此外,他們也禁止使用手機,因此真的會感覺自己身處於完全不同的世界。不過價格有點高。 查看完整提示
Lisa Simmens:5 顆星 我們玩得很開心!我和最好的朋友在生日當天,一起去享受 SPA 療程。當我告訴你,我們的生活已經改變。員工會盡心盡力,確保你獲得最佳體驗。從提問到提供優質服務,再到確保您準時赴約,他們都做到盡善盡美。我們會盡快恢復服務,請耐心等候!附註:建議接受全身去角質護理! 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"" ] } 雖然顧客對這間水療中心的寧靜氛圍、優質服務和專業人員讚不絕口,但仍有進步空間。解決顧客對嚴格禁止攜帶手機政策和缺乏茶點的疑慮,可大幅提升整體體驗。不妨提供指定區域,讓顧客在需要時使用手機,並提供免費水或少量飲品。 |
優點:SPA 中心提供寧靜放鬆的氛圍,以及優質服務。顧客對員工提供的優質客戶服務讚不絕口。 缺點:SPA 中心禁止使用手機的政策引發爭議,有些人認為這有助於放鬆,有些人則覺得壓力很大。多位評論者認為價格偏高。 |
風格和語氣
您可以在系統指令中定義模型的輸出風格和語氣,例如冗長程度、正式程度和目標閱讀程度,藉此影響模型的回覆。
舉例來說,假設您想使用模型撰寫政府計畫提案,定義下列語氣時,比較模型回覆的差異:
- 專業
- 非正式
系統指示 | 專業 | 非正式 |
---|---|---|
你是政府提案撰寫者。您的任務是為未來的廣告活動製作提案。根據範本和使用者輸入內容,為即將推出的廣告活動提供提案。
提案範本:
|
你是政府提案撰寫者。您的任務是為未來的廣告活動製作提案。根據範本和使用者輸入內容,為即將推出的廣告活動提供提案。
提案範本:
|
|
提示 |
這項活動的目的是透過互動式數位體驗,提高大眾對永續發展的認識,並激發可行的行為改變。我會在 Facebook 和 X 上提供教育內容,並舉辦社群主導的活動,吸引 20 至 45 歲的環保意識人士,包括學生、專業人士和家庭。我的目標是提高大眾意識,並鼓勵大家做出可衡量的環保行為。我將運用數位行銷專業知識,並以永續發展為重點,設計成效顯著的廣告活動,協助個人在日常生活中做出有意義的永續改變。我希望這個廣告活動能製作內容豐富、引人入勝且資訊豐富的內容。 |
|
回應 | 主要構想:透過互動式數位體驗和社群參與,協助 20 至 45 歲的族群擁抱永續生活。 挑戰:許多人不知道日常生活中可以採取哪些實際行動,來促進環境永續發展。 解決方案:運用 Facebook 和 X 平台的多平台廣告活動,提供引人入勝的教育內容,並透過互動式體驗和活動,促進社群參與。 目標對象:年齡介於 20 至 45 歲的環保意識人士,包括學生、專業人士和家庭。 主要訊息:改變日常習慣就能對環境產生顯著的正面影響。 管道:Facebook 和 X。 內容重點:互動式測驗、教育影片、專家問答活動和社群挑戰,推廣永續做法。 預期結果:提高永續生活習慣的認知度,並在目標對象中,可測量地改善環保行為。 選擇我們的理由:我們在數位行銷領域擁有豐富經驗,並熱衷於推廣永續發展,可確保廣告活動成效顯著且引人入勝。 行動號召:在 Facebook 和 X 上加入這項活動,瞭解相關資訊、參與互動,為永續發展的未來盡一份心力。 |
主要概念:我們將發起一項數位運動,讓永續發展成為潮流!透過互動式挑戰和引人入勝的內容,激發實際行動,將環保生活從苦差事變成共同旅程。 挑戰: 我們必須承認,瞭解永續發展與實際採取行動是兩回事。我們正努力對抗冷漠,並提高大眾對日常簡單改變的意識。 解決方案:我們將在 Facebook 和 X 等平台與目標對象互動,提供多元的教育內容、有趣的挑戰和社群主導的活動。例如互動式測驗、可分享的資訊圖表和當地聚會! 目標對象:我們專注於 20 至 45 歲的環保意識人士,包括學生、專業人士和家庭,他們都渴望做出改變。 主要訊息:小步數也能獲得大成果!只要在日常生活中做出簡單的選擇,就能為永續發展盡一份心力。 管道:我們將在 Facebook 和 X 上放送引人入勝的廣告活動,充分運用社群媒體行銷的力量。 內容重點:我們將提供各種實用且容易分享的內容,包括引人注目的資訊圖表、發人深省的影片、快速提示和激勵人心的成功案例。 預期結果:我們會透過互動 (按讚、分享、留言) 和網站流量的增加來評估成效,最終目標是讓目標對象的環保行為顯著增加。 選擇我們的理由:我們的團隊結合數位行銷專業知識和對永續發展的熱忱,打造出兼具影響力和吸引力的宣傳活動。 行動號召:加入這場運動!追蹤我們的頁面、參加挑戰,並在社交圈分享你的永續生活之旅。 |
目標和規則
您可以在系統指令中定義目標或規則,也就是模型應執行的動作或不應執行的動作,藉此影響模型的回覆。
舉例來說,假設您想使用模型編寫 Python 程式碼,定義下列規則時,請比較模型回覆的差異:
- 產生程式碼時,請務必加入說明每個方法輸入內容、輸出內容和用法的說明字串。
- 只產生程式碼,不要加入任何文件字串。
系統指示 | Docstrings | 沒有 docstring |
---|---|---|
產生程式碼時,請務必加入說明每個方法輸入內容、輸出內容和用法的說明字串。 | 請只產生程式碼,不要加入任何文件字串。 | |
提示 | 在 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 屆畢業生,大家早安! (暫停) 站在這裡看著各位,感覺很不真實。昨天我們還是新生,睜大眼睛,有點害怕。還記得第一天上班時的緊張感嗎?我就是這樣。我差點在搬運歷史課本時絆倒,這場近乎災難的事件差點就成為 [高中名稱] 歷史長廊的傳奇! (Pause for laughter) 但說真的,看看我們現在的樣子!我們長大了,學到很多東西,而且不只是畢氏定理。我們學到了堅持不懈、友誼,以及考試週期間一張貼心便利貼的力量。 過去四年非常精彩,我個人成長的許多方面都要歸功於幾位非常優秀的老師。我特別要感謝高二的英文老師馬丁太太,她教導我文字的力量,以及即使有讀寫障礙,也能找到自己的聲音。謝謝, Martin 太太。 (暫停) 現在,我們即將迎來令人期待的新事物。我們即將前往不同的學院、城市,甚至是國家/地區,請將在「[High School Name]」學到的知識帶在身上。讓我們回憶歡笑、友誼,甚至是重大考試前偶爾熬夜的時光。 (暫停) 各位畢業生,世界等著我們。讓我們勇敢面對,抱持樂觀態度,並在 2023 屆畢業生堅定不移的支持下,恭喜各位,請記住,精彩的還在後頭! |
「各位老師、家人、朋友,以及最重要的 [年] 屆畢業生,大家早安! 站在你們面前,感覺很奇怪,不只是以 Michael Landish 的身分,而是以班長的身份。過去四年來,這些走廊就是我們的試驗場,充滿歡笑、熬夜苦讀的時光 (有些比其他更成功),以及足以回味一輩子的共同回憶。我們在這些牆壁內一起成長,現在我們即將面臨新的未知事物,難免會感到有些不知所措。 回想起來,我們昨天似乎還是青澀的大一新生,在擁擠的走廊中穿梭,試著找到自己的歸屬。 看著各位,我不禁感嘆我們走了多遠。 我們在勝利時互相歡呼,在挫敗時互相支持。我們從錯誤中學習、慶祝勝利,最重要的是,我們建立了友誼,我知道這份情誼將持續一輩子。 特別感謝我的英文老師 Martin 太太,感謝她的耐心指導。您對我的信任,尤其是在我遇到困難時,幫助我找到自己的聲音,不僅是學生,也是一個人。感謝您! 現在,我們將邁向下一個階段。有些人 (包括我) 將前往洛斯卡米諾斯州立大學,深入研究經濟學,以及更多英文。其他人則會選擇其他同樣有效且令人振奮的道路。雖然我們的道路可能不同,但請永遠記得我們在這裡學到的教訓和建立的友誼。讓我們秉持 [Year] 屆畢業生的精神,也就是堅韌、決心和相互支持的精神。 恭喜畢業生!期待我們共同成就更多精彩事物。 |