openaicuasampleapp_3">一、关于 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 。 |
Agent | agent/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
四、计算机环境
动作 | 示例 |
---|---|
---------------------------------- | ------------------------------- |
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]]) |
这个示例应用提供了一系列 已实现的 计算机
示例,但请随意添加您自己的!
计算机 | 选项 | 类型 | 描述 | 要求 |
---|---|---|---|---|
LocalPlaywright | local-playwright | browser | 本地浏览器窗口 | Playwright SDK |
Docker | docker | linux | Docker 容器环境 | Docker 运行 |
Browserbase | browserbase | browser | 远程浏览器环境 | Browserbase API key in .env |
ScrapybaraBrowser | scrapybara-browser | browser | 远程浏览器环境 | Scrapybara API key in .env |
ScrapybaraUbuntu | scrapybara-ubuntu | linux | 远程 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(三)
🌱 植树节快乐 🌲