

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在調用動作群組函數之前取得使用者確認
<a name="agents-userconfirmation"></a>

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

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

若要啟用動作的使用者確認，請參閱[在 Amazon Bedrock 中將動作群組新增至您的代理程式](agents-action-add.md)。

## 使用者確認的運作方式
<a name="user-confirmation-works"></a>

使用者確認由代理程式開發人員針對動作群組中的動作來進行設定。如果代理程式決定應呼叫該動作，則從使用者取得的 API 或函數詳細資訊，以及代理程式開發人員設定的使用者確認將在 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) 回應的 `invocationInputs` 欄位中傳回，連同 `invocationType` 以及唯一的 `invocationId`。

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

代理程式調用函數或 API 的結果會在另一個 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) 請求的 `sessionState` 欄位中傳送，以提供內容給代理程式。`InvokeAgent` 的請求參數使用 `returnControlInvocationResults`，這是映射到 `apiResult` 或 `functionResult` 物件的清單。`apiResult` 和 `functionResult` 物件具有額外的 `confirmationState` 欄位。此欄位具有使用者確認回應。

如果使用者回應是 **CONFIRM**，則會實作回應中的函數或 API。

如果使用者回應是 **DENY**，則不會實作回應中的函數或 API。

## InvokeAgent 回應和請求的範例
<a name="agents-userconfirmation-ex"></a>

**回應**

```
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" 
      }
   }
}
```