跳转到内容

配置:本地 LLM

TomoriBot 可以使用任何与 OpenAI 兼容的本地 LLM 服务器做文本生成与嵌入。 本指南以 Ollama 为例走一遍流程,因为它最容易上手。

等你摸清门路之后,可以考虑更灵活的服务器,比如 KoboldCPP,并直接从 Hugging Face 使用开源模型,因为挑选和试玩各种社区自制模型,正是自己跑 AI 的一半乐趣。

安装 Ollama。下面的示例用的是 Google 的 Gemma 4,但 Ollama 的模型库里的任何模型都可以。

本地模型跑在 GPU 的 VRAM 里(显卡自带的内存,与系统 RAM 分开)。经验法则:一个模型至少需要在 VRAM 里留出相当于它下载大小的空间,再加上约 1 到 2 GB 给对话上下文。挑你的显卡装得下的最大 Gemma 4:

你的 GPU VRAM最合适的选择下载大小(约)
约 8 GBgemma4:e2b7.2 GB
约 12 GBgemma4:12b7.6 GB
约 16 GBgemma4:12b(能完全装下),或 gemma4:26b7.6 / 18 GB
24 GB 以上gemma4:26bgemma4:31b18 / 20 GB

下载大小是 Ollama 默认量化下的数值;准确数字见 模型页面。不确定自己有多少 VRAM?Windows 上:任务管理器 → 性能 → GPU,看「专用 GPU 内存」。

拉取你选定的尺寸并启动服务器:

Terminal window
ollama pull gemma4:12b # 换成装得进你 VRAM 的那个标签
ollama serve # 监听 http://127.0.0.1:11434

确认从 TomoriBot 所在的那台机器能访问到它:

Terminal window
curl http://127.0.0.1:11434/v1/models

记下实际安装的确切标签,因为这就是你要注册的模型名称:

Terminal window
ollama list
# NAME ID SIZE
# gemma4:12b a1b2c3d4... 7.6 GB

运行 /providers(对整个服务器生效)或 /personal providers(只对你生效),选择 添加新自定义端点,然后填入:

字段Ollama 的取值
endpoint_label你自己起的名字,例如 home-ollama
API 兼容性OpenAI-Compatible(推荐)或 Ollama
endpoint_urlOpenAI 兼容用 http://127.0.0.1:11434/v1 · Ollama 用 http://127.0.0.1:11434
auth_token(留空)

保存连接之后,选中它,并从它的模型下拉菜单里选择 添加新的文本模型。 填入:

  • 模型名称(确切的 API ID): gemma4:12b,也就是 ollama list 里的确切标签。
  • 上下文窗口覆盖: 可选,仅 Ollama 与 KoboldCPP。设置它(例如 819216384)可以调高 Ollama 默认的 num_ctx,否则那个值小到会截断 TomoriBot 的长上下文。留空则使用服务器默认值。
  • 各项开关: 如果模型支持函数调用就启用 工具;只有视觉模型才启用 图像 理解;如果模型能很好地处理 JSON schema,就启用 结构化输出。在我们的例子里,Gemma 4 全都支持,所以把它们都勾上。

TomoriBot 会在你保存时校验连接。如果它报告端点无法访问,常见原因是 localhost 与 Docker 不匹配,或者 /v1 少写或多写(见 注意事项与坑)。

添加模型会自动把它设为当前生效的 text 模型。开始聊天试试它。如果它因为某些原因没有生效,运行 /config > 模型 > 切换模型,选择你新注册的模型。

注册永远不会改动 text 之外的任何模型。如果你勾选了 图像理解,想让这个端点给一个看不见图像的聊天模型充当视觉助手,请用 /config > 模型 > 切换模型显式选择它;你以该开关注册过的每个文本端点都会出现在那里。注意视觉模型只在聊天模型看不到图像时才会被使用,所以把视觉模型设在本身能看图像的聊天模型后面,在你切换之前不会有任何效果。

选中已保存的端点,用它的模型下拉菜单添加一个嵌入模型(例如 ollama pull nomic-embed-text,模型名称 nomic-embed-text:latest)。RAG 功能还要求 Postgres 里装好 pgvector。手动安装指南见手动安装

下面这些都走同一套流程,只是 URL 和几处注意事项不同。

  • 以启用 OpenAI 兼容的方式启动(内置)。默认:http://127.0.0.1:5001/v1
  • API 兼容性:OpenAI-Compatibleendpoint_urlhttp://127.0.0.1:5001/v1
  • 和 Ollama 一样支持 上下文窗口覆盖
  • 加载 GGUF 模型;模型名称是已加载模型自己报告的(通常是文件名主干),请查看 KoboldCPP 的 /v1/models 响应。
  • 构建或安装 llama.cpp,然后用它自带的 OpenAI 兼容服务器提供某个 GGUF:
    Terminal window
    llama-server -m model.gguf -c 16384 --host 0.0.0.0 --port 8080
  • API 兼容性:OpenAI-Compatibleendpoint_urlhttp://127.0.0.1:8080/v1
  • 在启动时用 -c 设置上下文窗口,而弹窗里的 上下文窗口覆盖 仅适用于 Ollama 与 KoboldCPP,在这里没有效果。
  • 模型名称是 /v1/models 报告的内容;用 --alias my-model 给它一个干净的名字。
  • 如果你用 --api-key 启动它,就把那个密钥填进 auth_token
  • 在 LM Studio 里启动 Local Server(Developer 标签页)。默认:http://127.0.0.1:1234/v1
  • API 兼容性:OpenAI-Compatibleendpoint_urlhttp://127.0.0.1:1234/v1
  • 模型名称是 LM Studio 为已加载模型显示的标识符。
  • 用 OpenAI 兼容服务器提供服务:vllm serve <model>http://127.0.0.1:8000/v1
  • API 兼容性:OpenAI-Compatibleendpoint_urlhttp://127.0.0.1:8000/v1
  • 如果你带 --api-key 启动 vLLM,就把那个密钥填进 auth_token
  • 模型名称是所提供模型的路径或名称(与 /v1/models 一致)。
  • 运行 LiteLLM 代理;默认:http://127.0.0.1:4000/v1
  • API 兼容性:OpenAI-Compatibleendpoint_urlhttp://127.0.0.1:4000/v1
  • 模型名称是你在 LiteLLM 配置里定义的模型别名。
  • 如果该代理强制要求 master key,就把它填进 auth_token

由于涉及一处系统提示词兼容处理,它有自己专门的指南: 配置:ChatMock

除了 Ollama 精选的模型库,Hugging Face 还托管着成千上万的社区模型。KoboldCPP、llama.cpp 和 LM Studio 都能加载 GGUF 格式,那是一种单文件包,你下载下来让服务器指向它即可。

  1. 找一个 GGUF。 在 Hugging Face 上搜索你的模型名加上「GGUF」,像 bartowski 这样的社区量化者会在大多数热门模型发布后不久就放出 GGUF 构建。优先选 instruct 或 chat 变体(名字以 -Instruct-Chat 结尾);基础模型不会进行对话。
  2. 挑一个装得进你 VRAM 的量化版本。 同一个仓库会把同一个模型以很多量化档位列出,而一个文件的体积大致等于它需要的 VRAM(再加上约 1 到 2 GB 给上下文,规则与上面 尺寸表相同)。下载你选定的那个 .gguf 文件。
  3. 加载它。 用那个文件启动 KoboldCPP 或 llama-server(见 其他服务器),然后照常把端点注册进 Discord。
  • 一个标签对应一个端点条目。 要注册共享同一个服务器的多个模型,就选中已保存的端点,再用它的模型下拉菜单。真正不同的服务器或 API 协议,请使用不同的标签。
  • 模型名称就是 API 标识符。 它是发送给服务器的确切字符串。填错是连上了但回复失败这一类问题最常见的原因。
  • TomoriBot 跑在 Docker 里? 容器里的 localhost 不是你的主机。请使用 http://host.docker.internal:<port>(Windows 与 macOS)或者主机的局域网 IP,并把 模型服务器绑定到 0.0.0.0