本地模型服务
将 Ollama、vLLM、LM Studio 或 llama.cpp 接入 BitRouter —— 免费、本地、OpenAI 兼容。
本地模型服务
在自己的机器上运行模型,并让它走 BitRouter。Ollama、vLLM、LM Studio 与 llama.cpp 都暴露 OpenAI 兼容 API,因此每一个都是在 bitrouter.yaml 中加一个块的事。一切都留在 localhost —— 无需云账户,无按 token 计费。
1. 生成配置
生成一份起始 bitrouter.yaml(默认为 ./bitrouter.yaml):
bitrouter init这会写出一份带注释、skip_auth: true 的配置,供你添加 provider。用 -c <path> 写到别处。
2. 添加你的本地服务
选择你的运行时。每个标签页展示要放进 bitrouter.yaml 的 provider 块、启动服务的命令,以及如何路由到该模型。providers 是一个以你自选 id 为键的映射;api_base 是服务的 OpenAI 兼容基础 URL;api_protocol 是上游线格式(任何 OpenAI 兼容服务都用 chat_completions —— 这也是推断的默认值,因此该块可省略);models 下每一项是该服务提供的模型 id。
# bitrouter.yaml
providers:
ollama:
api_base: http://localhost:11434/v1
api_protocol:
- "*": chat_completions
models:
- id: llama3.1# 启动 Ollama 并拉取模型(默认端口 11434)
ollama serve &
ollama pull llama3.1用 provider 限定 id(provider:model)或裸模型名路由:
bitrouter route ollama:llama3.1# bitrouter.yaml
providers:
vllm:
api_base: http://localhost:8000/v1
api_protocol:
- "*": chat_completions
models:
- id: meta-llama/Llama-3.1-8B-Instruct# 启动 vLLM 的 OpenAI 兼容服务(默认端口 8000)
vllm serve meta-llama/Llama-3.1-8B-Instructbitrouter route vllm:meta-llama/Llama-3.1-8B-Instruct# bitrouter.yaml
providers:
lmstudio:
api_base: http://localhost:1234/v1
api_protocol:
- "*": chat_completions
models:
- id: llama-3.1-8b-instruct# 启动 LM Studio 的本地服务(默认端口 1234)
lms server start
lms load llama-3.1-8b-instructbitrouter route lmstudio:llama-3.1-8b-instruct# bitrouter.yaml
providers:
llamacpp:
api_base: http://localhost:8080/v1
api_protocol:
- "*": chat_completions
models:
- id: llama-3.1-8b-instruct# 启动 llama.cpp 的 OpenAI 兼容服务(默认端口 8080)
llama-server -m ./models/llama-3.1-8b-instruct.ggufbitrouter route llamacpp:llama-3.1-8b-instruct无需 API 密钥。 本地服务默认在回环地址上接受匿名请求,因此 provider 块不含 api_key。仅当你在服务前置了鉴权时才添加 api_key: ${MY_LOCAL_KEY} —— 它会在加载时从环境变量解析。
3. 启动 BitRouter 并发送请求
启动代理 —— 默认监听 127.0.0.1:4356:
bitrouter然后用配置中的模型 id 访问 OpenAI 兼容端点(按需替换为你的 provider id / 模型):
curl http://localhost:4356/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ollama:llama3.1",
"messages": [{"role": "user", "content": "Hello from a local model"}]
}'裸模型名(llama3.1)同样有效 —— BitRouter 会将其自动级联到声明了该模型的活跃 provider。provider 限定的 ollama:llama3.1 形式则把请求固定到该确切 provider。
混用本地与托管。 声明一个虚拟模型,其 endpoints 先列你的本地 provider、再列一个托管 provider:请求在本地硬件上免费运行,并在出错或过载时回退到托管模型 —— 单一模型名,自动故障转移。
要了解背后的概念 —— 为何前置本地服务,以及注册表检测这一替代方式 —— 见本地与私有模型。
How is this guide?