配了三年 AI 功能,每次接进来都要先找后端——今天这件事被 WebLLM 用三行 JavaScript 彻底原生化了
你以为 AI 功能一定要调用云端 API、发请求、等响应、数据还要经过服务器?这件事在浏览器里已经可以彻底变了。
WebLLM 是一个开源 JavaScript 库(Apache 2.0,MLC AI 出品,GitHub 18.5K 星),它能在浏览器里直接运行 LLM 推理——Llama、Mistral、Phi、Gemma、Qwen 都支持,推理过程完全在用户的设备上跑,数据不离开浏览器。
三行代码跑起来
import { CreateMLCEngine } from "@mlc-ai/web-llm";
const engine = await CreateMLCEngine("Llama-3.2-1B-Instruct-q4f16_1-MLC");
const reply = await engine.chat.completions.create({ messages: [...] });
注意看第二行事——chat.completions.create(),接口和 OpenAI 完全一样。现有的 OpenAI SDK 代码,改一行 base URL,就能把推理跑在浏览器里。
这件事为什么现在变了
WebLLM 存在有几年了,但之前 WebGPU 只是 Chrome 独享。2025 年中 Firefox 141 默认打开 WebGPU,Safari 26 覆盖 macOS/iOS/iPadOS,加上 Chrome 和 Edge,WebGPU 现在覆盖约 80% 的全球用户。这意味着”浏览器能不能跑 WebGPU”这个门槛已经过了。
WebLLM 靠 Apache TVM 的机器学习编译链,把模型编译成 WebGPU 着色器,绕过浏览器没有 cuBLAS 的限制。官方 benchmark 声称保留 80% 原生性能;实测中 quantized 模型在普通笔记本上跑到 20-60 tokens/秒,足够交互式聊天。
模型权重首次加载后缓存在 IndexedDB,后续访问秒级启动。支持 Web Worker 部署,主线程完全不卡。Chrome 扩展场景下还能用 Service Worker 做后台推理——意味着浏览器扩展本身就能成为 AI agent 的运行时。
三个必须知道的生产限制
第一,模型大小有上限。 WebGPU 受浏览器沙箱内存限制,4-bit 量化的 8B 模型是实际天花板,实测 3B-8B 模型范围可行。再大的模型在浏览器里跑不动,这不是框架问题,是 GPU 内存上限问题。
第二,首次加载要处理。 8B 模型权重 2-5GB,首次访问用户要等下载,必须有进度 UI。之后的访问走缓存,不花流量。
第三,Function Calling 还在 WIP。 JSON mode 和 streaming 已经支持,但 function calling 标记为 work-in-progress,生产场景有依赖的要自己评估。
一个判断标准:你是否真的需要服务器
如果你做的是纯本地处理:隐私敏感数据、健康记录、企业内部文档——浏览器端推理的成本结构和云端完全不同,没有 API 账单,没有服务器运维,没有数据出境合规问题。这类场景 WebLLM 是最优解。
如果你需要的是最强模型:Llama-3.2-1B 到 Qwen-2.5-7B 是实际能塞进浏览器的上限,且 quantized 后精度有损失。复杂推理任务、代码生成质量要求高的,仍需要云端大模型。
落地三步走:
npm install @mlc-ai/web-llm,选一个 pre-compiled 模型(Llama-3.2-1B/Instruct 或 Phi-3.5-mini 是入门门槛最低的选择)- 用 Web Worker 初始化 engine,避免主线程阻塞,加进度 callback
- 判断 WebGPU 是否可用,可用则走本地模型,不可用 fallback 到云端 API,做成分层路由
浏览器已经是真正的 LLM 运行时了。不是实验室里的 demo,是生产环境里能用的下一层。
评论区
登录后可评论。