什麼是 system prompt?

System prompt 是一種在向 Claude 提出問題或任務之前,提供上下文、指示和指南的方式。通過使用 system prompt,您可以為對話設置舞台,指定 Claude 的角色、個性、語氣或任何其他相關信息,這將有助於它更好地理解和回應用戶的輸入。

System prompt 可以包括:

  • 任務指示和目標
  • 個性特徵、角色和語氣指南
  • 用戶輸入的上下文信息
  • 創意約束和風格指導
  • 外部知識、數據或參考資料
  • 規則、指南和護欄
  • 輸出驗證標準和要求

使用 system prompt 的好處

結合精心設計的 system prompt 可以顯著提高 Claude 的性能和輸出質量。一些主要好處包括:

  1. 改善角色扮演和角色一致性:當通過 system prompt 為 Claude 分配特定角色或個性時,它可以在整個對話中更有效地保持該角色,表現出更自然、更有創意的反應,同時保持角色。
  2. 增加對規則和指示的遵守:System prompt 可以幫助 Claude 更好地理解和遵循指南,使其不太可能執行禁止的任務、輸出受限內容或偏離給定的指示。
  3. 增強上下文理解:通過在 system prompt 中提供相關的背景信息或參考資料,您可以提高 Claude 對用戶輸入的理解,並使其能夠生成更準確、更具上下文意識的響應。
  4. 自定義輸出格式:System prompt 可用於指定所需的輸出格式,如標題、列表、表格或代碼塊,確保 Claude 的響應以最適合您需求的方式進行結構化和呈現。

需要注意的是,雖然 system prompt 可以增加 Claude 對不良行為的魯棒性和彈性,但它們並不能保證完全防止 jailbreaks 或 leaks。但是,它們確實為 Claude 的輸出提供了額外的指導和控制層。


如何使用 system prompt

要在 Messages API 中使用 system prompt,請將 system 參數設置為您所需的 system prompt 文本。以下是一個 API 調用示例:

Python
import anthropic

client = anthropic.Client(api_key="YOUR_API_KEY")

response = client.messages.create(
    model="claude-2.1",
    system="Respond only in Spanish.", # <-- system prompt
    messages=[
        {"role": "user", "content": "Hello, Claude!"} # <-- user prompt
    ]
)

print(response.message)

有關更多信息,請參閱我們的 Messages API 文檔

注意:您也可以在 Console 中使用 system prompt,但不能在 claude.ai 上使用。


提示技巧

您可以將用於 user prompt 的相同提示技巧應用於 system prompt。例如,您可以:

  1. 指定輸出格式:在 system prompt 中提供示例響應所需輸出模式的指示,以指導 Claude 的行為。
  2. 提供文檔、指南和參考資料:在 system prompt 中包含相關信息或 RAG 內容,以幫助 Claude 生成更加知情和準確的響應。
  3. 使用 XML 標籤,特別是用於結構化長文檔使用 XML 標籤將您的 system prompt 組織成章節,以提高清晰度。在 system prompt 中包含多個或冗長的文檔時,您可以使用多文檔 XML 格式來幫助 Claude 更好地理解和利用所提供的信息。

常見問題

我如何知道何時使用 system prompt 而不是 user prompt?

提示都是實驗,所以我們建議您兩種方式都嘗試!但一般來說,您可以將 system prompt 視為提供有關與 Claude 整體交互的指導的空間,而 user 輪次則是交互本身的一部分,或者當您只有一次性任務要完成時。

如何將現有的僅 user prompt 轉換為使用 system prompt?

要將僅 user 的 prompt 轉換為 system prompt,只需將不屬於用戶輸入的任何內容移動到 Messages API 中的 system 參數即可。這可以包括任務指示、個性指南、參考資料或任何其他有助於為對話設置舞台的上下文信息。我們鼓勵您進行實驗,看看哪個字段效果最好。

在哪裡可以使用 system prompt?

System prompt 目前可通過我們的 API、Console、Amazon Bedrock 的 API 和 Google Cloud Vertex AI 的 API 用於 Claude 3 模型和 Claude 2.1。目前在 claude.ai 上不支持。

System prompt 能使我的 prompt 防 jailbreak 或防洩漏嗎?

雖然由於其訓練方法(例如 RLHF 和 Constitutional AI),Claude 已經對 jailbreak 和不良行為具有高度彈性,但 system prompt 可以進一步增強 Claude 遵守指示和指南的能力。但是,它們並不能保證完全防止 jailbreakleaks