当前位置:   article > 正文

Agents for Amazon Bedrock: 引入简化的创建和配置体验_aws bedrock agent

aws bedrock agent

c18ed3e3a3b26a80dbe4f09bdf076c38.jpeg

通过 Amazon Bedrock 的 Agents,应用程序可以使用生成式人工智能 (generative AI) 跨多个系统和数据源运行任务。从今天开始,这些新功能简化了代理的创建和管理:

快速代理创建 – 您现在可以快速创建一个代理,之后可选择添加说明和操作组,为您的开发过程提供灵活性和敏捷性。

代理构建器 – 所有代理配置都可以在控制台的新代理构建器部分中进行操作。

简化配置 – 操作组可以使用简化的架构,只列出函数和参数,而不必提供API架构。

控制权的返回 – 您可以跳过使用 Amazon Lambda 函数,并将控制权返回给调用代理的应用程序。通过这种方式,应用程序可以直接与亚马逊云科技外部的系统集成,或调用托管在任何 Amazon Virtual Private Cloud (Amazon VPC) 中的内部端点,而无需将所需的网络和安全配置与Lambda函数集成。

基础设施即代码 – 您可以使用 Amazon CloudFormation 来部署和管理使用新简化配置的代理,确保您的生成式AI应用程序在各个环境中保持一致性和可重复性。

让我们看看这些增强功能在实践中是如何工作的。

[使用新的简化控制台创建代理]

为了测试新体验,我想构建一个代理来帮助我回复包含客户反馈的电子邮件。我可以使用生成式AI,但单一调用基础模型 (FM) 是不够的,因为我需要与其他系统交互。为此,我使用一个代理。

在 Amazon Bedrock 控制台中,我从导航窗格选择 Agents,然后选择 Create Agent。我输入代理的名称(customer-feedback)和描述。使用新界面,我继续并在此阶段不提供其他信息创建代理。

7da4236abc35fd6f03f7f1ba1ef0a3ff.jpeg

现在,我进入了 Agent builder,这是可以访问和编辑代理的整体配置的位置。在 Agent resource role 中,我将默认设置保留为 Create and use a new service role,这样代理所承担的 Amazon Identity and Access Management (IAM) 角色将自动为我创建。对于模型,我选择 AnthropicClaude 3 Sonnet

8f29a05697263de7414814721c4fbac6.jpeg

控制台截图。

Instructions for the Agent 中,我为代理需要执行的任务提供了明确和具体的说明。在这里,我还可以指定想让代理使用的风格和语气进行回复。对于我的用例,我输入:

Help reply to customer feedback emails with a solution tailored to the customer account settings.

Additional settings 中,我为 User input 选择 Enabled,这样当代理没有足够的信息进行回复时,它可以要求提供额外的细节。然后,我选择 Save 来更新代理的配置。

现在,我在 Action groups 部分选择 Add。操作组是代理与外部系统进行交互、收集更多信息或执行操作的方式。我输入一个名称(retrieve-customer-settings)和操作组的描述:

Retrieve customer settings including customer ID.

此描述是可选的,但如果提供,将会传递给模型,以帮助选择何时使用此操作组。

9075ab7ebe486d46daa95ca22470e456.jpeg

Action group type 中,我选择 Define with function details,这样我只需要指定函数及其参数。另一个选项(Define with API schemas)对应于使用API架构配置操作组的之前方式。

操作组函数可以与Lambda函数调用关联,或者配置为将控制权返回给调用代理的用户或应用程序,以便他们可以对函数提供响应。返回控制权的选项对以下四种主要用例很有用:

  • 当从调用代理的现有应用程序 (例如) 调用API比构建新的Lambda函数更容易,新的Lambda函数需要正确的身份验证和网络配置,正如API所需的那样。
  • 当任务持续时间超过15分钟的最长Lambda函数超时时,我可以使用运行在容器或虚拟服务器中的应用程序处理任务,或使用工作流编排如 Amazon Step Functions。
  • 当我有耗时的操作时,因为通过控制权的返回,代理不会等待该操作完成才继续下一步,而调用应用程序可以在后台异步运行操作,同时代理的编排流程继续进行。
  • 当我需要一种快速方法来模拟与API的交互,用于代理的开发和测试时。

Action group invocation 中,我可以指定在编排过程中,当模型识别出此操作组时将被调用的Lambda函数。我可以要求控制台快速创建一个新的Lambda函数、选择一个现有的Lambda函数,或者返回控制权,这样调用代理的用户或应用程序将要求提供细节以生成响应。我选择 Return Control 来展示在控制台中是如何工作的。

e2371b2b802a5d2ea537dd162c228ae2.jpeg

我配置操作组的第一个函数。我输入一个名称(retrieve-customer-settings-from-crm)和这个函数的以下描述:

Retrieve customer settings from CRM including customer ID using the customer email in the sender/from fields of the email.

de2c171fc386e30c58f98cb2d7b13e46.jpeg

Parameters 中,我添加 email,描述为 Customer email。这是一个类型为 String 的必需参数。我选择 Add 来完成操作组的创建。

因为根据我的用例预期,许多客户在登录时会遇到问题,所以我添加了另一个操作组 (名称 check-login-status),描述如下:

Check customer login status.

这次,我选择创建一个新的Lambda函数,以便通过代码处理这些请求。

对于此操作组,我配置一个函数 (名称 check-customer-login-status-in-login-system),描述如下:

Check customer login status in login system using the customer ID from settings.

Parameters 中,我添加 customer_id,另一个类型为 String 的必需参数。然后,我选择 Add 来完成第二个操作组的创建。

当我打开此操作组的配置时,我可以看到已在我的账户中创建的Lambda函数的名称。在那里,我选择 View 来在控制台中打开Lambda函数。

834e4214eb8d8848e948dff1ba4484ba.jpeg

在 Lambda 控制台中,我编辑提供的启动代码并实现我的业务案例:

import json

def lambda_handler(event, context):

print(event)

agent = event['agent']
actionGroup = event['actionGroup']
function = event['function']
parameters = event.get('parameters', [])

# 在此执行您的业务逻辑。更多信息,
# 请参阅:https://docs.aws.amazon.com/bedrock/latest/userguide/agents-lambda.html

if actionGroup == 'check-login-status' and function == 'check-customer-login-status-in-login-system':
response = {
"status": "unknown"
}

for p in parameters:
if p['name'] == 'customer_id' and p['type'] == 'string' and p['value'] == '12345':
response = {
"status": "not verified",
"reason": "the email address has not been verified",
"solution": "please verify your email address"
}
else:
response = {
"error": "Unknown action group {} or function {}".format(actionGroup, function)
}

responseBody = {
"TEXT": {
"body": json.dumps(response)
}
}

action_response = {
'actionGroup': actionGroup,
'function': function,
'functionResponse': {
'responseBody': responseBody
}
}

dummy_function_response = {'response': action_response, 'messageVersion': event['messageVersion']}

print("Response: {}".format(dummy_function_response))

return dummy_function_response

我在Lambda控制台中选择 Deploy。此函数配置了基于资源的策略,允许Amazon Bedrock调用该函数。因此,我不需要更新代理使用的IAM角色。

我已准备好测试代理。回到Amazon Bedrock控制台,选择代理后,我查找 Test Agent 部分。在那里,我选择 Prepare 来准备代理并使用最新更改对其进行测试。

作为代理的输入,我提供以下示例电子邮件:

From: danilop@example.com

Subject: Problems logging in

Hi, when I try to log into my account, I get an error and cannot proceed further. Can you check? Thank you, Danilo

在第一步,代理编排决定使用第一个操作组(retrieve-customer-settings)和函数(retrieve-customer-settings-from-crm)。此函数配置为返回控制权,在控制台中,我被要求提供操作组函数的输出。客户电子邮件地址作为输入参数提供。

cd75c99e4b8e62ba7a3c99e0e50e3da4.jpeg

为了模拟与应用程序的交互,我使用JSON语法回复,然后选择 Submit

{ “customer id”: 12345 }

在下一步中,代理有使用第二个操作组(check-login-status)和函数(check-customer-login-status-in-login-system)调用Lambda函数所需的信息。作为回应,Lambda函数提供以下JSON负载:

{ “status”: “not verified”, “reason”: “the email address has not been verified”, “solution”: “please verify your email address” }

使用此内容,代理可以完成任务并建议正确的解决方案供该客户使用。

e52031b9024949a33c9d0efd6119e3a2.jpeg

我对结果感到满意,但我想更深入了解发生了什么。我选择 Show trace,在那里我可以看到代理编排的每个步骤的详细信息。这有助于我理解代理的决策,并在操作组未按我预期使用时纠正其配置。

deb79eb1605b2ed63b76996261b4bbbb.jpeg

知识点

您现在可以在美国东部 (弗吉尼亚北部) 和美国西部 (俄勒冈州) 亚马逊云科技 地区使用新的简化体验来创建和管理 Amazon Bedrock 的 Agents。

您现在可以在不指定API架构或为操作组提供Lambda函数的情况下创建一个代理。您只需列出操作组所需的参数。在调用代理时,您可以选择返回控制权,提供要执行操作的详细信息,以便您可以在现有应用程序中处理该操作,或者如果持续时间超过最长Lambda函数超时时间。

最近发布了 Amazon Bedrock 的 Agents 的 CloudFormation 支持,现在正在更新以支持新的简化语法。

要了解更多信息:

  • 请查看 用户指南中的 Amazon Bedrock 的 Agents 部分。
  • 访问我们的 community.aws 站点,在那里您可以找到深入的技术内容,并发现其他人如何在他们的解决方案中使用 Amazon Bedrock。

– Danilo

d0ba7803384c105a8621660668f81a5f.jpeg

Danilo Poccia

Danilo 与初创公司和任何规模的公司合作,支持他们的创新。作为亚马逊网络服务 (Amazon Web Services) 的首席布道师 (EMEA),他利用自己的经验帮助人们将想法变为现实,专注于无服务器架构、事件驱动编程以及机器学习和边缘计算的技术和商业影响。他是 Manning 出版的《Amazon Web Services Lambda in Action》一书的作者。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/1018084
推荐阅读
相关标签
  

闽ICP备14008679号