本文將說明系統指令的定義,以及撰寫有效系統指令的最佳做法。如要瞭解如何在提示中新增系統指示,請參閱「使用系統指示」一文。
系統指令是一組指令,模型會先處理這組指令,再處理提示。建議您使用系統指示,告訴模型您希望模型如何運作及回應提示。舉例來說,您可以加入要採用的人物角色、背景資訊和格式設定說明等內容。
系統指令特別適合用於提供終端使用者無法查看或變更的資訊,這有助於您向模型提供額外脈絡資訊,讓模型瞭解任務、生成更符合需求的回應,並在與使用者互動時全程遵守特定指引。此外,如果您想使用相同的指示執行多個提示,系統指示就會很有幫助。
設定系統指示後,系統會套用至整個要求。系統指示可在提示中納入,並在多位使用者和模型輪替時運作。雖然系統操作說明與提示內容分開,但仍屬於整體提示內容的一部分,因此須遵守標準資料使用政策。
用途
一般來說,我們建議使用系統指示來執行下列一或多項作業:
- 定義角色或角色
- 定義輸出格式
- 定義輸出樣式和語氣
- 定義任務的目標或規則
為提示提供額外背景資訊
角色或人物
您可以在系統指示中定義角色或角色,藉此影響模型回應提示的方式。
舉例來說,假設您想使用模型來教導學生如何撰寫論文,比較下列角色定義時,模型回應的差異:
- 你是聊天機器人,負責教導大學生如何撰寫特定主題的論文。
- 假設你是聊天機器人,負責協助國小學生瞭解如何撰寫特定主題的論文。
系統指示 | 大學生專用機器人 | 針對小學生的聊天機器人 |
---|---|---|
您是機器人,負責教導大學生如何撰寫特定主題的論文。 | 您是機器人,負責協助小學生撰寫特定主題的論文。 | |
提示 | 主旨:光合作用 | 主旨:光合作用 |
回應 | 撰寫光合作用論文:給大學生的指南 光合作用是一個複雜而迷人的過程,也是地球上生命的基礎。撰寫相關論文是個有益的體驗,可讓您深入瞭解其複雜性和重要性。以下說明如何處理這項工作:
論文標題範例:
請注意:一篇寫得好的光合作用論文應清楚易懂、內容豐富且引人入勝。只要按照這些步驟操作,並運用強大的基礎研究,您就能製作出成功的論文,展現您對這項重要生物過程的理解。 |
這個主題很棒!光合作用對地球上的生命極為重要。以下是撰寫相關論文的方法:
請記住:你是自己論文的專家!祝您學習和寫作光合作用相關知識愉快! |
輸出格式
您可以在系統指令中定義輸出格式 (例如 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"" ] } 雖然這間水療中心因寧靜的氛圍、出色的員工和頂級服務而受到好評,但仍有部分領域需要改善。解決客戶對嚴格禁止使用手機和缺乏茶點的疑慮,可以大幅改善整體體驗。建議你提供專用區,讓住客在必要時使用手機,並提供免費的瓶裝水或限量飲料。 |
優點:SPA 提供寧靜放鬆的氛圍和優質服務。顧客對員工提供的卓越客戶服務讚不絕口。 缺點:SPA 的禁用手機政策引起爭議,有些人認為這有助於放鬆身心,有些人則認為這會造成壓力。多位評論者認為價格偏高。 |
風格和語氣
您可以在系統指示中定義輸出風格和語氣 (例如冗長程度、正式程度和目標閱讀程度),藉此影響模型的回覆內容。
舉例來說,假設您想使用模型為政府計畫撰寫提案,比較定義下列色調時,模型回應的差異:
- 專業
- 非正式
系統指示 | 專業 | 非正式 |
---|---|---|
你是政府提案撰寫者。您負責為日後的廣告活動製作提案。根據範本和使用者輸入內容,為即將推出的廣告活動提供提案。
提案範本:
|
你是政府提案撰寫者。您負責為日後的廣告活動製作提案。根據範本和使用者輸入內容,為即將推出的廣告活動提供提案。
提案範本:
|
|
提示 |
這項活動的目的,是透過互動式數位體驗,提高大眾對永續發展的認知,並激勵他們採取可行行為,朝永續發展的目標邁進。我會透過提供教育內容,以及在 Facebook 和 X 上舉辦社群活動,吸引 20 至 45 歲的環保意識人士,包括學生、專業人士和家庭。我的目標是提高大眾的環保意識,並鼓勵他們採取可衡量的環保行為。我將運用數位行銷專業和對永續發展的高度重視,設計一項高影響力的廣告活動,讓個人在日常生活中做出有意義的永續變革。我希望這個廣告活動能製作多元且引人入勝的內容,同時提供實用資訊。 |
|
回應 | 主旨:透過互動式數位體驗和社群參與,協助 20 至 45 歲的使用者擁抱永續生活。 挑戰:許多人不知道如何採取實際的日常行動,以促進環境永續發展。 解決方案:透過 Facebook 和 X 建立多平台廣告活動,提供引人入勝的教育內容,並透過互動體驗和活動促進社群參與。 目標對象:20 至 45 歲、重視環保的個人,包括學生、專業人士和家庭。 重點訊息:日常習慣的小小改變,就能對環境產生重大的正面影響。 管道:Facebook 和 X。 重點內容:互動式測驗、教育影片、專家問答活動,以及宣導永續做法的社群挑戰。 預期成效:提高目標對象對永續生活方式的認知,並可量化評估目標對象的環保行為。 原因:我們在數位行銷方面擁有豐富的專業知識,並熱衷於推廣永續發展,因此能確保推出高影響力且引人入勝的廣告活動。 行動號召:加入 Facebook 和 X 的宣導活動,瞭解、參與並為永續未來做出改變。 |
大方向:我們發起數位運動,讓永續發展變得酷炫!我們會透過互動挑戰和引人入勝的內容,鼓勵使用者採取實際行動,將環保生活從繁瑣的瑣事,轉變為共同的旅程。 挑戰:坦白說,瞭解永續發展與實際採取行動是兩回事。我們正在對抗人們對日常簡單變化的冷漠和缺乏認知。 解決方案:我們會在 Facebook 和 X 等平台上與觀眾互動,提供結合教學內容、有趣挑戰和社群活動的動態內容。例如互動式測驗、可分享的資訊圖表,以及當地聚會! 目標對象:我們鎖定 20 至 45 歲的環保人士,包括學生、專業人士和家庭,他們都希望能為環境盡一份心力。 重點訊息:小步驟也能帶來大影響!您可以透過簡單的日常選擇,打造更符合永續發展理念的未來。 管道:我們會透過 Facebook 和 X 上的互動廣告活動,發揮社群媒體行銷的力量。 內容精選:這類內容會提供實用資訊和可分享的內容,包括引人入勝的資訊圖表、發人深省的影片、快速提示和鼓舞人心的成功故事。 預期成效:我們會透過增加互動 (按讚、分享、留言) 和網站流量來評估成效,最終目標是讓目標對象的環保行為有顯著提升。 為何選擇我們:我們的團隊結合數位行銷專業知識與對永續發展的熱情,打造出既有影響力又能吸引目光的廣告活動。 行動號召:加入這場運動!追蹤我們的頁面、參與挑戰,並與親友分享永續生活之旅。 |
目標和規則
您可以在系統指示中定義目標或規則 (也就是模型應或不應執行的動作),藉此影響模型的回應。
舉例來說,假設您想使用模型編寫 Python 程式碼。比較定義下列規則時,模型回應的差異:
- 產生程式碼時,請務必加入說明每個方法的輸入內容、輸出內容和用法的說明文字。
- 只產生程式碼,不包含任何 docstring。
系統指示 | 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 是高三班長,他最喜歡的老師是高二時的英文老師馬丁老師,他將前往洛斯卡米諾州立大學攻讀經濟學和英文。他從未發表過演說,而且因為有閱讀障礙而感到緊張。 |
|
回應 | 「早安,老師、家人、朋友,以及最重要的 2023 屆畢業生! (暫停) 站在這裡,看著各位,感覺很不真實。昨天,我們還是大一新生,對一切都感到新奇,也有些害怕。還記得第一天上班時的緊張情緒嗎?我知道我會。我差點在拿著歷史課本時絆倒,這差點釀成災難,會永遠留在 [高中名稱] 的歷史中! (暫停等待笑聲) 但說真的,看看我們現在的樣子!我們長大了,學到很多東西,我指的不僅是畢達哥拉斯定理。我們學到了堅持不懈、友誼的重要性,以及在考試期間貼上便利貼的威力。 過去四年是一段美好的回憶,我之所以能不斷成長,要歸功於一些非常優秀的老師。我特別想感謝我高二的英文老師馬丁女士,她教導我文字的力量,讓我知道即使有讀寫障礙,也能找到自己的聲音。謝謝,Martin 太太。 (暫停) 我們現在正站在全新且令人期待的邊緣。我們將前往不同的大學、城市,甚至國家,但請記得將在 [High School Name] 學到的課程內容帶在身邊。讓我們回想那些歡笑聲、友誼,甚至是偶爾為了大考而通宵苦讀的回憶。 (暫停) 畢業生們,世界正等著我們。讓我們勇敢面對,樂觀以對,並獲得 2023 年級別優秀學生的堅定支持。恭喜各位,請記得,精彩的還在後頭! |
「早安,老師、家人、朋友,以及最重要的,[年級] 班的同學! 站在你面前,我感到很奇怪,不只是身為 Michael Landish,也是你班上的班長。過去四年來,這些走廊都是我們揮灑汗水的地方,充滿歡笑聲、深夜讀書 (有些人比其他人更認真),以及足以讓我們一輩子難忘的共同回憶。我們在這些牆壁內一起成長,現在面臨全新且未知的未來,難免會感到有些不知所措。 回想起來,我們似乎還記得,當年我們是尷尬的大學新鮮人,在擁擠的走廊中穿梭,試圖找到適合自己的位置。而現在,當我看到各位,我驚訝於我們已經走了多遠的路。 我們在勝利時互相歡呼,在挫折時互相支持。我們從錯誤中學習,慶祝勝利,最重要的是,建立了友誼的羈絆,我知道這份友誼會持續一輩子。 我要特別感謝我高二英文老師馬丁女士,感謝她耐心指導。您對我的信任,尤其是在我遇到困難時,幫助我找到自己的聲音,不只是學生,也是身為人的聲音。感謝您! 接下來,我們將開始下一章節。像我這樣的人,將前往洛斯卡米諾斯州立大學,期待深入瞭解經濟學,以及更多英文知識。其他人則會選擇其他路徑,同樣有效且令人興奮。雖然我們的旅程可能會分道揚鑣,但請記得我們在這個地方學到的課題,以及建立的友誼。讓我們一起發揚 [年級] 班級的精神,堅韌不拔、堅定不移,彼此相互扶持。 恭喜畢業班!我迫不及待想看到我們共同創造的驚人成就。 |