打造 MacBook 本地大模型代理中心:New API 与 LiteLLM 部署记录

随着各大云厂商接连推出极具性价比的大模型 API,手里不知不觉囤了各种厂商(如阿里云、腾讯云、DeepSeek 等)的多个 API Key。为了在本地各种 AI 工具(Chatbox、VSCode、Cursor)中无缝切换和聚合管理这些模型,在本地搭建一个 LLM API 网关(Proxy)成为了刚需。

“New API (可视化管理, golang) + LiteLLM (高阶路由容灾, python)” 是目前最理想的两个本地大模型代理解决方案。本文记录了在 MacBook 上的部署踩坑指北。

架构概览

  • New API:基于 Docker 部署。负责对接国内各家云厂商的私有协议,转换为统一的 OpenAI / Anthropic 标准协议,并提供直观的 Web UI 进行额度和令牌管理。
  • LiteLLM:基于 Python 虚拟环境 + Supervisord 本地部署。套在 New API 壳外,提供极客级别的按需路由(Routing)和故障自动转移(Fallback)。

一、部署 New API:OrbStack 与网络环境破局

在 Mac 上跑 Docker,强烈推荐使用 OrbStack 替代臃肿的官方 Docker Desktop,它不仅启动极速,且内存占用极低。

但由于大陆地区的网络原因,在执行 docker-compose up -d 拉取 New API 镜像时,大概率会遇到 context deadline exceeded 的超时报错。

💡 破局重点:配置加速镜像
不需要复杂的代理规则折腾,最直接有效的方案是在 OrbStack 中配置有效的镜像源。
打开 OrbStack -> Settings -> 左侧选 Docker -> 找到 Daemon 选项卡,填入以下配置并 Apply & Restart

{
"registry-mirrors":[
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi"
]
}

配置完成后,镜像拉取速度还不错,但是可能不稳定,需要多重试几次。国内很多其他的镜像源(如阿里云、腾讯云等)目前都不可用了,只有上面这三个 jsDelivr 的镜像源还勉强能用,深感嘘唏……

附上精简版 docker-compose.yml

services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
ports:
- "127.0.0.1:3000:3000"
volumes:
- ./data:/data

ports 部分强烈建议只绑定到 127.0.0.1,以确保服务只在本地可访问,提高安全性。


二、部署 LiteLLM:虚拟环境与 Supervisord 进程守护

LiteLLM 基于 Python 开发。为了极致节省 Mac 系统资源,我没有选择让它也跑在 Docker 里,而是直接在宿主机使用 venv 创建独立虚拟环境,并使用 supervisord 进行后台进程守护与开机自启管理。

1. 创建虚拟环境并安装

# 创建并激活虚拟环境
python3 -m venv ~/.litellm-env
source ~/.litellm-env/bin/activate
# 安装 litellm
pip install 'litellm[proxy]'

2. 💡 配置重点:Supervisord 与虚拟环境的结合

使用 Supervisor 管理虚拟环境中的 Python 应用,最大的踩坑点是路径问题:千万不能依赖系统的环境变量,必须在配置中直指虚拟环境的绝对路径!

通过 Homebrew 安装 Supervisor (brew install supervisor) 后,在配置目录(M芯片通常为 /opt/homebrew/etc/supervisor.d/)下创建 litellm.ini

核心配置写法如下:

[program:litellm]
# 【关键】不要直接写 litellm,必须写 venv 环境下的绝对执行路径!
command=/Users/你的用户名/.litellm-env/bin/litellm --config /Users/你的用户名/LLM/litellm/config.yaml --port 4000

# 指定工作目录
directory=/Users/你的用户名/LLM/litellm
user=你的用户名

# 自动重启与日志
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
stdout_logfile=/Users/你的用户名/LLM/litellm/stdout.log
stderr_logfile=/Users/你的用户名/LLM/litellm/stderr.log

写好后执行:

supervisorctl update
supervisorctl restart litellm

总结

通过 OrbStack (Docker) + New API 搞定全网模型协议的标准化,再通过 venv + Supervisord + LiteLLM 搞定本地轻量化守护与高阶路由。整套架构完全跑在本地,逐步有了点本地的 token hub 的感觉,既满足了对多模型的无缝切换,又极大地节省了系统资源。

–EOF–

版权声明
转载请注明出处,本文原始链接