跳到正文

本地推理与自托管 ​

Ollama、vLLM、llama.cpp server、LM Studio、SGLang、TGI 这类本地/自托管推理服务不是客户端 SDK,而是上游。它们跑模型、暴露一个(通常是 OpenAI 兼容的)HTTP 端点;网关把它们的端点配成一个上游,你的客户端侧仍用 官方厂商 SDK 或任意框架,完全不用改。

客户端(任意 SDK) ──> 网关(openai 兼容上游) ──> 自托管服务(Ollama/vLLM/...)
      base_url → 网关            upstream → http://<host>:11434/v1

通用接法 ​

  1. 起好本地服务(下面各自一行)。
  2. 控制台 → 上游服务 → 新建,协议选 openai,基础 URL 填本地服务地址,其余按需。
  3. 建模型、配密钥组、签发访问密钥——与 接入 OpenAI 上游 步骤完全一致。
  4. 客户端用 OpenAI SDK,base_url 指到网关,model 填网关模型名。

Ollama ​

bash
ollama serve                      # 默认监听 http://localhost:11434
ollama pull qwen3:8b

坑:Ollama 原生 /api/chat 不是 OpenAI 兼容。给网关配上游时,基础 URL 要用 OpenAI 兼容路径 http://localhost:11434/v1(带 /v1),不能填 http://localhost:11434。

python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:7890/v1", api_key="<你的访问密钥>")
resp = client.chat.completions.create(
    model="qwen3-8b",   # 网关里配的模型名,上游模型 ID 是 Ollama 的 qwen3:8b
    messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)

vLLM ​

bash
vllm serve Qwen/Qwen3-8B --port 8000   # OpenAI 兼容端点在 http://localhost:8000/v1

vLLM 原生就是 OpenAI 兼容(/v1/chat/completions),上游基础 URL 填 http://localhost:8000/v1。它的 rerank / embedding 端点(/v1/rerank、/v1/embeddings)对应网关的 openai_rerank / openai_embeddings 协议——要给 vLLM 的 rerank 模型单独建一个 openai_rerank 协议的上游与模型。

llama.cpp server ​

bash
llama-server -m model.gguf --port 8080   # OpenAI 兼容端点在 http://localhost:8080/v1

同上,上游基础 URL 填 http://localhost:8080/v1。

SGLang / TGI / LM Studio ​

  • SGLang:python -m sglang.launch_server ... --port 30000,OpenAI 兼容端点 /v1。
  • TGI(Hugging Face):text-generation-launcher,兼容端点 /v1(部分版本仅 /generate,需用 passthrough 协议兜底)。
  • LM Studio:本地 GUI 起 server,勾选「OpenAI 兼容」,默认 http://localhost:1234/v1。

接法一致:协议 openai,基础 URL 填它的 /v1 端点。若某服务只有非 OpenAI 兼容的原生端点(少数 TGI / 私有实现),改配 passthrough 协议原样转发,客户端走 /v3/{model}/{*rest} 或 /v1/services/*,见 端点。

为什么经网关跑本地模型 ​

  • 统一入口:本地模型与云端模型混用同一个 base_url,客户端零改动切换。
  • 复用能力:负载均衡、访问控制、计费、可观测性对本地上游同样生效。
  • 离线/数据合规:模型不出内网,网关只做路由与治理。

下一步 ​