那些需要浏览网页的 AI 智能体,其需求远不止于基本的页面导航。我们的客户告诉我们,他们需要智能体能够在交互过程中维持会话状态,能够通过公司代理基础设施路由流量,并使用自定义的浏览器配置来运行。AgentCore Browser 为您的智能体提供了一个安全、隔离的浏览器环境,用于与 Web 应用程序进行交互。直到现在,在 Agent Core Browser 中,每个浏览器会话都从一个空白状态开始,采用默认设置并直接访问互联网,这限制了智能体在真实企业环境中能够完成的工作。
今天,我们宣布推出三项满足这些需求的新功能:代理配置 (proxy configuration)、浏览器配置文件 (browser profiles) 和 浏览器扩展 (browser extensions)。这三项功能共同为您提供了对 AI 智能体如何与 Web 交互的精细控制。
这三种功能让您能够控制 AgentCore Browser 会话如何连接到互联网、它们保留什么状态以及它们的行为方式。代理配置允许您通过自己的代理服务器路由浏览器流量,从而提供 IP 稳定性并与公司网络基础设施集成。浏览器配置文件可以在会话之间持久化 Cookie 和本地存储,因此智能体可以恢复已验证的工作流程,而无需重复登录流程。浏览器扩展将 Chrome 扩展加载到会话中,以根据您的用例定制浏览器行为。本文将逐一介绍每项功能,并提供配置示例和实际用例,以帮助您入门。
持久化浏览器配置文件如何确保 AI 智能体平稳运行
构建用于电子商务测试、已验证工作流程和多步骤用户旅程的智能体,需要能够记住状态的浏览器会话。如果没有持久化配置文件,智能体需要在每个会话开始时重新进行身份验证并重建上下文,这会增加自动化工作流程的延迟和脆弱性。浏览器配置文件通过在会话之间保存和恢复 Cookie 和本地存储来解决这个问题,这样昨天登录了某个门户的智能体今天就可以从上次中断的地方继续操作。
IP 稳定性是另一个常见要求。医疗保健和金融门户根据源 IP 地址验证会话,而 AWS IP 地址的轮换会导致频繁的重新身份验证周期,从而破坏长期运行的工作流程。代理支持允许您通过具有稳定出口 IP 的服务器路由流量,从而保持会话连续性并满足 IP 白名单要求。需要通过公司代理路由流量的组织需要将此做法扩展到 AI 智能体的浏览器会话。代理配置可以访问需要基于代理的连接的内部网页和资源。
浏览器扩展支持自定义配置,例如广告拦截、身份验证助手或其他浏览器级别的定制。当与代理日志记录相结合时,这些功能有助于提供访问控制和审计证据,这可能支持FedRAMP、HITRUST 和 PCI 等合规性计划。
功能 1:代理配置
AgentCore Browser 现已支持通过您自己的外部代理服务器路由浏览器流量。当您使用代理配置创建浏览器会话时,AgentCore 会配置浏览器,通过您指定的代理服务器路由 HTTP 和 HTTPS 流量。
工作原理
您使用包含 proxyConfiguration 的 StartBrowserSession 调用来指定您的代理服务器。如果使用身份验证,AgentCore 会从 AWS Secrets Manager 中检索代理凭据。浏览器会话启动时会应用您的代理配置,并且浏览器流量将根据您的域路由规则通过您的代理服务器进行路由。
代理入门
在继续之前,请完成这些先决条件。
步骤 1: 创建凭据密钥(如果您的代理需要身份验证)
import boto3
import json
client = boto3.client('secretsmanager')
client.create_secret(
Name='my-proxy-credentials',
SecretString=json.dumps({
'username': '<your-username>',
'password': '<your-password>'
})
)
步骤 2: 创建带有代理配置的浏览器会话
session_client = boto3.client('bedrock-agentcore', region_name='<region>')
response = session_client.start_browser_session(
browserIdentifier="aws.browser.v1",
name="my-proxy-session",
proxyConfiguration={
"proxies": [
{
"externalProxy": {
"server": "<your-proxy-hostname>",
"port": 8080,
"credentials": {
"basicAuth": {
"secretArn": "arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"
}
}
}
}
]
}
)
print(f"Session ID: {response['sessionId']}")
对于不需要身份验证的代理,credentials 字段是可选的。
基于域的路由
使用 domainPatterns 将特定域路由到指定的代理,使用 bypass.domainPatterns 路由应直接连接的域:
proxyConfiguration={
"proxies": [
{
"externalProxy": {
"server": "corp-proxy.example.com",
"port": 8080,
"domainPatterns": [".company.com", ".internal.corp"]
}
},
{
"externalProxy": {
"server": "general-proxy.example.com",
"port": 8080
}
}
],
"bypass": {
"domainPatterns": [".amazonaws.com"]
}
}
通过此配置,对 *.company.com 和 *.internal.corp 的请求将通过公司代理路由,对 *.amazonaws.com 的请求将绕过所有代理,而所有其他请求将通过常规代理路由。这些字段仅作为示例。绕过域可以匹配 bypass.domainPatterns 直接连接,外部代理可以是有效代理的 domainPatterns 路由通过该代理(根据数组顺序,首个匹配项获胜)。
路由优先级
当 AgentCore Browser 处理出站请求时,它会遍历三个路由规则层级来决定将流量发送到何处。它首先检查绕过列表。如果目标域与 bypass.domainPatterns 条目匹配,请求将直接连接到互联网,而不会使用任何代理。如果该域不匹配绕过规则,AgentCore 会按顺序检查每个代理的 domainPatterns,并通过第一个模式匹配的代理路由请求。如果没有任何代理模式匹配,请求将落入默认代理,即没有定义 domainPatterns 的代理条目。
使用此代码示例测试新的代理功能。
功能 2:浏览器配置文件
浏览器配置文件允许您在多个浏览器会话中持久化和重用会话数据,包括 Cookie 和本地存储。在一个会话中向 Web 门户进行身份验证的智能体可以在后续会话中恢复该状态,而无需再次登录。这对于重新登录会增加延迟的已验证工作流程、需要跨会话保留购物车和表单数据的电子商务测试,以及跨越多个浏览器调用的多步骤用户旅程非常有用。
配置文件生命周期有四个阶段。您首先调用 create_browser_profile() 来创建一个命名配置文件。在会话结束时,您调用 save_browser_session_profile() 将当前的 Cookie 和本地存储捕获到该配置文件中。当您启动新会话时,您在 start_browser_session() 的 profileConfiguration 参数中传入配置文件标识符,它会将保存的状态恢复到新浏览器中。当您不再需要该配置文件时,您调用 delete_browser_profile() 将其清理掉。
以下示例展示了一个智能体在一个会话中将商品添加到购物车,并在后续会话中验证它们是否持久存在。
在继续之前,请完成这些先决条件。
import boto3
control_client = boto3.client('bedrock-agentcore-control', region_name='<region>')
# replace by your region
session_client = boto3.client('bedrock-agentcore', region_name='<region>')
# replace by your region
# Create a browser profile
profile = control_client.create_browser_profile(name="ecommerce_profile")
profile_id = profile['profileId']
# Session 1: Add items to cart
session1 = session_client.start_browser_session(
browserIdentifier=”aws.browser.v1”,
name="shopping-session-1"
)
# ... agent navigates and adds items to cart ...
# Save session state to profile
session_client.save_browser_session_profile(
sessionId=session1['sessionId'],
browserIdentifier=”aws.browser.v1",
profileIdentifier=profile_id
)
session_client.stop_browser_session(sessionId=session1['sessionId'], browserIdentifier="aws.browser.v1")
# Session 2: Resume with saved profile
session2 = session_client.start_browser_session(
browserIdentifier=”aws.browser.v1",
name="shopping-session-2",
profileConfiguration={"profileIdentifier": profile_id}
)
# Cart items from Session 1 are now available
使用此代码示例测试新的配置文件功能。
功能 3:浏览器扩展
浏览器扩展允许您将 Chrome 扩展加载到 AgentCore Browser 会话中,以定制浏览器的行为方式。您将扩展打包为 ZIP 文件,将它们上传到Amazon Simple Storage Service (Amazon S3),并在启动浏览器会话时引用它们。这提供了对通过 Chrome 扩展 API 可用的功能的访问,从代理路由和广告拦截到身份验证助手和内容修改。例如,您可以为内部应用程序注入身份验证令牌、移除广告和跟踪脚本(这些脚本可能会干扰智能体的导航),或修改页面内容以改善智能体与网站的交互方式。
您的扩展应遵循标准的Chromium 扩展格式,并遵守 Chromium 扩展指南。
在继续之前,请完成这些先决条件。
- 将扩展上传到 Amazon S3:
# Upload extension to S3 import boto3 s3 = boto3.client('s3') s3.upload_file( 'my-extension.zip', 'amzn-s3-demo-bucket-extensions', 'extensions/my-extension.zip' ) - 然后,使用扩展启动会话,指向您已上传 zip 文件的 Amazon S3 存储桶:
import boto3 region = "<region>" # replace by your region client = boto3.client('bedrock-agentcore', region_name=region) response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="my-session-with-extensions", sessionTimeoutSeconds=1800, viewPort={ 'height': 1080, 'width': 1920 }, extensions=[ { "location": { "s3": { "bucket": "amzn-s3-demo-bucket-extensions", "prefix": "extensions/my-extension.zip" } } }, { "location": { "s3": { "bucket": "amzn-s3-demo-bucket-extensions", "prefix": "extensions/another-extension.zip", "versionId": "abc123" # Optional - for versioned S3 buckets } } } ] ) print(f"Session ID: {response['sessionId']}") print(f"Status: {response['status']}") print(f"Automation Stream: {response['streams']['automationStream']['streamEndpoint']}")
使用此代码示例测试新的扩展功能。
结论
代理配置、浏览器配置文件和浏览器扩展为 AgentCore Browser 提供了客户在生产环境中部署能够浏览 Web 的 AI 智能体所需的代理路由、会话持久性和可扩展性控制。您可以将流量路由到公司代理基础设施,在交互过程中保持会话连续性,并使用扩展自定义浏览器行为,同时将凭据安全地保存在 AWS Secrets Manager 中。客户可以在会话之间传递电子商务上下文和信息,创建自己的扩展并在发布前在安全环境中进行测试,还可以让浏览器通过代理连接到您的网络。
要开始使用,请参阅Amazon Bedrock AgentCore 示例存储库中的教程和Amazon Bedrock AgentCore Browser文档。有关定价的更多信息,请访问Amazon Bedrock AgentCore 定价。
评论区