很多本地模型教程的第一步是装 Python、编译 llama.cpp、再配环境变量;Llama Windows 把这一步收进了一个 Windows 11 托盘应用:选模型、下载、加载,然后在 localhost:9931 暴露一个 OpenAI 兼容接口。下面是从零到能用自己的脚本调用的完整流程。

为什么值得本地跑

本地推理的价值不只是省钱。提示词、文档和输出都留在自己的机器上,断网也能用;对合同、病历、内部代码这类不方便上传的内容,这是唯一能接受的方案。代价是模型能力受显存和量化限制,别指望 7B 模型完成前沿模型的复杂推理。

准备

  • Windows 11(x64 或 Arm64);
  • 建议 16GB 以上内存;跑 7B 量化模型时显存/内存要留够余量;
  • 至少 10GB 空闲磁盘,模型会下载到 Hugging Face 缓存;
  • 不需要管理员权限,也不需要单独安装 llama.cpp。

安装

  1. 打开 llama.app,下载 Llama Windows;或从 GitHub 的 ggml-org/Llama-Windows Releases 下载最新的 .msixbundle;
  2. 双击安装包完成安装;如果系统提示信任来源,确认发布者后再继续;
  3. 启动后,托盘区会出现 llama 图标;没看到就点开溢出菜单;
  4. 右键图标可以打开或退出应用。

选一个模型

点击托盘图标,Recommended Models 会列出可直接运行的量化模型,并显示参数量、磁盘占用和是否支持视觉。先选一个和你机器内存匹配的 7B 到 14B 量化版本,别一上来就下 70B。下载完成后加载模型,可以直接在应用内聊天,也可以继续下面的 API 接法。

模型文件会进入 Hugging Face 的标准缓存目录 %USERPROFILE%\.cache\huggingface\hub,和 llama.cpp 及其他 Hugging Face 工具共用。想换盘,可以在设置里改缓存位置。

确认本地 API

Llama Windows 会在本机启动 llama.cpp 服务,默认地址是 http://localhost:9931。先用 curl 看当前加载了哪些模型:

curl http://localhost:9931/models

返回结果里会有模型 ID。把它填到任何 OpenAI 兼容客户端里,base_url 用 http://localhost:9931/v1,API key 随便填一个占位符即可。Python 示例:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:9931/v1", api_key="not-needed")
resp = client.chat.completions.create(
    model="<上一步返回的模型 ID>",
    messages=[{"role": "user", "content": "用三句话解释什么是量化。"}],
)
print(resp.choices[0].message.content)

接进自己的脚本或 Agent

任何支持自定义 base_url 的 OpenAI SDK、LangChain、LlamaIndex 或 agent 框架都能接。要点只有三个:base_url 指向 /v1、model 用 /models 返回的 ID、不要在代码里写死公网地址。这样同一套代码在本地和云端之间切换,只需要改环境变量。

$env:OPENAI_BASE_URL="http://localhost:9931/v1"
$env:OPENAI_API_KEY="not-needed"
# 然后在脚本里正常初始化 OpenAI 客户端

常见问题

  • 端口被占用:确认没有另一个 llama.cpp 或应用占用 9931;
  • 模型加载失败:多半是内存/显存不够,换更小的量化版本;
  • 速度慢:检查是否走了 GPU;没有独显时 CPU 推理会明显慢;
  • 找不到日志:%LOCALAPPDATA%\LlamaApp\logs,默认保留 7 天;
  • 想让局域网其他设备访问:不要直接把 --host 改成 0.0.0.0;应用在非 localhost 绑定时会生成 API key,并在设置里显示。

安全边界

默认只监听 localhost,这是最安全的用法。如果确实要让别的设备访问,先确认应用已经生成并启用了 API key,再在防火墙里只放行需要的来源;不要把 9931 直接暴露到公网。llama.cpp 本身没有账号体系,谁连上谁就能加载、下载、运行和删除模型。

本地模型的隐私优势,建立在「它真的只在本机」这个前提上;一旦你把端口开到公网,这个前提就没了。