DeepSeek 提示詞工程:如何精準控制生成內容的長度與分段

在開發基於 DeepSeek API 的應用程式時,精準控制生成內容的長度與結構分段是確保輸出品質與用戶體驗的關鍵。無論是為智能客服系統生成簡潔答案,還是撰寫一篇有明確章節劃分的文章,掌握這些技巧都能大幅提升生成內容的實用性與專業度。

本文將從 API 參數設定、提示詞設計兩個層面,深入探討如何有效管理 DeepSeek 模型的回覆長度與分段。

了解 DeepSeek 的內容衡量單位:Token

在使用 DeepSeek 或其他大型語言模型時,我們常聽到「Token」這個詞。要精準控制內容長度,首先要理解 Token 與我們慣常理解的「字數」或「詞數」之間的關係。

Token 是模型處理文本的基本單位,它可以是一個詞、一個詞根、一個標點符號,甚至是一個中文字。一個中文字通常被視為一個 Token,而英文單詞則根據其複雜度可能包含多個 Token。DeepSeek API 在計費和限制長度時,都是以 Token 數為準。

重點提示:

  • 一個中文字通常約等於一個 Token。
  • 一個英文字詞可能等於 1-3 個 Token。
  • 當您要求生成「100 字」的內容時,模型會盡力理解您的意圖,但在實際 API 設定中,您將會使用 max_tokens 參數來限制 Token 數。粗略估計,若要求 100 字中文,您應設定 max_tokens 約為 100-120。

透過 API 參數控制整體長度

DeepSeek API 提供了一個直接且強大的參數來限制生成內容的整體長度:max_tokens。

1. max_tokens 參數的運用

max_tokens 參數直接決定了模型生成內容的最大 Token 數。一旦生成內容達到此限制,即使句子尚未完成,模型也會停止生成。

如何設定: 在您的 API 請求中,將 max_tokens 參數設定為您期望的最大 Token 數值。

Python 示例: 以下是一個使用 DeepSeek API 創建聊天會話的 Python 示例,其中包含 max_tokens 設定。

from deepseek import Deepseek

client = Deepseek(api_key="YOUR_API_KEY") # 請替換為您的 DeepSeek API 金鑰

def generate_short_response(prompt_text, max_tokens_limit):
    """
    使用 DeepSeek API 生成指定最大 Token 數的回覆。

    Args:
        prompt_text (str): 傳給模型的提示詞。
        max_tokens_limit (int): 限制生成內容的最大 Token 數。

    Returns:
        str: DeepSeek 模型生成的文本。
    """
    try:
        response = client.chat.completions.create(
            model="deepseek-chat", # 或您選擇的其他 DeepSeek 模型
            messages=[
                {"role": "user", "content": prompt_text}
            ],
            max_tokens=max_tokens_limit, # 設定最大 Token 數
            temperature=0.7 # 控制創造性,0-2之間,越低越保守
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"發生錯誤: {e}"

# 範例應用:生成一個簡短的總結
prompt = "請簡要概括量子力學的核心概念。"
short_summary = generate_short_response(prompt, max_tokens_limit=80)
print(f"生成的簡短回覆 (最大 80 Token):\n{short_summary}\n")

# 範例應用:生成一個較長的回覆
prompt_long = "請詳細解釋全球暖化的成因、影響及可能的解決方案。"
long_response = generate_short_response(prompt_long, max_tokens_limit=300)
print(f"生成的較長回覆 (最大 300 Token):\n{long_response}")

注意事項:

  • max_tokens 是一個「最大」限制,模型不一定會生成到這個長度。它會根據提示詞和內部邏輯生成完整且有意義的內容,除非碰到限制。
  • 過小的 max_tokens 可能會導致生成內容在語句中間被截斷,影響可讀性。務必根據您期望的內容複雜度和語言習慣,合理估計所需的 Token 數。

透過提示詞精準控制內容長度

除了 API 參數,巧妙設計的提示詞 (Prompt) 才是實現精準控制的核心。模型在處理指令時,會優先嘗試滿足提示詞中的所有要求。

1. 明確要求字數、句數或段落數

最直接的方法就是在提示詞中明確指定您期望的長度。

範例提示詞:

目的 提示詞範例 備註
總字數 請用大約 150 字介紹香港的本地美食文化。 給予模型一個大致範圍,模型會盡力遵守。
總句數 請用不多於 5 句話,解釋區塊鏈技術的核心原理。 適用於需要極度簡潔明瞭的回答。
總段落數 請撰寫一份關於人工智能倫理的簡短報告,分為三個段落。 確保內容結構化,每個段落有明確主題。
內容長度 請以一句話總結這篇文章的主旨。 對於極簡概括非常有效。
內容長度 請用三個關鍵詞描述這個概念。 適用於提取核心資訊。

AI 提示詞工程師在電腦前工作

2. 利用數量詞和限定詞

在提示詞中使用「簡要」、「概述」、「詳細」、「深入」等描述性詞語,也能引導模型調整輸出長度。

範例:

  • 簡潔輸出: 請簡要說明智能合約的運作流程。
  • 詳細輸出: 請深入探討大數據分析在金融業的應用案例。

3. 多輪對話中的長度控制

在多輪對話中,您可以通過後續提示詞來修正或縮短之前生成的內容。

對話範例:

  • 用戶 A: 請解釋一下香港的公共交通系統。
  • DeepSeek: (生成一段詳細的解釋)
  • 用戶 A: 太長了,可以再簡短一些嗎?用不多於三句話概括。
  • DeepSeek: (生成一段精簡的概括)

透過提示詞精準控制內容分段

內容分段對於提升資訊可讀性至關重要,尤其是在生成較長文本時。

1. 明確指令分段結構

直接在提示詞中要求模型按照特定結構分段是最有效的方法。

範例提示詞:

  • 指定段落數: 請撰寫一篇關於氣候變化的文章,分為四個段落:引言、成因、影響、解決方案。
  • 指定條列式清單: 請列出使用 DeepSeek API 的三個主要優勢,以條列式清單呈現。
  • 指定標題結構: 請撰寫一份關於新產品的市場分析報告。報告應包含以下部分:## 產品概述、## 市場規模、## 競爭分析、## 潛在機會、## 結論。請以 Markdown 格式輸出。
  • 指定每個段落的長度: 請撰寫一個關於電動車發展趨勢的簡介。分為兩個段落,每個段落請控制在 50 字左右。

2. 運用分隔符號與格式要求

要求模型使用特定的分隔符號或排版格式,可以更好地控制輸出結構。

範例:

  • 使用 Markdown 標題: 請分析某個行業的 SWOT,並以 Markdown 的 ## 標題格式區分各個部分。
  • 使用空行分段: 請生成一個包含三個獨立觀點的文本,每個觀點後用兩個換行符隔開。
  • 使用編號或符號清單: 請列出在香港旅遊的五個必訪景點,以編號清單(1. 2. 3.)形式呈現。

多個螢幕展示程式碼與數據圖表

3. 結合 stop 參數(進階用法)

對於極度嚴格的結構控制,stop 參數可以在模型生成特定字串時立即停止。這對於確保模型在一個預設的結尾點停止非常有用,例如,如果您希望在一個特定章節結束後手動插入內容。

Python 示例: 如果您只希望模型生成「引言」和「主體」部分,而不讓它生成「結論」,可以這樣做:

from deepseek import Deepseek

client = Deepseek(api_key="YOUR_API_KEY")

prompt_with_stop = "請撰寫一篇關於AI在教育中應用的文章,包含「引言」及「主體」兩部分。"

try:
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "user", "content": prompt_with_stop}
        ],
        max_tokens=500,
        temperature=0.7,
        stop=["\n\n結論", "結論:"] # 當模型生成到這些字串時立即停止
    )
    print(f"生成的內容 (使用 stop 參數):\n{response.choices[0].message.content}")
except Exception as e:
    print(f"發生錯誤: {e}")

這個例子中,模型會在它嘗試生成「結論」部分之前停止,確保您獲得的內容嚴格按照預設界限。

實用技巧與注意事項

  • 迭代與微調: 提示詞工程是一個迭代的過程。模型不總能完美地遵守首次指令,尤其是在複雜或模糊的要求下。多次嘗試、調整措辭和參數是必要的。
  • 清晰度與簡潔性: 您的提示詞越清晰、越具體,模型越能精準理解您的意圖。避免模糊或矛盾的指令。
  • 語言習慣: 在指定字數時,考慮目標讀者的語言習慣。例如,中文的「字」與英文的「單詞」在信息密度上有所不同。
  • 模型行為限制: 即使使用了所有技巧,模型有時仍可能因其內在的知識結構而稍微偏離預期的長度或結構。這是大型語言模型本質上的不確定性。
  • 結合使用: 最好的效果往往來自於 max_tokens 參數與精心設計的提示詞的結合使用。max_tokens 作為硬性上限,提示詞則作為軟性引導。
  • DeepSeek Chatbot 與 API 的差異: 在 chat.deepseek.com 上的對話界面,您可以直接輸入自然語言指令來控制長度和分段。但在 API 開發中,您需要將這些自然語言指令融入到結構化的提示詞中,並輔以 API 參數。

總結

精準控制 DeepSeek 模型生成內容的長度與分段,是提升其在實際應用中表現的關鍵。透過靈活運用 max_tokens API 參數,並結合清晰、具體且結構化的提示詞,您可以訓練模型輸出更符合預期、更具可用性的內容。持續實驗和微調您的提示詞,將是您掌握 DeepSeek 提示詞工程的核心策略。希望本文能為您的 DeepSeek API 開發提供實用的指引。