055 · 五招工程解法終結 Agent 幻覺
講者以同一個旅遊訂房 agent 為例,示範五個把幻覺轉成工程問題的技巧,並說明如何搬上正式環境。
原標題:Stop AI Agent Hallucinations: 5 Techniques + Production Patterns - Elizabeth Fuentes, AWS
重點摘要
- Semantic Tool Selection 省 tokenagent 工具一多,每次呼叫都要把全部工具說明塞進 context;示範用語意搜尋先篩出最相關的三個工具再送進去,單次呼叫的 token 從幾千降到不到 300。
- GraphRAG 處理聚合類問題一般向量 RAG 只能撈出資料片段,遇到「所有飯店的平均評分」這種要跨全部資料計算的問題只能用片段猜答案;改把資料建成知識圖譜,讓 model 寫查詢語言直接對全部資料做運算,拿到的是算出來的結果。
- Multi-agent validation 抓假成功單一 agent 呼叫工具失敗時,常自己把錯誤包裝成信心滿滿的成功回應;改用 executor、validator、critic 三個 agent 接力檢查,錯誤才不會被隱藏。
- Neurosymbolic guardrails 把規則寫進程式碼規則只寫進 prompt,model 有時還是會忽略,因為 prompt 對 model 來說只是文字建議;改在工具真正執行前用程式攔截、檢查參數,規則寫進程式碼就無法被跳過。
- Runtime steering 用軟性引導取代硬擋不是每個規則都該直接擋下重來,用可以動態更新規則的開源函式庫引導 agent,讓它超過限制時能自己找替代方案完成任務,而不是整個中斷讓使用者重試。
- 正式環境落地靠 Amazon Bedrock AgentCore這幾招都能搬上 AgentCore,工具呼叫變成 Lambda function、guardrail 規則存進資料庫就能即時生效,還能接外部圖資料庫,省去自建維運。
時間軸
時碼點下去會跳到影片的那一段。
| 時碼 | 段落 | 重點 |
|---|---|---|
| 00:00 | 開場 | 五個技巧改的是架構不是 prompt,目的是省 token、擋幻覺、在執行前就攔下失敗。 |
| 02:26 | 講者與框架 | Elizabeth Fuentes 是 AWS developer advocate,全程用自建的 Strands Agents 旅遊訂房 agent 示範。 |
| 03:11 | 工具塞爆 context | 旅遊 agent 有 29 個工具,不管用不用得到,每次呼叫都要把全部工具說明送進 context,對話累積後更嚴重。 |
| 05:40 | 語意篩選省 token | 先用語意搜尋篩出最相關的三個工具再送進 context,單次呼叫的 token 從約 3000 降到不到 300。 |
| 13:07 | 換工具留記憶 | 有對話歷史時不能只加工具不拿掉,得靠動態換掉舊工具,否則工具還是會愈疊愈多。 |
| 17:25 | AgentCore Gateway | 正式環境不用自己搭向量資料庫,AgentCore Gateway 註冊一次工具,就能自動幫你建索引找工具。 |
| 18:00 | 一般 RAG 的極限 | 向量搜尋只能撈出片段,遇到「全部飯店平均評分」這種要跨全部資料算的問題,model 只能用片段猜,還講得像真答案。 |
| 19:43 | 改用 GraphRAG | 把資料建成知識圖譜,讓 model 寫查詢語言直接對整個資料集下查詢,拿到的是算出來的結果,不是用片段猜的。 |
| 23:10 | 算出來 vs 猜出來 | 同一題聚合問題,一般 RAG 只能靠檢索到的片段自己拼湊;GraphRAG 直接由查詢算出平均值,也能誠實答「沒有」而不是硬掰客套話。 |
| 28:57 | 假成功回應 | 單一 agent 呼叫工具失敗時,常自己把錯誤包裝成信心滿滿的成功回應,使用者以為訂房成功,其實沒有。 |
| 30:21 | Swarm 接力驗證 | 改用 Strands 的 Swarm,讓 executor、validator、critic 三個 agent 依序接力,各自只認自己的角色,錯誤不會被吞掉。 |
| 35:56 | demo 抓出捏造 | 對同一個不存在的訂單,單一 agent 直接回報成功;換成 swarm 後,validator 抓到錯誤、critic 駁回,使用者不會看到假訊息。 |
| 36:16 | prompt 會被忽略 | 把限制寫進 prompt 或工具說明,model 有時還是照樣呼叫,因為 prompt 對 model 來說只是文字建議,不是一定要執行的邏輯。 |
| 36:51 | 規則寫進程式碼 | 改用 Strands 的 hook,在工具真正執行前攔截、檢查參數,規則寫在程式碼裡就沒辦法被跳過。 |
| 45:23 | 硬擋 vs 軟引導 | 不是每個規則都該直接擋下讓使用者重來,有些狀況更適合讓 agent 自己調整、找替代方案完成任務。 |
| 50:37 | 自動拆房完成 | 訂房人數超過單間上限時,用 runtime steering 引導 agent,agent 自己把訂單拆成兩間房,不必整個中斷讓使用者重來。 |
| 51:26 | 落地 Bedrock AgentCore | 把這幾招搬上 Amazon Bedrock AgentCore,工具呼叫自動變 Lambda function,guardrail 規則存進資料庫就能即時生效。 |
| 53:55 | 收尾五招總結 | 語意篩選省 token、GraphRAG 換來算出來的答案、multi-agent validation 抓假成功、guardrails 把規則寫進程式碼、runtime steering 讓 agent 自我修正完成任務。 |
值得記的話
名詞與人物
| Strands Agents | AWS 維護的開源 agent framework,這場所有 demo 都用它打造旅遊訂房 agent。 |
|---|---|
| Semantic Tool Selection | 用語意搜尋先篩出跟這次查詢最相關的少數工具再送進 context,取代把全部工具說明都塞進去。 |
| GraphRAG | 把資料建成知識圖譜,讓 model 寫 Cypher 查詢語言直接對整個資料集做運算,取代只撈片段的向量 RAG。 |
| Swarm | Strands 內建的 multi-agent 協作機制,能自動處理 agent 之間的交接,不用自己寫迴圈組裝。 |
| Neurosymbolic guardrails | 把限制規則寫進程式碼,用 hook 在工具真正執行前攔截檢查,而不是只寫進 prompt 讓 model 自行遵守。 |
| Amazon Bedrock AgentCore | AWS 的正式環境 agent 執行平台,這場示範把工具呼叫、guardrail 規則等元件搬上去落地生產。 |
| agent control | 講者用來做 runtime steering 的開源函式庫,規則透過 API 註冊在本機伺服器上,改規則不必動 agent 的程式碼,也不用整個 harness 重新部署。 |
延伸
- Amazon Bedrock AgentCore 內建的長期記憶與 CloudWatch 觀測功能,這場只提到有這功能,沒有進一步說明怎麼用。
- 除了本機的 Neo4j,也可以換成 Neo4j AuraDB 這個外部圖資料庫服務,這場只提到有免費方案,沒有多做說明。
- 講者提到可以用 Strands 搭配 Ollama 跑本機模型,省掉 embedding 的 token 花費,但沒有進一步示範。