当前位置: 首页 > news >正文

openai-cua-sample-app - 使用计算机的 Agent示例应用

文章目录

    • 一、关于 openai-cua-sample-app
      • 概述
      • 抽象
    • 二、设置与运行
    • 三、CLI 使用
      • 运行示例(可选)
    • 四、计算机环境
      • Docker 设置
      • 主机环境设置
    • 五、函数调用
    • 风险与安全考虑


一、关于 openai-cua-sample-app

CUA : Computer Using Agent (CUA)

开始使用 OpenAI API 构建一个 使用代理的计算机 (CUA)。

警告:计算机使用 处于预览阶段。因为该模型仍处于预览状态,可能容易受到攻击 和意外错误的影响,我们不建议在认证环境中 或高风险任务中使用它。


概述

计算机使用工具和模型可通过 Responses API 获取。

在宏观层面,CUA 会查看计算机界面的截图并推荐行动。

具体来说,它会发送 computer_call(s) 并携带 actions,例如 click(x,y)type(text),您需要在您的环境中执行这些操作,并随后期望看到结果的截图。

您可以在计算机使用指南中了解更多关于这个工具的信息。


抽象

这个仓库定义了两个轻量级抽象,以使与CUA代理交互 更加人性化。一切都可以在没有它们的情况下工作,但它们提供了便利的关注点分离。

抽象文件描述
计算机computers/computer.py定义了适用于各种环境(本地桌面、远程浏览器等)的 计算机 接口。计算机 的实现负责执行 由 CUA(点击等)发送的任何 computer_action
Agentagent/agent.py简单、熟悉的代理循环 - 实现 run_full_turn(),该函数只是不断调用模型,直到处理完所有计算机动作和函数调用。

二、设置与运行

设置 Python 环境并安装依赖项。

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt

运行 CLI 以让 CUA 使用本地浏览器窗口,使用 playwright。 (使用 CTRL+C 停止)

python cli.py --computer local-playwright

其他包含的示例 计算机环境:

  • Docker (容器化桌面)
  • Browserbase (远程浏览器,需要账户)
  • Scrapybara (远程浏览器或计算机,需要账户)
  • …或实现你自己的 Computer!

三、CLI 使用

CLI (cli.py) 是开始使用 CUA 的最简单方式。它接受以下参数:

  • --computer: 要使用的计算机环境。有关选项,请参阅下面的计算机环境部分。默认情况下,CLI 将使用 local-playwright 环境。
  • --input: 代理的初始输入(可选:如果未提供,CLI 将会提示您输入)
  • --debug: 启用调试模式。
  • --show: 在执行期间显示图像(截图)。
  • --start-url: 使用特定URL启动浏览会话(仅适用于浏览器环境)。默认情况下,CLI 将使用 https://bing.com 启动浏览会话。

运行示例(可选)

examples 文件夹包含更多有关如何使用CUA的示例。

python -m examples.weather_example

参考文件 simple_cua_loop.py 实现了 CUA 循环的基本内容。

您可以使用以下命令运行它:

python simple_cua_loop.py

四、计算机环境

CUA可以与任何能够处理CUA操作的计算机环境 协同工作:

动作示例
-----------------------------------------------------------------
click(x, y, button="left")click(24, 150)
double_click(x, y)double_click(24, 150)
scroll(x, y, scroll_x, scroll_y)scroll(24, 150, 0, -100)
type(text)type("Hello, World!")
wait(ms=1000)wait(2000)
move(x, y)move(24, 150)
keypress(keys)keypress(["CTRL", "C"])
drag(path)drag([[24, 150], [100, 200]])

这个示例应用提供了一系列 已实现的 计算机 示例,但请随意添加您自己的!

计算机选项类型描述要求
LocalPlaywrightlocal-playwrightbrowser本地浏览器窗口Playwright SDK
DockerdockerlinuxDocker 容器环境Docker 运行
Browserbasebrowserbasebrowser远程浏览器环境Browserbase API key in .env
ScrapybaraBrowserscrapybara-browserbrowser远程浏览器环境Scrapybara API key in .env
ScrapybaraUbuntuscrapybara-ubuntulinux远程 Ubuntu 桌面环境Scrapybara API 密钥在 .env 文件中

使用 CLI,您可以使用上述选项 在不同的计算机环境中 运行示例应用:

python cli.py --show --computer <computer-option>

例如,要使用 Docker 计算机环境 运行示例应用程序,您可以运行:

python cli.py --show --computer docker

Docker 设置

如果您想使用 Docker 计算机环境运行示例应用程序,您需要构建并运行一个本地 Docker 容器。

打开一个新的shell来构建和运行Docker镜像。

第一次这样做可能需要几分钟,但后续运行应该会快得多。

一旦日志停止,请继续进行下一个设置步骤。

要停止容器,请在运行下面命令的终端中按CTRL+C。

docker build -t cua-sample-app .
docker run --rm -it --name cua-sample-app -p 5900:5900 --dns=1.1.1.3 -e DISPLAY=:99 cua-sample-app

注意:我们使用 --dns=1.1.1.3 来限制可访问的网站到一个更小、更安全的集合。我们强烈建议您采取类似的安全预防措施。


警告:如果您遇到以下错误,则需要终止该容器。

docker: Error response from daemon: Conflict. The container name "/cua-sample-app" is already in use by container "e72fcb962b548e06a9dcdf6a99bc4b49642df2265440da7544330eb420b51d87"

杀掉那个容器后再次尝试。

docker rm -f cua-sample-app

主机环境设置

This repository contains example implementations of third-party hosted environments.
要使用这些,您需要通过上面的链接创建一个服务账户,并将您的API密钥添加到.env文件中。


五、函数调用

Agent 类接受 tools 中的常规函数模式 - 它将为任何调用返回一个硬编码的值。

然而,如果您传递了任何也在您的 Computer 方法中定义的 tools,除了必需的 Computer 方法外,它们将被路由到您的 Computer 以便在调用时处理。

这在截图经常无法捕获搜索栏或返回箭头的情况下很有用,因此 CUA 可能会卡住。因此,您可以提供 back()goto(url) 函数。

请参阅 examples/playwright_with_custom_functions.py 以获取示例。


风险与安全考虑

这个存储库提供了带有基本安全措施的示例实现。
我们建议您审查我们指南中概述的最佳实践,并确保您了解使用此工具涉及的风险。


2024-03-12(三)
🌱 植树节快乐 🌲

相关文章:

  • 我与DeepSeek读《大型网站技术架构》(11)- 海量分布式存储系统Doris的高可用架构设计分析
  • ima 知识库,重新定义你的「成长加速器」
  • Github 2025-03-11 Python开源项目日报Top10
  • Bash和Zsh在处理大文件时差异
  • 设计模式C++
  • ArcGIS水文水资源水环境应用实战:从入门到精通!ArcGIS水文分析及流域特征提取;湖泊水库水环境监测及评价;河道水污染预测与水环境容量计算等
  • 《黑客攻防从入门到精通:工具篇》全15章万字深度总结——从工具解析到实战攻防,构建完整网络安全知识体系
  • Java 8 Stream 面试题
  • win32汇编环境,对 WM_MOUSEMOVE 消息的理解
  • 运维新手入门——线缆的使用(Beginner‘s Guide to Operations and Maintenance - Cable Usage)
  • 七大常用智能家居协议对比
  • Spring Boot + MySQL + MyBatis:企业级应用开发实战
  • 【 现代后端架构演进:微服务设计与云原生】
  • 012-Benchmark
  • csdn码字员的第2*2^10天
  • Android Retrofit 框架配置与构建模块深入源码分析(六)
  • 微软程序控制机制WDAC
  • 自动化的多线程实现
  • Spring中的对象创建与生命周期管理
  • Gateway:网关路由与登录鉴权
  • 大英博物馆展歌川广重:他是梵高最钟爱的浮世绘名家
  • 内塔尼亚胡:以军将在未来几天“全力进入”加沙
  • 上海北外滩,未来五年将如何“长个子”“壮筋骨”?
  • 山东省市监局“你点我检”专项抽检:一批次“无抗”鸡蛋农兽药残留超标
  • 中国人民抗日战争暨世界反法西斯战争胜利80周年纪念活动标识发布
  • 做街坊们的“健康管家”,她把专科护理服务送上门