ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

别再重复劳动!browser-use 浏览器自动化实战:把 Agent 的 Base URL 改到 TaoToken

别再重复劳动!browser-use 浏览器自动化实战:把 Agent 的 Base URL 改到 TaoToken 1. browser-use 浏览器自动化到底解决什么问题browser-use 是一个把大模型决策能力和 Playwright 浏览器操作能力拼在一起的框架。你给它一句自然语言任务比如「打开某页面把正文和图片存到本地」它会自己拆步骤、找元素、点击、输入、滚动、抓取最后把结果交回来。适合谁适合已经会用 Python、想让 Agent 帮忙做重复网页操作的人比如批量填表、批量取数、批量截图存档。它不能做什么它不能保证 100% 一次成功页面结构一变、元素没有明显语义模型就可能卡住所以结果需要人工复核。我这次的目标很具体让 browser-use 里的 Agent 不再直连某一家模型厂商而是统一走 TaoToken 通道。这样做的好处是模型切换、Key 管理、成本观察都在一个地方完成代码里只改 Base URL、Key、Model ID 三个值。下面我会给出可复制的配置片段、Playwright 启动参数并用一次表单填写任务验证整条调用链路是否真的生效。先说清楚链路browser-use 负责「操作浏览器」它内部通过 LangChain 的 Chat 模型对象去「问模型下一步做什么」。所以我们要改的不是浏览器而是那个 Chat 模型对象的base_url和api_key。只要这两个值指向 TaoTokenAgent 的每一次决策请求都会走统一通道。理解这一点后面的配置就不会迷路。2. TaoToken 前置准备与 browser-use 环境搭建TaoToken 在这里扮演的是「统一模型入口」的角色。你不需要在代码里散落多家厂商的 Key只需要一个 Base URL 和一个 Key再选一个 Model ID。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。注意 API 地址后面不加任何查询参数代码里填的就是这个纯地址。第一步去控制台创建 Key。打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 登录后进入 API Keys 页面新建一个 Key 并复制保存。这个 Key 只显示一次丢了只能重建。如果你还没想好选哪个模型可以先去模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 试一句确认通道可用再写代码。第二步准备 Python 环境。建议用 3.11 或 3.12太老的版本在装 Playwright 时容易出问题。创建虚拟环境并安装依赖python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate pip install browser-use playwright python-dotenv langchain-openai playwright install chromium这里我用langchain-openai而不是某家厂商的专用包因为 TaoToken 的接口是 OpenAI 兼容格式用ChatOpenAI就能接改base_url即可。这样以后换模型只改一个字符串不用换依赖。第三步把 Key 写进.env不要硬编码进代码TAOTOKEN_API_KEYsk-你的Key TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_MODELgpt-4o-miniTAOTOKEN_MODEL填你在模型对话页面确认可用的 Model ID。不同模型对页面理解能力差别很大表单填写这种任务建议选指令跟随强的模型否则它会在「找输入框」这一步反复试错。环境搭好后先别急着跑完整任务下一节先写一个最小配置验证连通性。3. 可复制的 Base URL 与 Key 配置片段这一节是全文最关键的部分配置写错后面全白搭。browser-use 的 Agent 接收一个llm参数我们传进去的就是配好base_url的 Chat 模型对象。先看最小可运行配置文件名agent_taotoken.pyimport asyncio import os from dotenv import load_dotenv from browser_use import Agent from langchain_openai import ChatOpenAI load_dotenv() def build_llm(): return ChatOpenAI( base_urlos.getenv(TAOTOKEN_BASE_URL), # https://taotoken.net/api api_keyos.getenv(TAOTOKEN_API_KEY), modelos.getenv(TAOTOKEN_MODEL), temperature0.0, ) async def main(): agent Agent( task打开 https://example.com 找到页面上的搜索框输入 browser-use 并回车最后输出结果页标题, llmbuild_llm(), use_visionFalse, max_failures2, max_actions_per_step1, ) result await agent.run() print(Task Result:, result) if __name__ __main__: asyncio.run(main())三个值必须成对出现Base URL 是https://taotoken.net/apiKey 是你在控制台建的那串Model ID 是模型对话里验证过的名字。如果你用 Claude Code 或 Cline 这类工具配置思路一样只是写在 JSON 或 TOML 里。比如 Cline 的 MCP 或模型配置片段{ provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: sk-你的Key, modelId: gpt-4o-mini }Codex 的auth.json同理把base_url指向 TaoTokenapi_key填 Keymodel填 Model ID。这三件套缺一不可只填 Base URL 不填 Model ID请求会报模型不存在。Playwright 启动参数方面browser-use 默认会拉起 Chromium如果你在服务器上跑建议加无头参数from browser_use.browser.browser import Browser, BrowserConfig browser Browser(configBrowserConfig(headlessTrue)) agent Agent(task..., llmbuild_llm(), browserbrowser)无头模式下看不到界面调试时先设headlessFalse确认流程通了再改回True。配置写完后先跑一个只打开页面的任务确认没有 401 或连接错误再上复杂任务。4. 用表单填写任务验证调用链路现在用一个真实表单填写任务验证整条链路。任务描述要具体模型才知道每一步做什么。假设目标是打开一个公开的测试表单页填写姓名、邮箱、留言并提交。任务字符串这样写task ( 1. 打开 https://httpbin.org/forms/post 2. 在 Customer name 输入框填入 TaoToken Test 3. 在 Telephone 输入框填入 13800000000 4. 在 E-mail 输入框填入 testexample.com 5. 点击 Submit order 按钮 6. 输出提交后页面出现的文本内容 )完整运行代码在上一节基础上替换task即可。运行后你会看到控制台打印每一步动作比如click element、input text最后输出结果。判断链路是否生效看两个信号一是控制台没有出现401或Connection error二是 Agent 能连续做出多步决策。如果只打开页面就停住说明模型请求没通如果能操作但填错位置说明模型通了但页面理解不准。实测下来表单填写这类任务对模型指令跟随能力要求高。temperature0.0能减少随机性max_actions_per_step1让模型一次只做一个动作便于观察和排错。如果任务跑一半失败把max_failures调到 3 再试给模型重试机会。成功后result里会包含最终提取内容你可以把它写进文件或数据库。这一步验证通过说明 Base URL、Key、Model ID 三件套全部正确后面换任何任务都只是改task字符串。5. 常见报错排查对照表跑不通时别慌大部分问题集中在几个固定报错上。下面按真实报错对照排查。401 Unauthorized或invalid api keyKey 错了或没加载。检查.env里TAOTOKEN_API_KEY是否有多余空格load_dotenv()是否在读取前调用。如果 Key 是从控制台复制的确认没有把前后引号也复制进去。local proxy failed或Connection refused网络层问题。确认TAOTOKEN_BASE_URL是https://taotoken.net/api没有多写路径也没有加查询参数。如果你本地有网络工具干扰先关掉再试。reading choices或KeyError: choices返回体不是标准 OpenAI 格式通常是 Base URL 写错请求打到了网页而不是 API。核对地址是否以/api结尾。OAuth相关报错多见于 Claude Code 或 Codex 这类工具说明它还在走默认登录态。需要在配置里显式指定base_url和api_key覆盖默认认证方式。Model not foundModel ID 写错。去模型对话页面确认可用模型名注意大小写和连字符。Timeout任务太复杂或页面加载慢。把max_actions_per_step设为 1给每步更多时间或先简化任务只做一步。排查顺序建议先单独用curl测 Base URL 和 Key 是否通再跑最小 Agent 任务最后上完整任务。这样能把「通道问题」和「页面理解问题」分开省很多时间。6. 把通道固定下来让重复劳动真正消失配置一次、到处复用才是 browser-use 走 TaoToken 的价值。你可以把build_llm()抽成一个公共模块所有 Agent 脚本都 import 它Key 和 Base URL 只维护一份。批量任务时把任务列表写成循环每个任务独立跑失败的重试。长期做编码或 Agent 项目可以了解 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 把模型调用统一管理。需要查接入细节时接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite API Keys 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。Claude Code 相关接入参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 。最后给一个实用技巧把每次任务的task、耗时、是否成功记进一个 CSV跑一周你就能看出哪类页面模型稳、哪类页面需要改 prompt。browser-use 不是银弹但把通道固定下来之后你至少不用每次换模型都重写一遍配置。
返回列表