

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在调用操作组函数之前获得用户确认
<a name="agents-userconfirmation"></a>

您可以在调用操作组函数之前请求应用程序用户进行确认，从而保护您的应用程序免受恶意提示注入的影响。当终端用户与您的应用程序交互时，Amazon Bedrock 代理会确定需要调用的 API 或知识库，以便自动执行该用户的任务。API 或知识库中的信息可能包含潜在的破坏性数据。在每次迭代之间，如果响应中包含任何指令，代理将按照指令进行操作。如果响应中包含指令，要求模型调用意外操作，代理将继续执行该指令。为确保某些操作只有在用户明确同意后才会执行，我们建议您在调用函数之前请求终端用户进行确认。

配置操作组时，您可以选择为特定操作启用用户确认。如果您为某项操作启用了用户确认，代理会回应一个确认问题，询问终端用户是否确认或拒绝该操作。您可以通过控制台、CLI 或 SDK 启用用户确认。

要为操作启用用户确认，请参阅 [在 Amazon Bedrock 中向代理添加操作组](agents-action-add.md)。

## 用户确认的运作方式
<a name="user-confirmation-works"></a>

用户确认是由代理开发人员为操作组中的操作配置的。如果代理决定调用该操作，系统将在 [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` 字段中返回用户提供的 API 或函数详细信息以及代理开发人员配置的用户确认，同时还会包含 `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`。该字段包含用户确认响应。

如果用户响应为**确认**，系统会执行响应中的函数或 API。

如果用户响应为**拒绝**，系统不会执行响应中的函数或 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" 
      }
   }
}
```