在調用動作群組函數之前取得使用者確認
您可以在調用動作群組函數之前請求應用程式使用者的確認,以保護應用程式免於惡意提示注入。當最終使用者與您的應用程式互動時,Amazon Bedrock 代理程式會找出要調用的 API 或知識庫,以便自動為使用者執行任務。來自 API 或知識庫的資訊可能包含潛在有害的資料。在每次迭代之間,如果回應中包含任何指示,代理程式將執行該指示。如果回應包含模型調用非預期動作的指示,代理程式會繼續進行並遵循指示。若要確保某些動作僅在獲得使用者明確同意後才執行,我們建議您在調用函數之前向最終使用者請求確認。
設定動作群組時,您可以選擇針對特定動作啟用使用者確認。如果某個動作已啟用使用者確認,代理程式會回應確認問題,要求最終使用者確認或拒絕動作。您可以使用主控台、CLI 或 SDK 來啟用使用者確認。
若要啟用動作的使用者確認,請參閱在 Amazon Bedrock 中將動作群組新增至您的代理程式。
使用者確認的運作方式
使用者確認由代理程式開發人員針對動作群組中的動作來進行設定。如果代理程式決定應呼叫該動作,則從使用者取得的 API 或函數詳細資訊,以及代理程式開發人員設定的使用者確認將在 InvokeAgent 回應的 invocationInputs 欄位中傳回,連同 invocationType 以及唯一的 invocationId。
代理程式會調用 invocationInputs 中提供的 API 或函數。如果為函數或 API 啟用使用者確認,使用者可以選擇確認或拒絕回應中所提及的動作。
代理程式調用函數或 API 的結果會在另一個 InvokeAgent 請求的 sessionState 欄位中傳送,以提供內容給代理程式。InvokeAgent 的請求參數使用 returnControlInvocationResults,這是映射到 apiResult 或 functionResult 物件的清單。apiResult 和 functionResult 物件具有額外的 confirmationState 欄位。此欄位具有使用者確認回應。
如果使用者回應是 CONFIRM,則會實作回應中的函數或 API。
如果使用者回應是 DENY,則不會實作回應中的函數或 API。
InvokeAgent 回應和請求的範例
回應
HTTP/1.1 200 x-amzn-bedrock-agent-content-type: contentType x-amz-bedrock-agent-session-id: sessionId Content-type: application/json { "chunk": { ... }, ... "returnControl": { "invocationId": "string", "invocationInputs": [ { ... } ] }, "trace": { "agentAliasId": "string", "agentId": "string", "agentVersion": "string", "sessionId": "string", "trace": { ... } }, }
請求
POST /agents/agentId/agentAliases/agentAliasId/sessions/sessionId/text HTTP/1.1 Content-type: application/json { "enableTrace": boolean, "endSession": boolean, "inputText": "string", "sessionState": { "invocationId": "string", "promptSessionAttributes": { "string" : "string" }, "returnControlInvocationResults": [ { ... } ], "sessionAttributes": { "string" : "string" } } }