停止将医疗数据发送到云端:使用 WebLLM 和 Transformers.js 构建 100% 私有健康 AI

发布: (2026年5月4日 GMT+8 08:20)
6 分钟阅读
原文: Dev.to

Source: Dev.to

Introduction

在数据隐私常常成为我们为便利付出的代价的时代,医疗信息仍然是最敏感的前沿。当你将患者的记录或个人健康日志上传到集中式 API 时,实际上是把最私密的数据交给第三方。但如果 “大脑” 完全运行在你的浏览器中会怎样?

今天,我们将深入探讨 Edge AIprivacy‑preserving technology 的世界。我们将构建一个 Local Health Assistant,使用 WebGPU 加速在本地运行 Llama‑3Whisper。通过利用 Transformers.jsWebLLM,我们可以实现 100 % 离线的敏感医疗案例摘要,且没有任何数据包离开用户的机器。这种 browser‑based AI 方法将为医疗应用、研究以及数据敏感行业带来颠覆性变化。

架构:100 % 本地推理

魔法发生在浏览器对 GPU 的访问中。与传统的客户端‑服务器模型不同,浏览器充当了基础设施。

graph TD
    A[User Audio/Text Input] --> B{WebGPU Enabled?}
    B -- Yes --> C[Transformers.js / Whisper]
    B -- No --> D[Error: WebGPU Required]
    C -->|Transcript| E[WebLLM / Llama‑3]
    E -->|Contextual Summary| F[Local React UI]
    F --> G[Downloadable Local Report]
    subgraph Browser_Environment
        C
        E
        F
    end

前置条件

  • 技术栈:React (Vite),WebLLMTransformers.js
  • 硬件:一台支持 WebGPU 的 GPU 机器(最新的 Chrome/Edge 版本)。
  • 模型Llama-3-8B-Instruct-q4f16_1-MLCXenova/whisper-tiny

步骤 1:使用 Transformers.js 进行转录

首先,我们需要将口述的医学记录转换为文本。我们使用 Transformers.js,因为它允许我们直接在浏览器中运行 OpenAI 的 Whisper 模型。

import { pipeline } from '@xenova/transformers';

async function transcribe(audioBlob) {
  // Initialize the automatic speech recognition pipeline
  const transcriber = await pipeline('automatic-speech-recognition', 'Xenova/whisper-tiny');

  // Convert blob to audio buffer
  const audioData = await audioBlob.arrayBuffer();

  // Perform inference
  const output = await transcriber(audioData, {
    chunk_length_s: 30,
    stride_length_s: 5,
  });

  return output.text;
}

第2步:使用 WebLLM(Llama‑3)进行摘要

一旦获取到文本,我们就将其输入 WebLLM。WebLLM 利用 WebGPU 以接近原生的速度运行大型语言模型。这对于在确保 零隐私泄漏 的同时保持流畅的用户体验至关重要。

import * as webllm from '@mlc-ai/webllm';

const selectedModel = 'Llama-3-8B-Instruct-q4f16_1-MLC';

async function generateHealthSummary(transcript) {
  const engine = await webllm.CreateEngine(selectedModel, {
    initProgressCallback: (report) => console.log(report.text),
  });

  const messages = [
    {
      role: 'system',
      content:
        'You are a medical assistant. Summarize the following patient case into key symptoms and recommended follow‑ups. Ensure privacy‑first language.',
    },
    { role: 'user', content: transcript },
  ];

  const reply = await engine.chat.completions.create({ messages });
  return reply.choices[0].message.content;
}

第 3 步:编排 React UI

将这些重量级模型集成到 React 生命周期中需要谨慎的状态管理,以避免阻塞主线程。

寻找更适用于生产环境的模式? 🚀

构建基于浏览器的 AI 很令人兴奋,但要将这些应用扩展到企业级的安全性和性能,需要更深入的架构洞察。如果您对 Edge AI 的高级模式、性能优化以及本地优先的数据同步感兴趣,请查看 Official WellAlly Tech Blog

在 WellAlly,我们深入探讨医疗科技与高性能计算的交叉领域,提供超越基础的资源。

性能考虑与技巧

  • 模型缓存:用户首次访问时,需要下载数千兆字节的权重。请有效利用浏览器缓存,以便后续访问能够瞬间加载。
  • 惰性加载:仅在用户启动转录任务时才加载 Whisper。
  • 分块推理:对于长篇转录,在将文本输入 Llama‑3 之前,将其拆分为可管理的块,以避免内存峰值。
  • GPU 内存管理:监控 WebGPU 内存使用情况,并在用户离开页面时释放资源(engine.dispose())。
  • UI 响应性:将繁重的推理工作卸载到 Web Worker,或使用 requestIdleCallback 来保持界面流畅。

祝开发愉快,保持隐私至上!

关键技术

  • 工作线程
    在 Web Worker 中运行 Transformers.jsWebLLM。这可确保在 GPU 进行计算时 UI 保持响应(60 fps)。

  • 量化
    在浏览器环境中始终选择 4‑bit 量化(例如 q4f16_1),以便在拥有 8 GB–16 GB RAM 的用户机器上保持可接受的内存占用。

结论

浏览器不再仅仅是文档查看器;它是一个强大且私密的执行环境。通过结合 WebLLMTransformers.js,我们可以创建尊重用户主权并默认遵守最严格的数据隐私法规(如 HIPAA 或 GDPR)的医疗助理。

您对本地 AI 的未来有何看法?
让我们在下方评论区讨论吧! 👇

0 浏览
Back to Blog

相关文章

阅读更多 »

让客户交接轻松的文件夹结构

每家机构都有这样一个版本的故事:团队成员离职、客户升级,或者你在替病假的同事顶班——于是你花了20分钟去搜索……

2026年 ATS 筛选软件实际检查的内容

概述:大多数你在网上找到的“ATS‑friendly CV”建议都可以追溯到2017年。2026年的现代 applicant tracking systems(ATS)远不止简单的关键词匹配……