目标

让本地部署的模型可以像调用 OpenAI 官方 API 一样被现有代码无缝调用,只需替换 base_urlapi_key

启动服务

vllm serve Qwen/Qwen2.5-7B-Instruct-AWQ \
  --quantization awq \
  --served-model-name my-local-llm \
  --api-key sk-local-demo-key \
  --port 8000

--served-model-name 决定客户端请求中 model 字段应填写的值;--api-key 用于简单鉴权。

Python 客户端调用

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8000/v1",
    api_key="sk-local-demo-key",
)

resp = client.chat.completions.create(
    model="my-local-llm",
    messages=[{"role": "user", "content": "用一句话解释向量数据库"}],
)
print(resp.choices[0].message.content)

使用 systemd 常驻服务

避免通过 nohup 挂起进程,推荐用 systemd 管理:

# /etc/systemd/system/vllm.service
[Unit]
Description=vLLM Inference Server
After=network.target

[Service]
User=vllmuser
WorkingDirectory=/opt/vllm
ExecStart=/opt/vllm/vllm-env/bin/vllm serve Qwen/Qwen2.5-7B-Instruct-AWQ --port 8000
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now vllm

通过 Nginx 反向代理暴露服务

生产环境不建议直接暴露 8000 端口,应通过 Nginx 做 TLS 终止与限流,具体配置可参考本站《Nginx 反向代理与 HTTPS 配置》一文。

小结

vLLM 的 OpenAI 兼容层大幅降低了从云端 API 迁移到自建推理的成本,配合 systemd 与反向代理即可获得接近生产可用的稳定服务。