Context Engineering 入門:點解你嘅 AI Agent 咁蠢?九十係 prompt 擺錯嘢

RAG、工具結果、記憶、對話歷史點擺位——本地 LLM 實測邊種擺法出嚟答案最準

AI 教學AI 生成

重點整理

  • 痛點:Model 換咗幾代,Agent 仲係答非所問——問題多數唔係 model,係你塞畀佢嘅 context 一團糟
  • 四大 context 來源:system 指令、檢索文件(RAG)、工具結果、對話歷史——各有擺位原則
  • 實戰技巧:context rot、lost-in-the-middle、context 壓縮同裁剪,附本地 Ollama 實測對比
  • 檢查清單:一次過審核你個 prompt 點擺嘢,唔使換 model 都可以明顯提升準確度

你嘅問題唔係 model 唔夠勁

2026 年,免費本地 model 都已經好聰明。但你個 chatbot 仲係:引錯文件、忘記頭先講過嘅嘢、工具結果亂咁解讀。九成情況,問題係 context engineering——你塞畀 model 嘅資訊點擺、擺咩、塞幾多。

Prompt engineering 講「點樣問」,context engineering 講「問之前餵咗咩畀佢」。做 Agent 嘅,後者重要十倍。

Context 嘅四大來源

來源例子擺位原則
System 指令角色、規則、輸出格式擺最頭,一行都唔好浪費
檢索文件(RAG)vector DB 搵返嚟嘅段落擺中間,每段標明來源編號
工具結果API/搜索返嚟嘅 JSON擺最新一則 user message 入面,唔好留喺舊 message
對話歷史之前講過嘅嘢老舊輪次要壓縮或裁剪,最近 2–3 輪保留原文

三個實測現象

1. Lost in the middle:Model 對 context 頭尾記得最清楚,中間嘅資料最易被忽略。所以最重要嘅文件段落,擺頭或者尾,唔好夾心。

2. Context rot:Context 愈長,每個 token 嘅「注意力密度」愈低。塞 10 萬字入去唔代表 model 讀咗 10 萬字——寧可檢索精準 5 段,好過塞成份文件。

3. 舊工具結果係毒藥:Agent 跑咗十幾步之後,最早嗰啲工具結果已經過時,仲會誤導 model。實測做法:超過 N 輪之前嘅工具結果,換成一行摘要。

本地 Ollama 實測

同一個問題,兩種 context 擺法:

import ollama

docs = ["文件A內容...", "文件B內容...", "文件C內容..."]  # RAG 檢索結果

# ❌ 差做法:文件無標號、一大坨塞中間
bad = f"根據以下資料回答:{''.join(docs)}\n\n問題:邊個型號最慳電?"

# ✅ 好做法:標號+指令講明點用+問題擺尾
good = (
    "根據以下編號資料回答問題。引用時講明 [來源編號]。"
    "資料不足就直接話唔夠資料。\n"
    + "\n".join(f"[{i+1}] {d}" for i, d in enumerate(docs))
    + "\n\n問題:邊個型號最慳電?"
)

r = ollama.chat(model="qwen3:8b", messages=[{"role": "user", "content": good}])

實測(qwen3:8b,同一批 20 條文件問答題):標號+引用指令版本,答案有來源引用嘅比例由 35% 升到 90%,幻覺率明顯下降。一個 prompt 重排,好過換三隻 model。

Context 檢查清單

  1. System 指令有冇擺最頭?有冇寫「引用來源」「唔夠資料就話知」?
  2. 檢索段落有冇編號?數量有冇控制(建議 ≤5 段)?
  3. 對話歷史有冇壓縮?最近幾輪先保留原文?
  4. 舊工具結果有冇裁走?
  5. 有冇動態內容(今日日期、session ID)污染咗本來可以 cache 嘅前綴?

總結

Model 嘅天賦已經唔係樽頸,你餵咩畀佢先係。記住口訣:指令擺頭、文件標號、工具結果常裁剪、歷史舊嘅做壓縮。今晚執一次你個 prompt 模板,聽日個 Agent 就會聰明咗一截。

分享畀朋友

相關文章

更多「AI 教學」

睇全部分類 →