Browser-use 是一个开源的 Python 库/框架,核心目标是让 AI 像人类一样,直接操作浏览器完成网页任务。
在“需要网页交互”的 Agent 场景里,它几乎是一个必备工具。它可以让 Agent 像真人一样操作,实现在浏览器上的表单填写、信息提取等任务。
但是在本地使用 Browser-use 会需要安装多项较大体积的依赖(如 Playwright),需要安装客户端,以及多任务并行会对用户的电脑性能有一定要求。因此使用一个安全、隔离、轻量化的沙箱环境来运行浏览器客户端,成为了许多 Agent 类产品选择的实现路径。
PPIO Agent沙箱可以为 Browser-use 提供一个轻量化的云端运行环境,解决了本地部署时的依赖安装和性能瓶颈问题,帮助开发者构建安全、高并发、多任务的浏览器 AI Agent,以下为运行原理和配置教程。
Browser-use 工作原理
在使用 Browser-use 之前,我们要明确其基本原理。Brower-use 执行主要分为以下几步:
- 状态获取:捕获当前浏览器状态,包括 DOM 结构、可交互元素和页面元数据。
- 状态表示:将浏览器状态转换为结构化提示词输入大模型。
- 决策生成:大模型分析数据并生成结构化的动作计划。
- 动作执行:解析动作计划并在浏览器中执行相应操作。
- 结果反馈:执行结果和新状态反馈回大模型,进入下一轮迭代。
PPIO Agent沙箱可以通过预置浏览器环境,让Agent 能够直接调用远程的浏览器实例进行操作,既保留了 Browser-use 原有的网页交互能力,又通过资源隔离和弹性伸缩提升稳定性和并发性能。
这种云端沙箱方案特别适合需要同时运行多个网页自动化任务的 Agent 应用场景,可以让 AI 操作浏览器就像使用本地环境一样简单,无需关心底层基础设施的维护。
下方示例将详细介绍如何基于 PPIO Agent沙箱服务来运行 Browser-use 项目,该示例在本地运行 Browser-use Agent,连接远程 Agent沙箱中的浏览器来执行任务。
文档中使用了 PPIO 官方发布的 Browser-chromium 沙箱模板。如果您想基于此制作自己的模板,或者查看更完整的示例代码,可以查看以下链接。
地址:
https://github.com/ppinfralab/PPIO-collab/tree/main/examples/browser-use
PPIO Agent沙箱 × Browser-use
配置教程
#01获取 API key
(1)获取 API 密钥
打开 API 密钥管理页面,点击创建按钮,输入自定义密钥名称,生成 API 密钥。
(2)生成并保存 API 密钥
!!注意:秘钥在服务端是加密存储,请在生成时保存好秘钥;若遗失可以在控制台上删除并创建一个新的秘钥。
(3)获取【模型ID】
推荐使用的模型 ID
- moonshotai/kimi-k2-instruct
- deepseek/deepseek-r1-0528
- deepseek/deepseek-v3-0324
- qwen/qwen3-235b-a22b-fp8
其他模型ID、最大上下文及价格可参考:
https://ppio.com/pricing
#02 安装并运行 Browser-use
Browser-use项目地址:
https://github.com/browser-use/browser-use
(1) 配置环境变量
在开始使用之前,需要配置必要的环境变量:
export E2B_DOMAIN=sandbox.ppio.cn
export E2B_API_KEY=<您的 PPIO API 密钥>
export LLM_API_KEY=<您的 PPIO API 密钥>
export LLM_BASE_URL=https://api.ppinfra.com/v3/openai
export LLM_MODEL=<您选用的大语言模型>(2)安装依赖
安装所需的 Python 包:
pip install browser-use
pip install e2b-code-interpreter(3)示例代码
import asyncio
import os
import time
from browser_use import Agent, BrowserSession
from browser_use.llm import ChatOpenAI
from e2b_code_interpreter import Sandbox
async def screenshot(agent: Agent):
# 截图功能
print("开始截图...")
page = await agent.browser_session.get_current_page()
screenshot_bytes = await page.screenshot(full_page=True, type='png')
# screenshot 方法返回图像的二进制数据,将其保存为 PNG 文件
screenshots_dir = os.path.join(".", "screenshots")
os.makedirs(screenshots_dir, exist_ok=True)
screenshot_path = os.path.join(screenshots_dir, f"{time.time()}.png")
with open(screenshot_path, "wb") as f:
f.write(screenshot_bytes)
print(f"截图已保存至 {screenshot_path}")
async def main():
# 创建 E2B 沙箱实例
sandbox = Sandbox(
timeout=600, # 超时时间(秒)
template="browser-chromium", # 该模板包含 chromium 浏览器,且暴露 9223 端口用于远程连接
)
try:
# 获取沙箱的 Chrome 调试端口地址
host = sandbox.get_host(9223) # 获取沙箱 9223 端口的地址
cdp_url = f"https://{host}"
print(f"Chrome 调试协议地址: {cdp_url}")
# 创建 Browser-use 会话
browser_session = BrowserSession(cdp_url=cdp_url) # 使用 cdp 协议连接远程沙箱中的浏览器
await browser_session.start()
print("Browser-use 会话创建成功")
# 创建 AI Agent
agent = Agent(
task="去百度搜索 Browser-use 的相关信息,并总结出 3 个使用场景",
llm=ChatOpenAI(
api_key=os.getenv("LLM_API_KEY"),
base_url=os.getenv("LLM_BASE_URL"),
model=os.getenv("LLM_MODEL"),
temperature=1
),
browser_session=browser_session,
)
# 运行 Agent 任务
print("开始执行 Agent 任务...")
await agent.run(
on_step_end=screenshot, # 在每个步骤结束时调用 screenshot 截图
)
# 关闭浏览器会话
await browser_session.close()
print("任务执行完成")
finally:
# 清理沙箱资源
sandbox.kill()
print("沙箱资源已清理")
if __name__ == "__main__":
asyncio.run(main())(4)运行示例
安装依赖并设置环境变量后,即可运行示例代码。如果一切顺利,可以在终端看到像这样的输出。
可以看到 Browser-use 在使用沙箱中的浏览器执行任务。产生如下截图:
#03 结尾
PPIO Agent沙箱专为 Agent 场景设计,支持 Python、JavaScript、C++ 等主流语言,支持网页浏览、系统命令、文案管理等行为,并且提供标准化 API / SDK,无缝衔接主流的 AI Agent 框架和工具。