在調用動作群組函數之前取得使用者確認 - Amazon Bedrock

在調用動作群組函數之前取得使用者確認

您可以在調用動作群組函數之前請求應用程式使用者的確認,以保護應用程式免於惡意提示注入。當最終使用者與您的應用程式互動時,Amazon Bedrock 代理程式會找出要調用的 API 或知識庫,以便自動為使用者執行任務。來自 API 或知識庫的資訊可能包含潛在有害的資料。在每次迭代之間,如果回應中包含任何指示,代理程式將執行該指示。如果回應包含模型調用非預期動作的指示,代理程式會繼續進行並遵循指示。若要確保某些動作僅在獲得使用者明確同意後才執行,我們建議您在調用函數之前向最終使用者請求確認。

設定動作群組時,您可以選擇針對特定動作啟用使用者確認。如果某個動作已啟用使用者確認,代理程式會回應確認問題,要求最終使用者確認或拒絕動作。您可以使用主控台、CLI 或 SDK 來啟用使用者確認。

若要啟用動作的使用者確認,請參閱在 Amazon Bedrock 中將動作群組新增至您的代理程式

使用者確認的運作方式

使用者確認由代理程式開發人員針對動作群組中的動作來進行設定。如果代理程式決定應呼叫該動作,則從使用者取得的 API 或函數詳細資訊,以及代理程式開發人員設定的使用者確認將在 InvokeAgent 回應的 invocationInputs 欄位中傳回,連同 invocationType 以及唯一的 invocationId

代理程式會調用 invocationInputs 中提供的 API 或函數。如果為函數或 API 啟用使用者確認,使用者可以選擇確認拒絕回應中所提及的動作。

代理程式調用函數或 API 的結果會在另一個 InvokeAgent 請求的 sessionState 欄位中傳送,以提供內容給代理程式。InvokeAgent 的請求參數使用 returnControlInvocationResults,這是映射到 apiResultfunctionResult 物件的清單。apiResultfunctionResult 物件具有額外的 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" } } }