目标
让本地部署的模型可以像调用 OpenAI 官方 API 一样被现有代码无缝调用,只需替换 base_url 和 api_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 与反向代理即可获得接近生产可用的稳定服务。