MultiOn 是面向开发者的网页自动化 API(Web Automation API):开发者通过 REST 接口或 Python SDK 传入一句自然语言指令(例如“打开亚马逊搜索机械键盘,返回第一件商品的价格”),MultiOn 会在云端真实浏览器中完成理解页面、点击、输入、滚动、翻页等操作,并返回执行状态、结果文本与页面截图。该工具由 Divyanshu Bhargava 创建,定位是“让任何 AI 应用获得操作网页的能力”;2024 年 12 月 Google 发布的 Chrome 浏览器智能体 Project Mariner,其底层网页操作能力由 MultiOn 提供(经双方公开确认)。与传统 Playwright/Selenium 相比,MultiOn 不需要编写 DOM 选择器与等待逻辑,站点改版不影响指令;与开源自托管方案(如 Skyvern)相比,MultiOn 是纯托管服务,免部署免运维。本篇按“速览卡 → 安装配置 → 快速上手 → 核心能力 → 生产部署 → 选型对比 → 误区与面试题”展开,目标是让读者在 30 分钟内跑通第一个真实网页任务。
掌握 MultiOn,等于获得一种“浏览器操作能力”的通用接口:在 RAG 数据采集、网页巡检、Agent 工具调用中复用同一种自然语言驱动范式,是 AI 应用工程师与 Agent 开发者的高价值技能。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 MultiOn:传统浏览器自动化在动态网页面前的维护成本
传统网页自动化依赖 Playwright/Selenium 这类编程框架:开发者需要为每个站点编写元素选择器、等待条件与异常重试逻辑。真实业务中,目标站点往往是登录墙、无限滚动、弹窗广告、A/B 改版齐备的动态页面,脚本平均维护周期以周计——站点改一版 CSS,选择器就失效;加一道风控,爬虫就要返工。对一个只需“偶尔抓取几十个页面”的团队来说,为每个站点写一套自动化脚本是明显的高成本低收益。
MultiOn 改变了交互范式:开发者不再描述“怎么点”(选择器与流程),而是描述“要什么”(自然语言目标)。云端浏览器由大模型负责视觉理解与任务规划,自动完成打开页面、定位元素、输入内容、提交表单、读取结果的全过程,最后把执行结果连同一句话总结(message)返回给调用方。指令与页面结构解耦,站点改版通常不需要修改任务描述。
与同类工具相比,MultiOn 强调“开箱即用的 Agent”:不像 Browserbase 那样只提供浏览器实例、仍需上层编排,也不像 Skyvern 那样需要自行部署维护;MultiOn 把“Agent 决策 + 浏览器执行 + 结果解析”打包成一个 API,执行过程是一个黑盒、按调用计费。
安装与环境配置:3 步就绪
步骤一:注册账号并创建 API Key。访问 [multion.ai](https://multion.ai) 注册账号,登录后在控制台的 API Keys 页面创建密钥。密钥是计费凭证,后续所有请求通过请求头或 SDK 参数携带。
步骤二:安装 Python SDK。MultiOn 官方提供 Python SDK(PyPI 包名 multion),安装命令见下方代码块。不使用 Python 的项目可直接调用 REST API,无需安装 SDK。
步骤三:配置环境变量。将 API Key 写入环境变量 MULTION_API_KEY,SDK 会自动读取;也可以在使用时显式传入 MultiOn(api_key="...")。完成后执行验证命令,能成功导入即配置就绪。
# 安装官方 Python SDKpip install multion # 配置 API Key(推荐写入环境变量,避免硬编码)export MULTION_API_KEY="你的_API_Key" # 验证:能导入 SDK 即安装成功python -c "import multion; print('MultiOn SDK OK')"
快速上手:10 分钟跑通第一个网页任务
最小可用流程的思路:先创建一个带 URL 与自然语言指令的 Agent 会话(session),MultiOn 在云端浏览器中执行指令并把结果写回会话;然后通过追加指令(update)让同一会话继续做后续动作;最后关闭会话释放云端浏览器资源。整个过程约 10 分钟,核心代码不超过 20 行。
操作步骤:
1. 安装 SDK 并配置 MULTION_API_KEY 环境变量(见上一节)。
2. 创建会话:调用 multi.sessions.create(url=..., cmd=...),传入起始页面 URL 与一句明确指令。指令越具体越好,例如“搜索 X 并返回第一项的标题和价格”,避免“随便看看”这类模糊目标。
3. 追加指令:服务端返回 session_id,用 multi.sessions.update(session_id=..., cmd=...) 在同一个会话上下文中继续操作,适合多步骤流程。
4. 关闭会话:任务结束后调用 close,避免会话占用的云端浏览器资源持续计费。
代码示例(可直接复制运行):
运行后会在终端打印会话状态与结果摘要。进阶技巧:在指令结尾追加“只返回结果,不要执行任何确认类操作”,可以让只读任务(数据抓取)更安全;对依赖登录的任务,可预先在一个会话中完成登录,再通过 session_id 复用以避免重复登录。
from multion.client import MultiOn multi = MultiOn(api_key="你的_API_Key") # 创建 Agent 会话:打开维基百科并执行首次指令session = multi.sessions.create( url="https://www.wikipedia.org", cmd="搜索 'Large language model',返回该词条第一段的纯文本内容",) # 追加指令:在同一会话中继续操作updated = multi.sessions.update( session_id=session.session_id, cmd="返回到结果列表,改为搜索 'Web automation'",)print("状态:", updated.status) # COMPLETE / IN_PROGRESS / FAILEDprint("结果:", updated.message) # 任务结束,关闭会话释放云端浏览器multi.sessions.close(session_id=session.session_id)
核心能力详解:3 大支柱
支柱一:自然语言驱动的 Browse 端点。Browse API(v1/web/browse)是 MultiOn 最基础的接口:一次调用完成“理解指令 → 浏览页面 → 返回结果”的闭环,返回 status(COMPLETE/IN_PROGRESS/FAILED)、message(结果摘要)、url(结束时的页面地址)与可选截图。它适合无状态、单步骤任务,如“查某商品价格”“读取某页面标题”。该端点只发一条指令,不保留跨调用上下文。
支柱二:有状态的 Agent 会话。Agent API(agent.api.multion.ai/v1)引入会话机制:创建时返回 session_id,后续可用 update 追加指令、用 step 单步推进任务、用 close 显式关闭。会话在云端浏览器中保持登录态与页面上下文,适合“登录 → 查询 → 导出”这类多步骤真实业务流。会话有自动超时机制,但显式关闭仍是控制成本的最佳实践。
支柱三:视觉理解与异常兜底。MultiOn 的底层执行不依赖写死的 DOM 选择器,而是结合页面截图与大模型视觉理解来定位元素,对弹窗、无限滚动、动态加载有较强的自适应能力;站点结构变化通常不需要修改任务描述。当任务无法完成(如验证码拦截、找不到目标元素)时,接口返回 FAILED 状态并附带失败原因。官方还提供 Extensions 机制,允许把自己的 API 注册为 Agent 可调用的自定义技能,扩展执行边界(具体配置见官方文档)。
生产部署与监控:从上线到运维
部署方式一:纯托管直连。MultiOn 是托管服务,生产环境无需自建浏览器集群或 GPU 基础设施。工程侧最小部署是把 API 调用封装成一个内部服务(服务端持有 API Key),对外暴露业务接口;所有对 MultiOn 的调用走这个服务,便于统一鉴权、限流与日志。上线前需确认数据合规:会话运行在 MultiOn 云端,任务内容会经过其模型服务。
部署方式二:会话编排与容错。将 session_id、指令、返回状态写入自己的数据库,支持断点续跑与审计;对 FAILED 结果设计重试策略(如修正指令后重试、更换起始 URL、降级为人工处理);用 maxSteps 等参数限制单任务步数上限,防止 Agent 在复杂页面上无限执行。对支付、下单、删除等不可逆动作,务必在指令层禁止执行,或引入人工确认环节。
可观测性:在应用侧记录每次调用的 session_id、指令文本、status、耗时与失败原因;定期统计 COMPLETE 占比与平均步数,作为任务质量基线;在 MultiOn 控制台可查看账号维度的调用记录与用量。建议对“关键业务动作是否真的发生”做结果断言(例如查询结果中是否含订单号),而不是只依赖 status 字段。
<p class="para-label">避坑清单:</p>
<ul class=“dash-list“><li>API Key 泄漏:Key 是计费凭证,务必放服务端环境变量或密钥管理服务,禁止写入前端代码或公开仓库,否则可能被他人盗刷额度。</li><li>云端浏览器≠本地浏览器:会话运行在 MultiOn 数据中心,无法访问企业内网与 localhost;涉及敏感数据的任务须先评估合规与数据驻留要求。</li><li>COMPLETE≠语义正确:状态字段只表示”Agent 认为完成”,支付、删除等高影响动作必须二次确认或人工审批,并接结构化证据后再落库。</li><li>忽略 FAILED 与超时:验证码、登录墙、元素缺失都会导致失败,生产环境必须设计重试与人工兜底,避免任务静默丢失。</li></ul>
| 维度 | MultiOn | Browserbase | Skyvern | Playwright |
|---|---|---|---|---|
| 定位 | 自然语言网页自动化托管 API | 云端浏览器基础设施 + AI 自动化 | 开源 LLM+CV 网页自动化引擎 | 开源浏览器自动化测试框架 |
| 编排范式 | 自然语言指令 → Agent 自主规划 | 代码驱动 + 托管浏览器会话 | 自然语言指令 → 多步任务规划 | 代码驱动(脚本与选择器) |
| 类型约束 | 无(视觉理解,不依赖 DOM 选择器) | 无(提供真实 Chromium 实例) | 无(视觉解析为主) | 强(依赖 DOM 定位器) |
| 学习曲线 | 低:一条指令即可运行 | 中:需编写编排代码 | 中:需部署与调参 | 中高:需写脚本与调试选择器 |
| 生态集成 | Python SDK、REST API | JS/Python SDK、Playwright 协议兼容 | Python SDK、REST API、Docker | 官方多语言(Python/JS/Java/.NET) |
| 生产部署 | 纯托管,零运维 | 托管服务 + 实例管理 API | 自托管(Docker)或托管版 | 自建集群或接入云执行器 |
| License | 商业 SaaS(SDK 免费) | 商业 SaaS(部分组件开源) | AGPL-3.0(开源) | Apache-2.0 |
| 适合谁 | 快速上线网页 Agent 的产品/应用团队 | 需要精细控制浏览器实例的工程团队 | 要求开源合规、愿自维护的团队 | 已有成熟测试/爬虫代码的团队 |
选型建议:想两周内让 Agent 获得“操作真实网页”能力、且不愿维护浏览器集群,选 MultiOn;需要控制代理、地区、浏览器指纹等执行细节,或已有 Playwright 技术栈,选 Browserbase;数据不能出内网、需要开源合规与完全自控,选 Skyvern;已有大量确定性自动化脚本,继续留在 Playwright 是最低成本的选择。
版本迭代
MultiOn 作为托管 API 服务,演进以“能力/端点”为单位而非用户可见的版本号;主线是从 2023 年的单次 Browse 指令,演进到 2024 年的有状态 Agent 会话与自定义扩展,再到 2024 年底成为 Google Project Mariner 的底层网页操作提供方(截至训练数据,其后可能已有更新版本)。
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| Browse API(v1) | 2023 年 | 推出 `api.multion.ai/v1/web/browse` 端点 | 首次支持自然语言单轮网页操作,返回状态、结果与截图 |
| Agent API(v1) | 2024 年 | 新增 `agent.api.multion.ai/v1` 会话端点 | 引入 session_id 与 update/step/close,支持多步骤有状态任务 |
| Extensions 扩展 | 2024 年 | 支持注册自定义技能 | 可将自有 API 注册为 Agent 可调用动作,突破内置能力边界 |
| Project Mariner 合作 | 2024 年 12 月 | 成为 Google Chrome 智能体底层提供方 | 验证其浏览器操作能力可支撑端侧 Agent 产品 |
产品方向从“单次网页操作”走向“可复用、可扩展的会话型 Agent”,并通过与 Google 的合作证明其执行引擎的通用性。MultiOn 未公布官方基准评测分数,选型时建议在自有任务集(30-50 条真实指令)上统计完成率与耗时,并关注官方文档中端点与计费方式的实时变化。
AI 应用场景
场景一:RAG 语料与行业数据的动态网页采集
阶段:数据采集 / RAG 管道构建
解决的问题:传统爬虫对登录墙、无限滚动、动态渲染站点维护成本极高,选择器随站点改版频繁失效;MultiOn 用自然语言指令描述“要什么数据”,由云端 Agent 完成页面交互与抽取,站点结构变化不敏感。任务完成后解析 message 或截图即可入库存。
具体案例:某知识库团队需要每日抓取行业资讯站 Top10 文章标题与正文。原方案(Playwright 编写选择器+处理分页)单站点集成耗时 2-3 天且每周需维护;改用 MultiOn 后,每个站点封装为一个带 URL 与指令的会话,集成耗时降至半天级,维护工作基本消失,采集结果以结构化文本入库,供向量化后进入 RAG 检索链路。
场景二:Agent 产品中的“网页操作执行器”
阶段:Agent 编排
解决的问题:业务 Agent 常需要“去网页上完成一个动作”,但自行集成浏览器内核、维护登录态与反爬成本高。MultiOn 可作为工具(Tool)被大模型的 Function Calling 机制调用:模型决策“需要查网页”时,拼接指令并调用 MultiOn,返回结果再汇入对话。
具体案例:一个企业客服机器人需要查询订单状态。流程为:用户提问 → 大模型判断需查询订单系统 → 调用 MultiOn 会话登录订单后台并检索订单号 → 将返回文本回填给用户。订单后台无开放 API 时,这是复用现有网页系统的低成本路径;会话复用使同一账号登录态保持,单次查询由人工 2-3 分钟降至秒级返回。
场景三:网页业务系统的定时巡检与报表
阶段:任务自动化与监控
解决的问题:运营后台、数据看板等内部系统缺乏 API,人工每日登录导出报表耗时且易遗漏。MultiOn 会话可编排为定时任务:登录 → 打开报表页 → 读取数据 → 返回结构化结果,由下游管道写入数仓或触发告警。
具体案例:某运营团队用 MultiOn 每日定时登录广告投放后台,提取当日消耗与转化数据并写入数据表。相比每天人工操作 15 分钟,定时任务实现免人工值守,异常时(登录失败、数据缺失)通过 FAILED 状态触发告警通知运维。
常见误区
误区听说 MultiOn 一句话就能抓网页,我打算把公司 500 个爬虫任务全部切换到 MultiOn,彻底不写代码了。
正解MultiOn 擅长“路径不固定、意图明确”的长尾任务,但不适合规模化抓取:单次任务包含多次模型推理,耗时秒级到分钟级且按调用计费;对高并发、强反爬、超大页面量的场景,传统爬虫的代理池、限速与指纹管理成本远低于 Agent API。正确做法是双轨并行:稳定批量的数据走专用爬虫,长尾动态站点交给 MultiOn。
为何常见:官方演示单任务的“一句话完成”效果惊艳,容易让人高估其在规模化与成本维度上的表现。
误区让 MultiOn 登录我们公司内网系统抓数据,它应该在同一个网络里,直接就能访问。
正解MultiOn 会话运行在其云端数据中心,无法访问企业内网、localhost 或私有网络资源;对公网登录站点,账号密码需要交给云端执行,还可能触发站点风控(异地登录、验证码)。涉及敏感数据时,还要评估数据驻留与合规要求。内网自动化应评估自托管方案(如 Skyvern)或混合架构。
为何常见:“浏览器自动化 API”的抽象让用户默认它和本地浏览器等价,忽略了执行环境在网络位置上的根本差异。
误区接口返回 COMPLETE,说明任务成功了,直接把结果写入数据库或者继续下一步就行。
正解COMPLETE 只表示 Agent 认为任务完成,不保证语义正确——它可能点错了商品、读错了价格。对高影响动作(下单、支付、删除、发布),应在指令中禁止 Agent 直接执行,只让它返回结构化证据(如商品名+价格+链接),由业务代码校验后再走人工确认或自动放行。
为何常见:状态字段只有“完成/进行中/失败”三态,给人确定性的错觉,而 Agent 本质是概率性执行系统。
误区MultiOn 的 API Key 就是一个配置项,写在前端代码或者提交到 GitHub 也没关系,最多被人拿去浏览网页。
正解API Key 是计费凭证,泄漏意味着他人可盗刷你的调用额度,甚至用你的账号执行付费任务。生产环境必须把 Key 放在服务端环境变量或密钥管理服务(如 AWS Secrets Manager),前端只允许通过自己的后端代理转发调用,并在控制台开启用量告警。
为何常见:很多 SaaS 的 API Key 使用习惯延续自“配置即可”的思维,忽略了它是可消费额度的凭证而非普通配置。
面试题
Q1. MultiOn 的核心产品定位是什么?
- A.本地浏览器自动化测试框架
- B.自然语言驱动的网页自动化托管 API← 正确答案
- C.分布式数据库可视化平台
- D.大语言模型微调训练平台
答案:B。MultiOn 是托管型网页自动化 API,接受自然语言指令并驱动云端真实浏览器执行操作。A 是 Playwright/Selenium 的定位;C、D 与网页自动化无关。答题关键:记住“自然语言 + 云端浏览器 + API”三个要素。
Q2. 安装 MultiOn 官方 Python SDK 的命令是?
- A.pip install playwright
- B.pip install browserbase
- C.pip install multion← 正确答案
- D.pip install selenium
答案:C。PyPI 包名为 multion,官方 SDK 通过 pip install multion 安装。playwright 与 selenium 是传统浏览器自动化库,browserbase 是另一个云端浏览器服务。若用 REST 调用则无需安装 SDK,直接发 HTTP 请求即可。
Q3. MultiOn Browse 接口返回的 status 字段中,表示“任务正常完成”的值是?
- A.SUCCESS
- B.COMPLETE← 正确答案
- C.DONE
- D.FINISHED
答案:B。MultiOn 的状态枚举为 COMPLETE(完成)、IN_PROGRESS(进行中)、FAILED(失败),没有 SUCCESS/DONE/FINISHED 这些值。注意 COMPLETE 只代表 Agent 认为任务完成,不代表结果语义正确,生产环境仍需结果断言。
Q4. 关于 MultiOn 的 Agent 会话(session),下列说法正确的是?
- A.一个会话只能执行一条指令,用完即销毁
- B.会话有状态,可用 session_id 跨步骤追加指令并保持上下文← 正确答案
- C.会话运行在开发者本地浏览器中
- D.会话创建后无法主动关闭
答案:B。Agent API 通过 session_id 维护有状态会话,可用 update 追加指令、step 单步推进、close 主动关闭。会话运行在云端而非本地。主动 close 能及时释放云端浏览器资源,是控制成本与并发的关键实践。
Q5. 下列哪类目标页面是 MultiOn 云端会话无法访问的?
- A.需要注册登录的公网 SaaS
- B.使用 JavaScript 动态渲染的公开网站
- C.企业内网或本机 localhost 服务← 正确答案
- D.带无限滚动列表的电商站点
答案:C。会话运行在 MultiOn 数据中心,网络位置不在企业内网,无法访问内网与 localhost。动态渲染、登录墙、无限滚动都属于云端可处理范围(可能触发风控)。内网自动化需评估自托管方案。
Q6. MultiOn 官方文档中强调的典型用法包括哪些?
- A.通过自然语言描述目标,由 Agent 自主完成网页操作← 正确答案
- B.用 Python SDK 或 REST API 集成到应用← 正确答案
- C.浏览任务时可附带起始 URL 与是否返回截图← 正确答案
- D.必须自行编写每个站点的 CSS 选择器
答案:ABC。MultiOn 的核心用法是自然语言指令 + API/SDK 集成,请求可携带 url、cmd、includeScreenshot 等参数。D 是传统 Playwright 的用法,MultiOn 恰恰通过视觉理解摆脱了对 CSS 选择器的依赖。
Q7. 传统 Playwright 与 MultiOn 的本质区别是什么?
- A.Playwright 只支持 JavaScript,MultiOn 支持多语言
- B.MultiOn 用自然语言描述目标,执行不依赖 DOM 选择器← 正确答案
- C.MultiOn 必须自建浏览器集群才能使用
- D.Playwright 无法执行任何浏览器自动化
答案:B。两者本质区别在编排范式:Playwright 用代码精确控制每个点击与等待,依赖稳定的选择器;MultiOn 用自然语言描述“要什么”,由模型规划路径。A 错误(Playwright 官方支持 Python/JS/Java/.NET);C 错误(MultiOn 是托管服务);D 明显错误。
Q8. 生产环境接入 MultiOn 时,正确的工程实践包括哪些?
- A.API Key 存储于服务端环境变量或密钥管理服务← 正确答案
- B.记录 session_id 与指令日志,便于排查与审计← 正确答案
- C.对 FAILED 状态设计重试与人工兜底策略← 正确答案
- D.将多步任务全部写入一个无限执行的会话,不做步数限制
答案:ABC。Key 管理、日志审计、失败兜底是生产接入的必备项。D 错误:应通过 maxSteps 等参数限制单任务步数上限,防止 Agent 在复杂页面上无限执行导致成本失控。对支付等不可逆动作还应加人工确认。
Q9. 关于 MultiOn 的能力边界,下列说法正确的是?
- A.站点改版通常不需要修改自然语言任务描述← 正确答案
- B.COMPLETE 状态不能保证操作结果的语义正确性← 正确答案
- C.高并发大规模抓取的成本可能高于传统爬虫方案← 正确答案
- D.可以完全替代代理池、验证码处理等反爬手段
答案:ABC。视觉理解使指令与页面结构解耦(A 对);状态字段不等于语义正确(B 对);Agent 每次执行含多次模型推理,单价高于普通请求(C 对)。D 错误:验证码、强反爬场景仍可能失败,需要兜底设计。
Q10. 某 Agent 产品需要让 MultiOn 完成“登录订单后台 → 查询订单 → 返回状态”,最符合工程化的设计是?
- A.每次调用都创建新会话并现场注册新账号
- B.首次登录后复用 session_id,查询指令与结果做结构化校验← 正确答案
- C.把账号密码明文写在请求指令中,交给任意调用方
- D.禁止 MultiOn 访问任何需要登录的网站
答案:B。正确做法是让云端会话保持登录态,复用 session_id 完成后续查询,并对返回结果做结构化校验后再回复用户。A 会频繁触发风控且成本极高;C 泄露凭证;D 过度限制,放弃了该场景的自动化价值。还需注意账号合规与数据驻留评估。
参考来源
- webpageMultiOn 官网产品入口、注册与 API Key 控制台