由 OpenAI 提供支持的计算机使用 AI Agent:Surf
安爸
发布于
项目简介
一个 Next.js 应用程序,允许 AI 与虚拟桌面环境交互。该项目将 E2B 的桌面沙盒与 OpenAI 的 API 集成,创建一个可以通过自然语言指令在虚拟计算机上执行任务的 AI 代理。
E2B 是一个开源的云隔离虚拟计算机,专为 AI 用例设计。
计算机使用应用提供了一个网页界面,用户可以:
- 启动虚拟桌面沙盒环境
- 向 AI 代理发送自然语言指令
- 观看 AI 代理在虚拟桌面上执行操作
- 通过聊天界面与 AI 互动
应用程序使用服务器发送事件(SSE)实时流式传输 AI 响应和动作,提供无缝体验。
工作原理
架构
该应用程序由几个关键组件组成:
- 前端 UI(Next.js):提供具有虚拟桌面视图和聊天界面的用户界面
- E2B 桌面沙盒:创建和管理虚拟桌面环境
- OpenAI 计算机使用:处理用户指令并为 AI 代理生成动作
- 流式 API:处理前端和后端之间的实时通信
核心流程
用户启动一个新的沙盒实例
- E2B 创建虚拟桌面并提供流式 URL
- 用户通过聊天界面发送指令
- 后端使用 OpenAI 的 API 处理指令
- 人工智能生成在虚拟桌面上执行的操作(点击、输入等)
- 操作在沙盒中执行,并将结果流式传输回前端
- 用户继续提供指令时,过程会重复
前置条件
开始之前,您需要:
- Node.js(版本在 package.json 中指定)
- npm(与 Node.js 一同提供)
- E2B API 密钥
- OpenAI API 密钥
设置说明
- 克隆仓库
git clone https://github.com/e2b-dev/surf cd surf
- 安装依赖
npm install
- 设置环境变量
根据提供的 .env.example 在根目录下创建一个 .env.local 文件:
E2B_API_KEY=your_e2b_api_key OPENAI_API_KEY=your_openai_api_key
- 启动开发服务器
npm run dev
- 打开应用程序
在浏览器中导航到 http://localhost:3000
使用说明
启动沙盒实例
- 点击“启动新沙盒”按钮以初始化虚拟桌面环境
- 等待沙盒启动(这可能需要几秒钟)
- 发送指令
- 输入您的指令到聊天输入框中(例如:“打开 Firefox 并前往 google.com”)
- 按下回车键或点击发送按钮
- 如果有可用,您还可以选择示例提示
- 观看 AI 操作
- AI 将处理您的指令并在虚拟桌面上执行操作
- 您可以在聊天界面中看到 AI 的推理和行动
- 虚拟桌面将在执行操作时实时更新
- 管理沙盒
- 计时器显示您的沙盒实例剩余时间
- 您可以随时通过点击“停止”按钮来停止沙盒
- 沙盒即将到期时,将自动延长其时间
功能
- 虚拟桌面环境:在沙盒中运行基于 Linux 的桌面
- 人工智能交互:使用 OpenAI 的 API 理解并执行用户指令
- 实时流式传输:显示 AI 动作和响应的发生过程
- 聊天界面:提供与 AI 交互的对话式界面
- 示例提示:提供预定义的指令以帮助用户开始
- 暗色/亮色模式:支持暗色和亮色主题
技术细节
依赖项
应用程序使用多个关键依赖项:
- Next.js:React 前端框架
- @e2b/desktop:用于创建和管理桌面沙盒环境的 SDK
- OpenAI:用于与 OpenAI API 交互的 SDK
- Tailwind CSS:用于样式的实用型 CSS 框架
- Framer Motion:动画库
查看 package.json 获取完整的依赖列表。
API 端点
- /api/chat: 处理聊天消息,流式传输 AI 响应和动作
服务器操作
- 创建沙盒实例:创建一个新的沙盒实例
- 增加超时时间:扩展沙箱超时时间
- 停止沙箱操作:停止正在运行的沙箱实例
故障排除
沙箱无法启动:请检查您的 E2B API 密钥是否在 `.env.local` 中正确- AI 无响应:请检查您的 OpenAI API 密钥是否有效且具有访问所需模型的权限
- 操作不工作:确保沙盒正在运行,并且 AI 有适当的指令
项目链接
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)
扫描二维码,在手机上阅读