在调用操作组函数之前获得用户确认 - Amazon Bedrock

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

在调用操作组函数之前获得用户确认

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

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

要为操作启用用户确认,请参阅 在 Amazon Bedrock 中向代理添加操作组

用户确认的运作方式

用户确认是由代理开发人员为操作组中的操作配置的。如果代理决定调用该操作,系统将在 InvokeAgent 响应的 invocationInputs 字段中返回用户提供的 API 或函数详细信息以及代理开发人员配置的用户确认,同时还会包含 invocationType 和唯一的 invocationId

代理会调用 invocationInputs 中提供的 API 或函数。如果为该函数或 API 启用了用户确认,用户将看到一个选项,询问是否确认拒绝响应中提到的操作。

代理调用函数或 API 的结果将在另一个 InvokeAgent 请求的 sessionState 字段中发送,以便为代理提供上下文。InvokeAgent 请求的参数使用 returnControlInvocationResults,它是映射到 apiResultfunctionResult 对象的列表。apiResultfunctionResult 对象还有一个附加字段 confirmationState。该字段包含用户确认响应。

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

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