描述問題/錯誤/問題
代理程式每次都在載入使用者上下文,並將使用者 ID 作為每次執行的輸入傳遞。
我試圖透過在代理程式提示和技能中新增說明來防止這種情況,但 get_current_user 工具仍被重複觸發。
我們如何防止代理程式自動呼叫此工具,並確保只有在使用者明確要求其設定檔或帳戶詳細資訊時才叫用它?
此外,能否有人澄清此使用者 ID 是否與 n8n 帳戶相關聯,或者它是否從連線的應用程式中擷取不同使用者的詳細資訊?
任何關於如何修復此問題的建議都會很有幫助。
錯誤訊息是什麼(如果有的話)?
請分享您的工作流程
(在您的畫布上選擇節點,並使用鍵盤快速鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 複製並貼上工作流程。)
分享最後一個節點返回的輸出
您的 n8n 設定的相關資訊
- n8n 版本:2.45.7
- 資料庫(預設:SQLite):預設
- n8n EXECUTIONS_PROCESS 設定(預設:own, main):預設
- 執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用程式):Docker
- 作業系統:
我建議避免只依賴 Agent 提示詞來控制這種行為。
更可靠的方法是將與個人檔案相關的操作與一般對話分開。您可以使用 IF/Switch 節點或專用工作流程,只在傳入的請求明確需要個人檔案或帳戶資訊時才允許 get_current_user 工具。
此外,請檢查工具實作和連接的應用程式的身份驗證上下文,以確認傳回的使用者 ID 屬於哪個系統。它不一定是 n8n 帳戶 ID。
這樣可以讓您對工具執行擁有更多確定性的控制,而不是完全依賴模型對指示的解釋。
嗨 @AstralVyom
您螢幕截圖中的 get_current_user 呼叫屬於 n8n 內建的聊天上下文工具。在 2.45.7 版本中,它從 n8n 自有的使用者資料庫讀取聊天使用者,並傳回其 ID、名稱和電子郵件。您需要進行明確的對應,才能在已連接的應用程式中將該 ID 用作客戶 ID。
n8n 會自動為 n8n Chat 新增此上下文工具。工作流程工具內的 IF/Switch 無法阻止父代理程式呼叫它。提示指令也會保留該工具的可用性。我在 2.45.7 實作中找不到僅用於停用 get_current_user 的個別設定。
您能否分享訂單查詢工具的輸入架構和說明(已移除敏感值)?特別是,它是否需要 userId?如果需要,代理程式可能會擷取聊天使用者來填入該輸入。檢查這一點將有助於解釋在再次變更提示之前的重複查詢。