网页里的模型在你电脑上跑:WebLLM 最先要做好的是加载过程
为什么值得关注
让支持的语言模型在浏览器内推理,为本地网页AI功能提供引擎。
适合谁:希望在网页中运行本地模型的前端开发者
这次有哪些亮点
- 使用WebGPU在浏览器推理
- 初始化提供模型加载进度
- 支持流式生成与独立Worker线程
使用前需要知道
需要兼容WebGPU的浏览器及足够设备资源;首次模型下载仍需网络,模型许可与网页自身数据行为另看。
在网页里打字,让模型直接使用这台电脑计算,WebLLM提供了这样一种接入方式。推理不必依赖远程模型服务器,但代价也很具体:打开页面后,浏览器需要先准备模型,设备还得有能力把它跑起来。
因此,做这类功能时,最先值得设计的可能不是聊天气泡,而是下载、缓存和加载完成之前的那段过程。
从打开网页到能回答,中间多了什么
官方README的初始化示例先选择MLC格式的模型,再创建引擎。首次加载需要下载,文档特别提醒这一过程可能较长,并提供进度回调,让网页展示正在准备到哪一步。
这个回调不是装饰。用户如果只看到一个一直转的按钮,很难分清正在下载、加载失败,还是设备本身不支持。把准备状态与回答状态分开,才能让“还没回复”有可理解的原因。
WebLLM也有模型缓存设置。默认使用浏览器Cache API,另有IndexedDB、OPFS等选项,各自有环境支持条件。缓存可以减少重复准备,却不是模型永远留在电脑里的保证;网页存储清理、浏览器策略和用户操作仍可能影响下一次加载。
运行在本地,模型选择仍有格式要求
WebLLM使用WebGPU进行浏览器内计算,支持的内置模型由项目配置列出,自定义模型则需要相应MLC格式。它不是把任意一份Python模型文件拖进网页,就能自动完成适配。
选择模型还会影响下载体积、内存和可用任务。一个在开发电脑上加载成功的型号,不能直接代表访问者的笔记本或手机同样合适。网页需要把支持条件和失败状态做进使用流程,而不只是把本地推理当作服务器请求的等价替换。
所谓本地推理,也应限定在模型计算这一步。网页是否有统计、外部检索或其他联网功能,取决于应用自己的实现,不能只因为使用WebLLM就宣称整个页面绝不传数据。
等模型生成时,页面还要继续能用
加载成功后,聊天接口可以采用流式方式逐步返回内容,页面边接收边显示。项目还提供Web Worker接入,让较重的计算与页面主线程分开,减少对界面操作的干扰。
这里也有一个容易忽略的接口细节:模型是在引擎创建或reload时选择的,不能假定每次聊天请求里填一个model字段就会切换。若界面允许换模型,需要处理旧任务、重新加载和进度,而不只是更改下拉框文字。
项目采用Apache 2.0许可,具体模型还有自己的条件。它适合的方向很明确:当你愿意为浏览器设备差异、模型准备和本地资源承担设计工作,就能研究把部分AI功能直接放到用户设备上。先让这段加载过程可理解、可恢复,再接上聊天,才更接近一个能长期使用的网页功能。
以上为编辑整理,功能、许可与使用条件以官方说明为准。