电脑使用(测试版)
升级后的 Claude 3.5 Sonnet 模型能够与可以操控计算机桌面环境的工具进行交互。
电脑使用是一项测试版功能。请注意,电脑使用带来的风险与标准 API 功能或聊天界面的风险有所不同。在使用电脑功能访问互联网时,这些风险会更加显著。为了最小化风险,建议采取以下预防措施:
- 使用具有最小权限的专用虚拟机或容器,以防止直接系统攻击或意外。
- 避免让模型访问敏感数据(如账户登录信息),以防信息被盗。
- 将互联网访问限制在允许名单中的域名范围内,以减少接触恶意内容的风险。
- 对可能产生实际后果的决定,以及任何需要明确同意的任务(如接受 cookie、执行金融交易或同意服务条款),请让人类进行确认。
在某些情况下,Claude 会遵循内容中的命令,即使这些命令与用户的指示相冲突。例如,网页上或图片中的 Claude 指令可能会覆盖指示或导致 Claude 出错。我们建议采取预防措施,将 Claude 与敏感数据和操作隔离,以避免与提示注入相关的风险。
最后,在您自己的产品中启用电脑使用功能之前,请告知最终用户相关风险并获得他们的同意。
电脑使用参考实现
通过我们的电脑使用参考实现快速入门,其中包括网页界面、Docker 容器、示例工具实现和代理循环。
请使用此表单提供关于模型响应质量、API 本身或文档质量的反馈 - 我们迫不及待想听到您的意见!
以下是使用 Messages API 为 Claude 提供电脑使用工具的示例:
电脑使用的工作原理
1. 为 Claude 提供电脑使用工具和用户提示
- 在您的 API 请求中添加 Anthropic 定义的电脑使用工具。
- 包含可能需要这些工具的用户提示,例如”将一张猫的图片保存到我的桌面。”
2. Claude 决定使用工具
- Claude 加载存储的电脑使用工具定义,并评估是否有工具可以帮助解决用户的查询。
- 如果可以,Claude 会构建格式正确的工具使用请求。
- API 响应的
stop_reason
为tool_use
,表明 Claude 的意图。
3. 提取工具输入,在计算机上评估工具,并返回结果
- 在您这边,从 Claude 的请求中提取工具名称和输入。
- 在容器或虚拟机上使用该工具。
- 继续对话,发送包含
tool_result
内容块的新user
消息。
4. Claude 继续调用电脑使用工具,直到完成任务
- Claude 分析工具结果,以确定是否需要更多工具使用或任务是否已完成。
- 如果 Claude 决定需要另一个工具,它会再次以
tool_use
stop_reason
响应,您应返回步骤 3。 - 否则,它会为用户制作文本响应。
我们将在没有用户输入的情况下重复步骤 3 和 4 称为”代理循环” - 即 Claude 用工具使用请求响应,而您的应用程序用评估该请求的结果响应 Claude。
如何实现电脑使用
从我们的参考实现开始
我们构建了一个参考实现,其中包含了您快速开始使用电脑功能所需的一切:
我们建议在阅读本文档的其余部分之前先试用参考实现。
通过提示优化模型性能
以下是一些获得最佳输出质量的提示:
- 指定简单、明确定义的任务,并为每个步骤提供明确的说明。
- Claude 有时会在不明确检查结果的情况下假设其行动的结果。为了防止这种情况,您可以这样提示 Claude:“每个步骤之后,截取屏幕截图并仔细评估是否达到了正确的结果。明确展示您的思考过程:‘我已评估步骤 X…’如果不正确,请重试。只有在确认某个步骤已正确执行后,才能继续下一步。”
- 某些 UI 元素(如下拉菜单和滚动条)可能难以用鼠标移动操作。如果遇到这种情况,请尝试提示模型使用键盘快捷键。
- 对于可重复的任务或 UI 交互,在提示中包含成功结果的示例截图和工具调用。
如果您反复遇到一组明确的问题,或事先知道 Claude 需要完成的任务,请使用系统提示为 Claude 提供明确的提示或说明,以成功完成这些任务。
系统提示
当通过 Anthropic API 请求 Anthropic 定义的工具之一时,会生成特定于电脑使用的系统提示。它类似于工具使用系统提示,但以以下内容开始:
您可以访问一组函数来回答用户的问题。这包括访问一个沙盒计算环境。除非调用以下函数,否则您目前无法检查文件或与外部资源交互。
与常规工具使用一样,用户提供的 system_prompt
字段仍然受到尊重,并用于构建组合系统提示。
了解 Anthropic 定义的工具
作为测试版,这些工具定义可能会发生变化。
我们提供了一组工具,使 Claude 能够有效地使用计算机。在指定 Anthropic 定义的工具时,不需要也不允许使用 description
和 tool_schema
字段。
Anthropic 定义的工具由用户执行
Anthropic 定义的工具由 Anthropic 定义,但您必须明确评估工具的结果并将 tool_results
返回给 Claude。与任何工具一样,模型不会自动执行工具。
我们目前提供 3 个 Anthropic 定义的工具:
{ "type": "computer_20241022", "name": "computer" }
{ "type": "text_editor_20241022", "name": "str_replace_editor" }
{ "type": "bash_20241022", "name": "bash" }
type
字段用于验证目的识别工具及其参数,name
字段是暴露给模型的工具名称。
如果您想提示模型使用这些工具之一,可以通过 name
字段明确引用该工具。name
字段在工具列表中必须是唯一的;您不能在同一个 API 调用中定义一个与 Anthropic 定义工具同名的工具。
我们不建议定义与 Anthropic 定义工具同名的工具。虽然您仍然可以重新定义这些名称的工具(只要工具名称在您的 tools
块中是唯一的),但这样做可能会导致模型性能下降。
将电脑使用与其他工具结合
您可以将常规工具使用与 Anthropic 定义的电脑使用工具结合使用。
构建自定义电脑使用环境
参考实现旨在帮助您开始使用电脑功能。它包含了让 Claude 使用计算机所需的所有组件。但是,您可以根据需要构建自己的电脑使用环境。您需要:
- 一个适合与 Claude 进行电脑使用的虚拟化或容器化环境
- 至少一个 Anthropic 定义的电脑使用工具的实现
- 一个与 Anthropic API 交互并使用您的工具实现执行
tool_use
结果的代理循环 - 允许用户输入启动代理循环的 API 或 UI
了解电脑使用的限制
电脑使用功能处于测试阶段。虽然 Claude 的功能处于前沿水平,但开发人员应该了解其限制:
- 延迟:当前的人机交互电脑使用延迟可能比常规的人类直接计算机操作慢。我们建议关注速度不重要的用例(例如,后台信息收集、自动化软件测试)在受信任的环境中。
- 计算机视觉准确性和可靠性:Claude 在输出特定坐标生成操作时可能会出错或产生幻觉。
- 工具选择准确性和可靠性:Claude 在生成操作时选择工具可能会出错或产生幻觉,或采取意外的操作来解决问题。此外,在与小众应用程序或同时与多个应用程序交互时,可靠性可能较低。我们建议用户在请求复杂任务时谨慎提示模型。
- 滚动可靠性:在当前体验中,滚动可能不可靠,模型可能无法可靠地滚动到页面底部。可以通过按键(PgUp/PgDown)改善滚动类行为。
- 电子表格交互:电子表格交互的鼠标点击不可靠。单元格选择可能不会按预期工作。可以通过提示模型使用方向键来缓解这个问题。
- 在社交和通信平台上创建账户和生成内容:虽然 Claude 会访问网站,但我们限制其在社交媒体网站和平台上创建账户或生成和分享内容或以其他方式进行人类冒充的能力。我们可能会在未来更新这个功能。
- 漏洞:像越狱或提示注入这样的漏洞可能会在前沿 AI 系统中持续存在,包括测试版电脑使用 API。在某些情况下,Claude 会遵循内容中的命令,有时甚至与用户的指示相冲突。例如,网页上或图片中的 Claude 指令可能会覆盖指示或导致 Claude 出错。我们建议: a. 将电脑使用限制在受信任的环境中,如具有最小权限的虚拟机或容器 b. 在没有严格监督的情况下,避免让电脑使用访问敏感账户或数据 c. 在您的应用程序中启用或请求电脑使用功能所需的权限之前,告知最终用户相关风险并获得他们的同意
- 不当或非法行为:根据 Anthropic 的服务条款,您不得使用电脑功能违反任何法律或我们的可接受使用政策。
始终仔细审查和验证 Claude 的电脑使用操作和日志。在没有人类监督的情况下,不要使用 Claude 执行需要完美精确度或敏感用户信息的任务。
定价
有关 Claude 工具使用 API 请求定价的详细说明,请参阅工具使用定价文档。
作为工具使用请求的一个子集,电脑使用请求的定价与任何其他 Claude API 请求相同。
我们还自动为模型包含一个特殊的系统提示,以启用电脑使用。
模型 | 工具选择 | 系统提示令牌数 |
---|---|---|
Claude 3.5 Sonnet (新) | auto any , tool | 466 个令牌 499 个令牌 |
除了基本令牌外,Anthropic 定义的工具还需要以下额外的输入令牌:
工具 | 额外输入令牌 |
---|---|
computer_20241022 | 683 个令牌 |
text_editor_20241022 | 700 个令牌 |
bash_20241022 | 245 个令牌 |