找了好久一直想找个带 PII 配置的 docker compose 部署的网关,第一个找到的是 LiteLLM,试用了一堆其他类型的网关后,兜兜转转又回到了 LiteLLM。。。
我想,虽然“大数据下无隐私”这句话的含金量还在不断升高,也知道最好的 PII 脱敏就是本地部署,只能说目前现状对我来说是最优解了,或许后续我也可以自己写一个,毕竟有 AI~
网关不少,但带有基本 PII 的真的不多(或许我没有搜全),一方面对个人用户而言, vibe coding 本身一些敏感信息可以通过设置排除在外;另一方面,真的有 PII 需求的,那也是企业级用户,用的企业级路由,完全可以自己花钱搞一个。🤣一来二去开源类的网关基本也是奔着定制收费和企业用户去的了。。。
今天说的仅仅是 LiteLLM 的部署,顺便带上自带的过滤,也就是脱敏功能,至于 LiteLLM + Presidio 的部署,有点太过臃肿了,后面有机会再看吧!首先用官方的 docker-compose.yaml 就可以跑起来,这里我稍微改了一下(带了数据库,不带的话,就没有数据统计功能了):
services:
litellm:
image: docker.litellm.ai/berriai/litellm:main-stable
container_name: litellm
environment:
DATABASE_URL: "postgresql://llmproxy:dbpassword9090@litellm_db:5432/litellm"
STORE_MODEL_IN_DB: "True" # 需要通过 WEB UI 实时编辑的话,这项默认设置为 TRUE
LITELLM_MASTER_KEY: "sk-1234" # 改成你需要的管理员密码
depends_on:
- litellm_db
healthcheck: # Defines the health check configuration for the container
test:
- CMD-SHELL
- python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:4000/health/liveliness')" # Command to execute for health check
interval: 30s # Perform health check every 30 seconds
timeout: 10s # Health check command times out after 10 seconds
retries: 3 # Retry up to 3 times if health check fails
start_period: 40s # Wait 40 seconds after container start before beginning health checks
ports:
- 4000:4000
restart: unless-stopped
networks:
- mynet
litellm_db:
image: postgres:16
restart: unless-stopped
container_name: litellm_db
environment:
- POSTGRES_DB=litellm
- POSTGRES_USER=llmproxy
- POSTGRES_PASSWORD=dbpassword9090
ports:
- "5432:5432"
volumes:
- ./litellm_postgres_data:/var/lib/postgresql/data # Persists Postgres data across container restarts
healthcheck:
test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]
interval: 1s
timeout: 5s
retries: 10
networks:
- mynet
networks:
mynet:
external: true
docker compose up -d 起来后,直接访问 4000 端口就行了。

点击 LiteLLM Admin Panel on /ui 之后就可以配置了(很遗憾,目前没中文,不过社区在推进中)。
admin,密码为 docker compose 中你设置的 LITELLM_MASTER_KEY 值添加模型
点击 Models + Endpoints 打开后,点击右侧 Add Model 添加模型:
Provider中选对应模型厂商LiteLLM Model Name(s)中选择你希望添加的模型(可多选,如果你想要全部添加,可以直接选ALL XXX Models)API Key填你的 KEY
最后点最底下的 Test Connect 测试下链接,OK 就点 Add Model 添加!

至此,一个模型就添加完了,当然,你也可以这样添加多个模型。
创建 LiteLLM KEY
模型有了,接下来就是创建密钥了,点击 Virtual Keys 后,右侧点击 Create New Key,一般填写一个 Key Name 就可以了。
模型优先级设置
当然,如果添加了多个厂商,我希望优先用 XX,后面用 XX 怎么样设置呢?
点开 Optional Settings,接着点开 Router Settings 之后,选择 fallbacks 标签,Primary Model 选择你的主要模型(或模型厂商,比如 deepseek/*),下面可以选择次要模型。
比如当使用 deepseek 模型时,我可以优先使用 deepseek 官方的 API,当使用其他模型时,我又可以使用 openrouter 中的模型,两不耽误:

设置围栏
点击左侧 Guardrails 栏,点击右侧标签 Guardrails 后,点击 Add New Guardrail 下的 Add Provider Guardrail 打开添加界面:

Guardrail Name:规则名,随便取Guardrail Provider:选LiteLLM Content FilterMode:保持默认pre_callAlways On:如果对所有 Virtual Key 需要默认启用,就设置为 Yes,否则就在各 key 内设置
其他保持默认,点击 Next:

这一步主要对企业用户而言,可以拦截某些言论输出或者竞争对手比较信息,对于我个人而言没用,点 Next:

这里就是对 PII 的一些过滤了,可以选系统已有的,没有的话,也可以自己正则添加,Action 行为:Mask 是替换为掩码,Block 则是拦截该请求了。点击 Next:

这里是添加一些关键字,也是企业级适用,比如某些言论关键字,或者特定字符串、提示语等,可酌情选择,点最后一个 Next:

这项保持默认就行了,最后点 Create guardrail 完成创建!
测试围栏
创建好后,点第三个标签 Test Playground 可以看到你之前创建的配置,选中后可以测试结果:

可以看到已经对设置的敏感信息 MASK 处理了。

Comments NOTHING