上一篇我們認識了 Prompt 的基本概念,也知道了它在 Agent 中的重要性。
不過在實作時,常常會遇到一個問題:
「明明 Prompt 已經寫好了,為什麼 Agent 還是會出錯?」
這篇我們就來更深入探討 Prompt 的挑戰、管理方式等。
為什麼 Prompt 有時候已經寫了還是會出錯?
即使 Prompt 寫得再清楚,LLM 或 Agent 有時候仍可能出錯。原因大致可分為兩類:模型本身的特性與Prompt 設計不足。
而這兩類再往下分的原因大概還有幾種:
-
模型的隨機性(Stochastic Nature)
- LLM 在生成答案時,本質上是依照機率分佈來預測下一個詞,而不是絕對固定的輸出。
- 即使給定相同的 Prompt,每次回覆可能略有差異。
-
Prompt 不夠具體
- 如果 Prompt 內容模糊,模型也可能誤解了你的意圖。
- 例如:
請回傳天氣
→ 模型可能隨意發揮,甚至忽略你想要的格式(如 JSON)。
-
Agent 的行為不等同於工具輸出
即使你的工具函式(如 Day 10、Day 11 的 add_numbers
或 reverse_text
)有固定的 return
格式,Agent 不一定會「原封不動」回傳結果。在 ADK(如 Google ADK)的流程中,LLM 會決定:
- 是否呼叫工具
- 工具結果是否直接使用
- 或者自己改寫輸出
因此,LLM 可能只抽取核心資訊(例如 8
或反轉後的字串)來回覆,而忽略完整句子。
-
上下文不足或資訊缺失
- 任務太複雜或包含多個步驟,容易導致模型遺漏、順序錯亂或自由發揮。
-
Instruction 沒有限制格式
- 如果 Prompt 或 Agent 的 instruction 沒明確要求「必須完整回傳工具輸出的句子」,LLM 可能只給出最簡化的答案。這也是為什麼有時候你看到的回覆只是數字或字串,而不是完整訊息。
總結:Prompt 出錯不是 Bug,而是 LLM 的本質 + Prompt 設計不足的綜合作用。
Prompt 一定要用英文?
其實 Prompt 不一定非得用英文,中文也可以運作,但在實務上,很多人會建議以英文來寫,原因主要有這幾點:
-
訓練語料比例差異
- 多數大型語言模型(LLM)訓練資料以英文為主。
- 雖然模型支援多語,但英文的資料量、範例數和品質都遠高於其他語言。
- 這代表用英文指令,模型理解的精準度和一致性會更高。
-
技術文件與範例多數是英文
- API 文件、程式碼範例、研究論文,幾乎都用英文撰寫。
- 如果你寫 Prompt 時也用英文,模型更容易和這些「知識脈絡」對齊,產生結果的正確性和一致性會更高。
-
避免語言歧義
- 中文、日文等語言常有「同一個詞有多種意思」的情況。
- 英文表達更容易具體化,降低模型「誤解指令」的風險。
-
多數最佳實踐與研究基於英文
- 很多 Prompt 技巧最初都是針對英文測試。
- 直接用英文,能最大化利用這些既有成果。
那中文 Prompt 完全不行嗎?
中文在 對話、內容生成、教學文案 等任務上表現其實不差,甚至更自然。但在 程式、結構化輸出、精準控制格式 的情境下,用英文通常更穩定。
結論:
- 如果要 教模型做精確的事(例如 API、工具回傳格式、JSON 結構、代碼生成)→ 建議用英文。
- 如果要 和使用者互動、寫文章、內容表達 → 中文一樣可以,甚至更貼近需求。
為什麼要分開成單獨一個檔案?
在 Google ADK 的專案結構中,我們通常會把 Prompt 放在 prompt.py
(或多個檔案)。這麼做有幾個好處:
-
方便管理
- 每個 Agent 的描述(description)與指令(instruction)集中存放,不會散落在程式碼各處。
-
更容易調整與版本控制
- 只要修改
prompt.py
,就能快速更新 Agent 行為,不需要動到主要程式。
-
可讀性更好
- 程式碼部分專注於「邏輯與工具」;Prompt 部分專注於「語言與行為設定」。
-
利於協作
- 開發者可以專注寫程式,PM / 策略人員可以專注設計 Prompt,互不干擾。
實務上,專案規模一大,Prompt 拆分檔案管理 幾乎是必須的。
Prompt 要怎麼寫最好?
1. 明確角色定位(Role Setting)
- 指定模型身份,避免它自由發揮。
- 角色設定會影響 AI 回答的風格與角度。
範例:
你是一個友善的天氣助理,負責根據地點與日期回覆天氣資訊。
2. 清楚定義任務(Task Instruction)
- 告訴模型「要做什麼」,而不是模糊的「幫我處理」。
- 明確任務讓 AI 知道輸出重點,減少偏離。
範例:
請回傳氣溫與天氣狀況
3. 提供上下文(Context)
- 提供背景資訊,讓 AI 更懂你的需求,避免亂猜或偏題。
範例:
我正在寫一篇關於遠端工作的文章,目標讀者是剛接觸自由接案的新手。
請幫我列出 5 個遠端工作的常見挑戰,並給出解決建議。
4. 規範輸出格式(Output Format)
- 規範輸出格式(Output Format)
- 使用 JSON、Markdown、表格等結構化格式,方便閱讀或程式解析。
- 統一輸出格式可以提升系統自動化與一致性。
範例:
請回傳 JSON 格式:
{
"location": "",
"date": "",
"weather": "",
"temperature": ""
}
5. 限制範圍(Constraint / Boundary)
- 設定邊界,避免 AI 隨意發揮。
- 可以指定語言、字數限制,或特定情況的回覆內容。
範例:
如果輸入缺少地點或日期,請回覆「請提供完整資訊」。
回答請使用繁體中文,每個要點不超過 30 字。
寫好 Prompt 的黃金公式
你可以用這個框架來設計 Prompt:
[角色] + [任務] + [上下文] + [格式要求] + [限制條件]
範例:
你是一位資深的產品經理。
請幫我分析一個新創 APP 的商業模式。
這個 APP 的功能是「幫使用者追蹤日常喝水量」。
請用表格格式輸出,欄位包含「收入來源」、「目標族群」、「潛在風險」。
回答請使用繁體中文。
這樣的 Prompt 能讓 AI 更清楚任務範圍、行為規則與輸出格式,結果也會更穩定。
額外小技巧
-
先模擬對話:想像你請一個人幫忙,你會如何交代?照著那個邏輯寫 Prompt。
-
逐步提示(Step-by-step Prompting):如果任務太大,拆成小步驟,逐步引導 AI 完成。
-
提供範例(Few-shot Prompting):給模型正確輸入/輸出範例,讓它模仿學習。
-
反覆測試與優化:好的 Prompt 很少一次就到位,通常需要多次調整。