在本地运行开源模型项目
用这个页面在你的电脑上运行一个已提取的开源模型项目。这个模块包含两种项目。一种在浏览器内用 Transformers.js 运行物体检测模型,加载前需要添加一处设置。另一种是小型 Express 服务器,它把你的问题转发给运行在 Ollama 中的模型,其 package.json 需要修复。两种都不需要 API 密钥。
你首先需要的
安装受支持的 LTS 版本 Node.js。推荐 Node 24,它包含 npm。如果 Node 和 npm 对你来说还很陌生,在本地运行代码会引导你完成安装和检查步骤。
检查两个命令都能用。你的版本号可能不同:
$ node --version
v24.18.0
$ npm --version
11.18.0浏览器项目第一次加载时还需要网络连接,因为页面要下载约 20 MB 的库文件和模型文件。
Ollama 项目还需要 Ollama 和它的 mistral 模型,下载量约 4.4 GB。你可以在下面 Ollama 部分开始那个下载。
node --version 和 npm --version 都能输出版本号。 两个项目都不需要 API 密钥。如果 index.js 开头是 import ollama,那也要装 Ollama 应用。
识别你提取的项目
在提取的文件夹中打开终端。这是包含 package.json 和 index.js 的文件夹:
$ cd path-to-your-extracted-project打开 index.js 并读其第一行。浏览器项目用 Transformers.js 在浏览器中运行 AI 模型的开头是:
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.8.0'Ollama 项目在电脑上用 Ollama 下载和运行 AI 模型的开头是:
import ollama from "ollama";浏览器项目还有 index.html 和一个 road.jpeg 照片;Ollama 项目两者都没有。只按你的项目所属的部分操作。
index.js 看第一行。@xenova/transformers 表示浏览器项目;ollama 表示 Ollama 项目。 然后跳到对应项目的部分。两个设置不能混用。
运行 Transformers.js 项目
安装依赖:
$ npm installnpm 完成后会报告它添加了多少个包。
启动前,改 index.js 中的一行。页面加载时,Transformers.js 首先在与页面同一服务器上的 /models/ 目录下寻找模型文件。Vite 对它不认识的任何地址都用页面本身来应答,所以库收到的是 HTML 而非期望的模型设置,页面会永远停留在加载模型中...。一个设置可以告诉 Transformers.js 跳过本地检查,直接从 Hugging Face 下载模型。
把第一行:
import { pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.8.0'改为这两行:
import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.8.0'
env.allowLocalModels = false启动开发服务器:
$ npm startVite 可能会先打印一条以 (!) Your Vite config uses features 开头的警告。这不会停止应用。下面,Vite 会打印要打开的地址:
VITE v8.3.4 ready in 99 ms
➜ Local: http://localhost:5173/打开那个 Local 地址。页面在灰显的检测物体按钮上显示加载模型中...,同时库和模型在下载。当状态变为就绪,点击检测物体。几秒后(在较慢的机器上可能长达二十秒),状态显示完成!,照片上出现标注的框,比如 bus: 99%、car: 97% 和几个红绿灯。后续加载会更快,因为浏览器会保留下载的文件。
如果状态停留在加载模型中...或一直没出现,打开浏览器的开发者工具(F12,或 Mac 上 Chrome 的 Cmd+Option+J),读控制台标签;下面的故障排除会对应每条消息。favicon.ico 的红色 404 是无害的。
用 Ctrl+C 停止项目。
npm install,在 index.js 顶部添加 env 和 env.allowLocalModels = false 行,然后运行 npm start 并打开 Local 地址。 等待就绪,然后点击检测物体。照片上有标注框的标签意味着模型有效。
修复和运行 Ollama 项目
安装 Ollama 并打开它。在 macOS 和 Windows 上,应用启动 Ollama 的本地服务;在 Linux 上,安装程序会设置好。如果 ollama 命令说无法连接,在另一个终端运行 ollama serve 并让它保持运行。
下载课程代码要求的模型。约 4.4 GB,所以你可以在另一个终端进行下面的编辑时同时下载:
$ ollama pull mistral
$ ollama ls第二个命令应该列出 mistral:latest。
现在处理项目本身。它的 package.json 是为 Vite 网页生成的:npm start 运行 Vite,唯一列出的包是 Vite。但 index.js 是导入 express 和 ollama 的 Node 服务器。如下载的那样,npm start 启动 Vite,它打印的地址显示 HTTP ERROR 404,因为没有页面要服务。
在 package.json 中做两处编辑:添加 "type": "module" 并把启动脚本改为 node index.js。文件顶部就变成了:
{
"name": "Scrim-s06c53f",
"description": "https://scrimba.com/ai-engineer-path-c02v/~07uj",
"type": "module",
"scripts": {
"start": "node index.js",
"dev": "vite",文件其余部分保持不变。"type": "module" 告诉 Node 这个 index.js 使用 import;不加的话,Node 仍会运行文件但会先打印一条 MODULE_TYPELESS_PACKAGE_JSON 警告。
安装 index.js import 的两个包,然后启动服务器:
$ npm install express ollama
$ npm start服务器打印:
Server is running on port 3000打开 http://localhost:3000/。页面应该显示:
Ask something via the `?question=` parameter只在 ollama pull 完成后才问。然后向模型提一个问题:
http://localhost:3000/?question=Why%20is%20the%20sky%20blue%3FMistral 完成写答案后,答案以纯文本显示。第一个答案最慢,因为 Ollama 需要先把模型加载到内存;页面在那之前不显示任何东西。
用 Ctrl+C 停止服务器。Ollama 在后台继续运行,直到你退出应用或停止 ollama serve。
ollama pull mistral 并保持 Ollama 打开。在 package.json 中,添加 "type": "module" 并把启动脚本改为 node index.js。 然后运行 npm install express ollama 和 npm start,并打开问题地址。第一个答案慢是正常的。
故障排除
Transformers.js 页面停留在 加载模型中...,控制台显示 Unexpected token '<', "<!DOCTYPE "... is not valid JSON: 缺少 env.allowLocalModels = false 行,或 env 不在 import 中。如上所示添加两者并重新加载页面。
页面只显示灰显的检测物体按钮,上面没有状态,控制台提到 cdn.jsdelivr.net: 库无法下载。通常是内容拦截器或受限网络所致;允许 cdn.jsdelivr.net 或尝试另一个网络。
页面停留在 加载模型中...,控制台对 huggingface.co 显示 Failed to fetch: 模型无法下载。在内容拦截器或网络中允许 huggingface.co,然后重新加载。
在 Ollama 项目中,npm start 打印 VITE 且地址显示 HTTP ERROR 404: 启动脚本仍在运行 Vite。改为 node index.js。
Node 显示 Cannot find package 'ollama' 或 Cannot find package 'express': 在包含 package.json 的文件夹中运行 npm install express ollama。
问题地址显示 TypeError: fetch failed,终端显示 ECONNREFUSED 127.0.0.1:11434: Express 在运行但 Ollama 不是。打开 Ollama 应用或运行 ollama serve,然后再问。
问题地址显示错误,说找不到 mistral 模型: Ollama 在运行但没有模型。运行 ollama pull mistral 并等待完成。
npm start 打印 Server is running on port 3000 然后返回提示符: 另一个程序已在使用 3000 端口。停止它,或改 index.js 中的 port 常量并打开匹配的地址。
favicon.ico 外第一条红线。对 Ollama 项目,读问题地址显示的内容和终端打印的内容。然后在上面对应加粗的标题。 
