AI电脑操作是Anthropic推出的一项突破性功能,使AI基础模型(FMs)能够视觉感知并理解我们电脑的数字界面。借助这一能力,Anthropic的Claude模型可以识别屏幕中的内容,理解UI元素的上下文,并识别应执行的操作,如点击按钮、输入文本、滚动页面以及在应用程序之间导航。然而模型本身并不会执行这些操作,而是需要一个编排层(orchestration layer)来安全地实施支持的操作。
亚马逊云科技最近也正式宣布Amazon Bedrock代理正式支持AI电脑操作功能,并集成了Anthropic的Claude 3.5 Sonnet V2和Claude Sonnet 3.7模型。这一集成为Amazon Bedrock电脑操作代理提供了一种安全、可追踪和全托管的方式,在计算机上自动操作执行大家需要的任务。
AI电脑操作的价值
各个行业的企业在处理跨应用和系统的重复性任务时的都会面临挑战,如处理发票、更新客户记录或管理人力资源(HR)文档等。这些工作流通常要求员工在不同系统之间手动传输信息,不仅耗时且易出错,难以规模化。
传统的自动化方法通常需要为每个应用程序定制API集成,增加了大量的开发工作。计算机操作功能改变了传统的自动化方式,使智能代理可以像人类一样感知现有界面,而无需机型自定义集成开发。
在本文中,我们将构建一个AI电脑操作代理应用,它提供了介于模型和电脑之间的任务编排层,通过视觉感知功能将计算机操作转变为可执行的自动化任务。如果没有这个编排层,计算机操作功能只能通过视觉能力识别可能需要的操作,但无法执行。AI电脑操作代理的核心优势如下:
- 安全执行环境 – 代理会在沙盒安全环境中运行电脑操作的工具,限制对亚马逊云科技服务和外界物联网的访问。(但目前Amazon Bedrock代理尚未提供沙盒环境)
- 全面日志记录 – 能够跟踪每个操作和交互,以便审计和调试
- 详细追踪能力 – 对自动化工作流中每一个任务提供可视化跟踪
- 简化测试与实验 – 通过一系列的托管安全机制减少测试和实验该功能的风险
- 无缝编排 – 在多个系统之间自动执行复杂工作流,无需写复杂的自定义代码
这种集成将Anthropic对电脑界面的感知理解能力与Amazon Bedrock代理任务编排、执行能力相结合,创建了一个更为强大的代理,可以在多个应用程序之间自动化执行复杂的工作流。开发者无需为每个系统构建定制化API集成,而是可以通过创建AI代理,以托管、安全的方式感知并与现有界面自动交互。
借助AI电脑操作功能,Amazon Bedrock代理可以通过基本的GUI图形界面操作和内置Linux命令实现任务自动化。例如代理可以执行截图、创建和编辑文本文件,以及运行内置的Linux命令等操作。在使用Amazon Bedrock代理和与其兼容的Anthropic Claude模型时,可以使用以下代理action group:
- 计算机工具(Computer tool) – 允许代理与用户界面交互,包括点击、输入文本和滚动操作。
- 文本编辑工具(Text editor tool) – 为代理提供编辑和操作文件的能力。
- Bash – 允许代理执行内置的Linux命令。
解决方案概述
AI电脑操作的标准工作流包括以下步骤:
- 创建Amazon Bedrock代理,并使用自然语言描述代理的功能和与用户交互方式,例如:“你是一个计算机操作代理,能够使用Firefox浏览器进行网页搜索”作为提示词。
- 添加Amazon Bedrock代理支持的电脑操作任务到action group,使用
CreateAgentActionGroup API
将想让代理执行的电脑操作关联到代理。 - 调用代理,向AI电脑操作工具询问问题,例如:“什么是Amazon Bedrock?你能在网页上搜索一下吗?”
- 代理调用电脑操作工具,代理会决定应该执行哪些任务操作,例如截取屏幕截图等。Amazon Bedrock代理使用返回控制(return control)机制,输出需要执行任务的工具或操作,交由工具进一步处理。
- 任务执行,Amazon Bedrock会解析代理返回的响应,在沙盒环境中执行对应工具,并将结果返回给代理进行进一步处理。
- 代理持续迭代执行操作,直到完成任务。
大家可以在us-west-2区域,使用AWS CDK复现此实验。本实验将在AWS Fargate上部署一个容器化应用,跨两个可用区运行。该基础架构在VPC中运行,每个可用区包含公共子网,并通过Internet Gateway提供外部连接。此外该架构还结合了AWS KMS秘钥管理服务以增强安全性,以及Amazon CloudWatch用于监控,最终构建了一个弹性可扩展、无服务器的容器环境,既消除了对底层基础设施的管理需求,又能确保高安全性和高可用性。
架构设计介绍
该解决方案的核心由两个Fargate容器组成,并由容器托管服务Amazon ECS管理,每个容器都有独立的安全组防火墙进行保护:
1. 任务流编排容器(Orchestration Container)
- 负责处理Amazon Bedrock代理与终端用户交互。
- 负责编排各项工具任务执行工作流,确保计算机对工具的操作和顺序是正确的。
2. 执行环境容器(Environment Container)
- 充当安全沙盒,代理在该环境下安全通过工具操作计算机。
- 受限访问:该环境容器对亚马逊云科技服务和互联网的访问受限,仅允许执行特定操作。
- 使用容器服务发现(Service Discovery)功能,不同应用之间通过DNS名称连接Amazon ECS服务。
编排容器的主要组件
- Streamlit UI – 作为前端界面,支持用户与计算机操作代理交互。
- 返回控制循环(Return Control Loop) – 解析代理返回的输出,包括希望执行的工具,并返回工具的执行结果。
环境容器的主要组件
- UI与必要应用 – 预装轻量级UI和Linux应用(如Firefox),用于执行用户所需要的任务。
- 工具实现 – 包含执行AI电脑操作工具的代码,如“截图(screenshot)”、“双击(double-click)”。
- Quart JSON API (RESTful) – 使用Quart框架接收编排容器的API调用,并在沙盒环境中执行电脑工具操作。
下图展示了这些组件的整体架构。
实验前提条件
在实验开始之前,请确保具备以下云平台环境要求:
- 已安装AWS CLI,并配置访问权限秘钥
- 安装Python 3.11或更高版本
- 安装Node.js 14.15.0或更高版本
- 已安装AWS CDK CLI
- 已启用Anthropic Claude 3.5 Sonnet V2和Claude 3.7 Sonnet的模型访问权限
- Boto3 版本 需要>= 1.37.10
创建一个Amazon Bedrock代理并启用AI电脑操作功能
大家可以使用以下示例代码创建一个Amazon Bedrock代理,并启用AI电脑操作功能、Bash和文本编辑器action group。使用Claude 3.5 Sonnet V2和Claude 3.7 Sonnet时,务必提供兼容的action group签名。签名和代码分别如下:
import boto3
import time
# Step 1: Create the bedrock agent client
bedrock_agent = boto3.client("bedrock-agent", region_name="us-west-2")
# Step 2: Create an agent
create_agent_response = create_agent_response = bedrock_agent.create_agent(
agentResourceRoleArn=agent_role_arn, # Amazon Bedrock Agent execution role
agentName="computeruse",
description="""Example agent for computer use.
This agent should only operate on
Sandbox environments with limited privileges.""",
foundationModel="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
instruction="""You are computer use agent capable of using Firefox
web browser for web search.""",
)
time.sleep(30) # wait for agent to be created
# Step 3.1: Create and attach computer action group
bedrock_agent.create_agent_action_group(
actionGroupName="ComputerActionGroup",
actionGroupState="ENABLED",
agentId=create_agent_response["agent"]["agentId"],
agentVersion="DRAFT",
parentActionGroupSignature="ANTHROPIC.Computer",
parentActionGroupSignatureParams={
"type": "computer_20250124",
"display_height_px": "768",
"display_width_px": "1024",
"display_number": "1",
},
)
# Step 3.2: Create and attach bash action group
bedrock_agent.create_agent_action_group(
actionGroupName="BashActionGroup",
actionGroupState="ENABLED",
agentId=create_agent_response["agent"]["agentId"],
agentVersion="DRAFT",
parentActionGroupSignature="ANTHROPIC.Bash",
parentActionGroupSignatureParams={
"type": "bash_20250124",
},
)
# Step 3.3: Create and attach text editor action group
bedrock_agent.create_agent_action_group(
actionGroupName="TextEditorActionGroup",
actionGroupState="ENABLED",
agentId=create_agent_response["agent"]["agentId"],
agentVersion="DRAFT",
parentActionGroupSignature="ANTHROPIC.TextEditor",
parentActionGroupSignatureParams={
"type": "text_editor_20250124",
},
)
# Step 3.4 Create Weather Action Group
bedrock_agent.create_agent_action_group(
actionGroupName="WeatherActionGroup",
agentId=create_agent_response["agent"]["agentId"],
agentVersion="DRAFT",
actionGroupExecutor = {
'customControl': 'RETURN_CONTROL',
},
functionSchema = {
'functions': [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location.",
"parameters": {
"location": {
"type": "string",
"description": "The city, e.g., San Francisco",
"required": True,
},
"unit": {
"type": "string",
"description": 'The unit to use, e.g.,
fahrenheit or celsius. Defaults to "fahrenheit"',
"required": False,
},
},
"requireConfirmation": "DISABLED",
}
]
},
)
time.sleep(10)
# Step 4: Prepare agent
bedrock_agent.prepare_agent(agentId=create_agent_response["agent"]["agentId"])
示例用例
在本文示例中,我们使用Amazon Bedrock代理的AI电脑操作功能自动填写网页表单。在我们的示例中,代理执行了如下操作:
- 读取网页中的表单
- 切换Firefox标签页,与CRM系统页面交互以获取客户信息
- 自动在单元格里填写客户ID、姓名和电子邮件
- 同样适用于不同的CRM厂商,如Salesforce, SAP, Workday。页可以自动进行账户密码登录
在展示的上述场景中,大家可以观察到Amazon Bedrock代理在使用计算机工具时的效果。我们在实验亲眼见证了AI电脑操作代理,完成了客户ID、客户名称和电子邮件的填写。方案中该电脑操作代理业调用了CRM代理,以获取更多客户的其他信息。
最佳实践
以下是一些可以提升使用案例性能的方法:
- 配置安全组(Security Groups)、网络访问控制列表(NACLs)以及Amazon Route 53 Resolver DNS防火墙域列表,以控制对沙箱环境的不安全访问。
- 遵循亚马逊云科技身份与访问管理(IAM)以及最小权限原则,为沙箱环境分配有限的访问权限。
- 在为Amazon Bedrock代理提供指令提示词时,要简明扼要。提示词中指令简单、定义清晰的任务,并为每个步骤提供明确的指示。
- 了解Anthropic强调的AI电脑操作使用限制。
- 在调用电脑操作工具之前,通过用户二次确认来让控制返回机制更为安全,目的是保护应用程序免受恶意提示注入攻击。
- 采用多代理协作以及Amazon Bedrock Agents的AI电脑操作功能,以自动化复杂的工作流。
- 根据组织内的负责任AI策略过滤有害的多模态内容,并将Amazon Bedrock Guardrails与代理关联,以实施安全保障。
注意事项
AI电脑操作功能带来的风险不同于标准API功能或与大模型的聊天交换,尤其是在使用该功能与外界互联网交互时风险更高。为了降低风险,请考虑采取以下预防措施:
- 在权限最小化的专用虚拟机或容器中运行计算机使用功能,以最大程度减少系统漏洞利用或意外事故。
- 为了防止信息被盗,避免为计算机使用API提供对敏感账户或数据的访问权限。
- 限制计算机使用API的互联网访问,仅允许访问必要的域,以减少访问恶意内容的风险。
- 为了确保适当的监管,对敏感任务或需要明确审核的操作(例如接受Cookies、执行金融交易或同意服务条款)保持人工审核。
任何允许Anthropic的Claude访问或查看的内容,都可能影响其执行指令的方式,甚至可能导致模型出现错误或执行非预期操作。因此采取适当的防护措施至关重要,例如隔离Anthropic的Claude与敏感、不安全页面的接触,以避免提示注入相关风险。在开启AI电脑操作功能所需的权限之前,大家应告知终端用户相关风险,并在适当情况下获得他们的同意。
资源清理
在使用完该解决方案后,请务必清理所有资源。按照提供的GitHub代码库中的说明进行操作。
总结
各行业的企业在跨应用系统的复杂工作流任务中正面临重大挑战,传统上需手动操作或复杂的定制化API集成。Anthropic的计算机使用功能与Amazon Bedrock Agents的结合,提供了变革性的方案解决这些问题。
通过将Amazon Bedrock Agents用作任务工作流编排层,企业可以减少为每个应用程序开发定制化API的工作量,同时为企业提供了自动化工作流中所需的日志记录和追踪功能,并快速实施和上线任务自动化解决方案。
当大家开始探索Amazon Bedrock Agents的AI电脑操作功能时,可以考虑哪些工作流能适合使用该技术。从发票处理到客户入职,从人力资源文档到合规报告,这一技术的潜在应用场景非常多,而且都是变革性的。
我们期待看到大家如何利用Amazon Bedrock Agents与AI电脑功能,以更安全的方式优化运营效率,并通过AI驱动的自动化任务流使业务流程更为高效。