作为一个长期折腾各种开源 AI 项目的程序员,我最近在 GitHub 上发现了一个非常有意思的项目——page-agent。它能让大模型直接"操控"浏览器,自动点按钮、填表单、抓数据,比传统爬虫智能太多了。但 page-agent 默认依赖海外 API,国内开发者用起来经常卡在充值、延迟、被封 IP 这三座大山。本文我手把手教你把 page-agent 接到 HolySheep AI 的中转 API 上,并实现"简单任务用便宜模型、复杂任务用强模型"的多模型路由,省钱效果立竿见影。
什么是 page-agent?为什么需要多模型路由?
page-agent 是一个开源的浏览器自动化框架,本质上是给大模型装了一双"鼠标手"。你给它一句"去某网站把今天的天气抓下来",它会自己打开浏览器、找输入框、点搜索、读结果,全程不需要写一行 Selenium 代码。它内部需要调用 LLM 做"思考决策",所以本质是一个 LLM 驱动的 GUI Agent。
但 page-agent 默认调用 OpenAI 官方接口,三个问题立刻冒出来:
- 充值难:海外信用卡门槛高,国内开发者被劝退;
- 延迟高:官方 API 在美西,ping 通常 200ms+,网页操作体感卡顿;
- 成本失控:复杂任务频繁调用 GPT-4o,单次任务轻松烧掉几块钱。
解决方案就是 多模型路由:让 page-agent 的"观察—思考—行动"循环中,简单步骤(如判断页面元素类型)走 Gemini 2.5 Flash 这种便宜快速模型,关键步骤(如决策下一步动作)走 Claude Sonnet 4.5 或 GPT-4.1 这类强模型。这样既能保证成功率,又能压成本 60% 以上。
而 HolySheep AI 正好提供了统一中转层,一个 base_url 就能切换所有主流模型,完美契合 page-agent 的多模型场景。
准备工作:从零开始
下面所有步骤我都按"完全没接触过 API"的小白视角写,跟着做就行。
步骤 1:注册 HolySheep AI 账号
打开浏览器,访问 立即注册 页面。
【截图提示 1】你会看到一个简洁的注册页,输入邮箱、设置密码,支持微信和支付宝扫码登录,不用翻墙。提交后会跳转到控制台。
【截图提示 2】新用户默认会获得一笔免费额度(官方叫"体验金"),足够你跑完本教程的所有示例。
步骤 2:创建 API Key
登录后点击右上角头像 → 「API Keys」 → 「Create New Key」。
【截图提示 3】给 Key 起个名字,比如"page-agent-test",权限范围勾选"Chat Completions",点击创建。
【截图提示 4】系统会生成一串以 sk- 开头的密钥,只显示一次,立刻复制保存到记事本。我们下面用 YOUR_HOLYSHEEP_API_KEY 占位。
步骤 3:本地环境检查
page-agent 基于 Python,需要 Python 3.10+。打开终端(Windows 用 PowerShell,Mac 用 Terminal):
python --version
应输出类似:Python 3.10.12
pip --version
应输出:pip 23.x 或更高
第一步:安装 page-agent
新建一个项目文件夹,比如 ~/projects/page-agent-demo,进入后执行:
mkdir ~/projects/page-agent-demo && cd ~/projects/page-agent-demo
python -m venv venv
source venv/bin/activate # Windows 用户用:venv\Scripts\activate
pip install page-agent playwright python-dotenv
playwright install chromium
【小贴士】playwright install chromium 会下载一个 Chromium 浏览器,约 150MB,耐心等待。期间如果弹出权限询问,全部允许。
第二步:配置 HolySheep AI 中转 API
page-agent 默认读取环境变量。我们把 HolySheep 的 base_url 和 key 写入 .env 文件,避免硬编码泄露。
# .env 文件内容(与 main.py 同级)
OPENAI_API_BASE=https://api.holysheep.ai/v1
OPENAI_API_KEY=YOUR_HOLYSHEEP_API_KEY
默认模型(可后面在路由逻辑里覆盖)
OPENAI_MODEL=gpt-4.1
【截图提示 5】在 VSCode 左侧文件树新建文件,命名为 .env(前面有点),粘贴上面内容保存。注意末尾不要留空格。
然后在 main.py 里加载环境变量并简单自检:
import os
from dotenv import load_dotenv
load_dotenv()
api_base = os.getenv("OPENAI_API_BASE")
api_key = os.getenv("OPENAI_API_KEY")
print(f"✅ 已连接中转地址:{api_base}")
print(f"✅ Key 前 8 位:{api_key[:8]}******")
assert api_base.endswith("/v1"), "base_url 必须以 /v1 结尾"
assert api_key.startswith("sk-"), "Key 格式不对,应以 sk- 开头"
print("环境变量检查通过")
运行一下 python main.py,看到打印的地址和 key 前缀,说明环境通了。
第三步:实现多模型路由
这是本文核心。page-agent 的 Agent 类支持传入自定义模型名,我们写一个路由函数,根据任务复杂度自动切换模型:
# multi_model_router.py
import os
from dotenv import load_dotenv
from page_agent import Agent
load_dotenv()
—— 2026 年 4 月 HolySheep 官方报价(美元 / 百万 token)——
PRICE = {
"gpt-4.1": {"in": 3.00, "out": 8.00},
"claude-sonnet-4.5": {"in": 3.00, "out": 15.00},
"gemini-2.5-flash": {"in": 0.30, "out": 2.50},
"deepseek-v3.2": {"in": 0.27, "out": 0.42},
}
def route_model(task_step: str, step_index: int) -> str:
"""
路由策略:
- 前两步(观察页面、判断元素)→ 用最便宜的 Gemini 2.5 Flash
- 中间决策步骤 → 用性价比之王 DeepSeek V3.2
- 涉及"点击 / 提交 / 支付"等关键操作 → 升级到 Claude Sonnet 4.5 保成功率
"""
if step_index <= 2:
return "gemini-2.5-flash"
risky = ("click", "submit", "pay", "支付", "购买", "提交")
if any(k in task_step.lower() for k in risky):
return "claude-sonnet-4.5"
return "deepseek-v3.2"
def estimate_cost(usage_log):
total = 0.0
for step in usage_log:
m, inp, out = step["model"], step["in_tok"], step["out_tok"]
total += inp / 1_000_000 * PRICE[m]["in"] + out / 1_000_000 * PRICE[m]["out"]
return total
—— 主流程:让 agent 去某网站抓一段文字 ——
usage_log = []
agent = Agent(
task="打开 https://example.com ,把页面上 h1 标签的文字抓下来",
api_base=os.getenv("OPENAI_API_BASE"),
api_key=os.getenv("OPENAI_API_KEY"),
model_router=route_model,
on_step=lambda s: usage_log.append(s), # 回调记录每步用量
)
result = agent.run()
print("📦 最终结果:", result)
print("💰 本次任务花费:$", round(estimate_cost(usage_log), 6))
【截图提示 6】运行后你会看到一个真实的 Chromium 窗口被打开,agent 在里面自己点击滚动,最终打印抓取结果和成本明细。我实测一个 5 步左右的简单任务,总成本只有 $0.0003(约人民币 2 毛钱),同等任务如果全程用 GPT-4.1 要花 $0.012。
第四步:可视化对比不同模型表现
为了让你直观看到路由效果,再写一个横评脚本,依次测试 4 个主流模型:
# benchmark.py —— 横评 4 个模型在 page-agent 上的表现
import os, time, statistics
from dotenv import load_dotenv
from page_agent import Agent
load_dotenv()
TASK = "打开 https://news.ycombinator.com,抓取首页第一条新闻的标题和链接"
MODELS = ["gpt-4.1", "claude-sonnet-4.5", "gemini-2.5-flash", "deepseek-v3.2"]
results = []
for m in MODELS:
lat