載入中

當您為特定使用案例建構 AI 聊天機器人時,您需要一種方法來控制 AI 的回應方式。系統提示是將通用型 AI 轉變為遵循特定準則並保持主題聚焦的專業助手的關鍵。

使用者層級指令的問題

您可能會認為解決方案是將所有需求都包含在使用者訊息本身中。例如,在每次對話中告訴 AI「提及 AWS 服務」以及「不要提及競爭對手」。這種方法有嚴重的限制:

  • 您需要預先考慮到每一個可能的問題和邊緣情況
  • 指令清單變得笨重且重複
  • 使用者會看到所有內部指令,使對話變得雜亂
  • 需求會根據所提出的具體問題而改變

系統提示:更好的方法

系統提示透過賦予 Claude 一個角色來解決這個問題。您不需要列出具體的該做和不該做的事項,而是告訴 Claude 扮演特定類型的專業人士。AI 接著會以該角色自然會回應的方式來回應。

系統提示提供了幾個關鍵優勢:

  • Claude 獲得如何一致回應的指引
  • AI 採用指定角色的思維方式和限制
  • 回應自動保持聚焦且符合品牌形象
  • 您不需要預先考慮到每一個可能的情境

實作系統提示

要將系統提示新增到您的 Claude 對話中,您將其作為參數傳遞給 converse 函式:

python
system_prompt = """
You are an AWS cloud support specialist. Your job is to answer user queries related 
to cloud hosting services on AWS.
"""

response = client.converse(
    modelId=model_id, 
    messages=messages, 
    system=[{"text": system_prompt}]
)

系統提示會作為一個包含帶有「text」鍵的字典的清單傳遞。這會告訴 Claude 在看到任何使用者訊息之前應採用什麼角色。

建構靈活的聊天函式

以下是一個優雅處理系統提示的可重複使用聊天函式:

python
def chat(messages, system=None):
    params = {"modelId": model_id, "messages": messages}
    
    if system:
        params["system"] = [{"text": system}]
    
    response = client.converse(**params)
    
    return response["output"]["message"]["content"][0]["text"]

這種方法讓您可以選擇性地包含系統提示。當未提供系統提示時,Claude 會以其預設自我回應。當您包含一個系統提示時,Claude 會採用該特定角色。

系統提示的實際運作

當您在有和沒有系統提示的情況下測試相同的問題時,差異立即顯而易見。在沒有系統提示的情況下詢問「我如何架設 Postgres 資料庫?」,您會得到涵蓋多個雲端供應商和自架選項的全面答案。

使用 AWS 支援專家系統提示時,回應會專門聚焦於 AWS 解決方案,例如 RDS、Aurora 和基於 EC2 的部署。不會提及任何競爭對手,且答案包含 AWS 特定的設定步驟。

更令人印象深刻的是系統提示如何處理離題問題。在啟用 AWS 專家提示的情況下要求提供麵包食譜,Claude 會禮貌地拒絕,同時保持角色設定:

重要技術細節

在使用系統提示時,請記住以下要求:

  • 系統提示不能是空字串——它們必須包含至少一個字元
  • system 參數預期是一個包含「text」鍵的字典清單
  • 系統提示會在對話中任何使用者訊息之前被處理
  • 您可以在不同請求之間變更頂層的 system 值,但不能在單一 messages 清單中途變更

如果您曾直接使用過 Anthropic 的 Claude API,您可能知道某些 Claude 模型支援對話中途的系統訊息——即在 messages 陣列中新增一則具有 system 角色的訊息,而不是變更頂層欄位。該功能在 Amazon Bedrock 上無法使用。在本課程中,您將始終透過每次 converse 呼叫上的頂層 system 參數來設定系統指令。

系統提示讓您能夠強大地控制 AI 行為,而無需複雜的規則系統。透過為 Claude 指派特定的專業角色,您可以獲得一致且適當的回應,這些回應自然會遵循該角色的限制和專業知識。