AI使用追踪和代理网关GoModel

简介

什么是 GoModel ?

GoModel 是一个使用 Go 语言编写的高性能 AI 网关,它提供统一的 OpenAI 兼容 API 接口,可以同时连接 OpenAIAnthropicGoogle GeminixAIGroqOpenRouterZ.aiAzure OpenAIOracleOllamavLLM 等多种 LLM 提供商。它可以帮助用户在一个端点上访问所有这些 AI 模型,同时获得审计日志、监控指标和安全护栏功能。

主要特点

  • 多提供商支持:统一接入 12+ 个主流 LLM 提供商,一个端点访问所有模型
  • OpenAI 兼容:完全兼容 OpenAI API 规范,现有应用无需修改代码即可切换提供商
  • 可观测性:内置审计日志、Prometheus 指标监控和用量统计
  • 响应缓存:支持精确匹配缓存和语义相似缓存,大幅降低 API 调用成本
  • 安全护栏:内置 guardrails 管道,支持内容过滤和请求审查
  • 管理界面:提供 Web 管理仪表板,直观查看使用情况和日志
  • 开源免费:基于 MIT 协议开源,可免费使用和修改

应用场景

  • AI 应用开发:开发者可以使用统一的 API 调用多个 LLM 提供商,无需为每个提供商单独集成
  • 成本优化:通过响应缓存减少重复请求,通过用量监控分析成本分布
  • 提供商切换:在多个提供商之间灵活切换,避免单一提供商服务中断影响
  • 企业内部部署:在私有环境中部署 AI 网关,统一管理 API 密钥和用量

GoModel 是一个高性能的 AI 网关,可以帮助开发者在一个端点上访问所有主流 LLM 提供商,同时获得完整的审计和监控能力。

准备

GoModel 支持配置多个 LLM 提供商,只需在环境变量中添加相应的 API key 即可。

支持的提供商

提供商 环境变量 说明
OpenAI OPENAI_API_KEY 需从 OpenAI 官网获取
Anthropic ANTHROPIC_API_KEY Claude 模型
Google Gemini GEMINI_API_KEY Gemini 模型
xAI (Grok) XAI_API_KEY Grok 模型
Groq GROQ_API_KEY 高性能推理模型
OpenRouter OPENROUTER_API_KEY 聚合多个提供商
Z.ai ZAI_API_KEY 智谱 AI GLM 模型
Azure OpenAI AZURE_API_KEY + AZURE_BASE_URL Azure 云服务
Oracle ORACLE_API_KEY + ORACLE_BASE_URL Oracle 云服务
Ollama OLLAMA_BASE_URL 本地 LLM 服务
vLLM VLLM_BASE_URL 自建 vLLM 服务

虽然支持上面这些主流 LLM,但是要么需要科学上网,要么太贵,反正老苏都没有,所以研究了一下怎么添加 OpenAI 兼容的 LLM

还是以 硅基流动 为例,为了区别多个自定义 API,在环境变量中使用了下面的变量

1
2
3
# 硅基流动(作为 openai-siliconflow 提供商)
OPENAI_SILLICONFOLW_API_KEY=sk-xxx
OPENAI_SILLICONFOLW_BASE_URL=https://api.siliconflow.cn/v1

目前硅基流动(SiliconFlow)注册就送 16 元的代金券

注册地址:

https://cloud.siliconflow.cn/i/NkUiXVhQ

和之前的不同,现在的券虽然多了 2 块钱,但是有有效期,不过可以用于 Pro/ 开始的模型

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 gomodel,选择第一个 enterpilot/gomodel,版本选择 latest

本文写作时,latest 版本对应为 0.1.20 版本;

docker 文件夹中,创建一个新文件夹 gomodel,并在其中建一个子文件夹 data

需要给 data 目录新增 Everyone 的读写权限,否则会导致 SQLite数据库创建失败

文件夹 装载路径 说明
docker/gomodel/data /app 存放数据库、缓存等

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8110 8080

环境

可变
OPENAI_SILLICONFOLW_API_KEY 你的硅基流动 API Key
OPENAI_SILLICONFOLW_BASE_URL 硅基流动的地址:https://api.siliconflow.cn/v1

环境变量说明:提供商的 API key 至少需要配置一个,GoModel 才能正常工作。可以配置的环境变量包括:OPENAI_API_KEYANTHROPIC_API_KEYGEMINI_API_KEYXAI_API_KEYGROQ_API_KEYOPENROUTER_API_KEYZAI_API_KEYAZURE_API_KEY + AZURE_BASE_URLORACLE_API_KEY + ORACLE_BASE_URLOLLAMA_BASE_URL 等。

更多的环境变量设置,请参考官方文档:https://github.com/ENTERPILOT/GoModel#gateway-configuration

docker cli 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 新建文件夹 gomodel 及子目录
mkdir -p /volume1/docker/gomodel/data

# 进入 gomodel 目录
cd /volume1/docker/gomodel

# 修改目录权限
chmod a+rw data

# 运行容器
docker run -d \
--name=gomodel \
--restart=unless-stopped \
-p 8110:8080 \
-v $(pwd)/data:/app \
-e OPENAI_SILLICONFOLW_API_KEY="<你的硅基流动 API Key>" \
-e OPENAI_SILLICONFOLW_BASE_URL="https://api.siliconflow.cn/v1" \
enterpilot/gomodel

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3'

services:
gomodel:
image: enterpilot/gomodel
container_name: gomodel
restart: unless-stopped
ports:
- 8110:8080
volumes:
- ./data:/app
environment:
- LOGGING_ENABLED=true
- LOGGING_LOG_BODIES=true
- LOG_FORMAT=text
- LOGGING_LOG_HEADERS=true
- OPENAI_SILLICONFOLW_API_KEY=<你的硅基流动 API Key>
- OPENAI_SILLICONFOLW_BASE_URL=https://api.siliconflow.cn/v1

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 gomodel 及子目录
mkdir -p /volume1/docker/gomodel/data

# 进入 gomodel 目录
cd /volume1/docker/gomodel

# 修改目录权限
chmod a+rw data

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

提示:如果需要更高级的功能(如 Redis 缓存、PostgreSQL 存储、MongoDB 日志),可以使用项目提供的完整 docker-compose.yaml 文件,它包含 RedisPostgreSQLMongoDBAdminerPrometheus 等额外服务。

运行

在浏览器中访问 http://<群晖IP>:8110/admin/dashboard 即可进入进入管理仪表板

进入模型 Models,在原有的模型名称前增加了 provider 的名称,所以 Pro/zai-org/GLM-5.1 现在变成了 openai-silliconfolw/Pro/zai-org/GLM-5.1

进入 API Keys

Create API Key,可以设置到期时间

这个 API Key 只显示一次

之后就不会再显示了

API 调用示例

做个 Chat Completions 测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# API call
curl http://<群晖IP>:8110/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-chat-latest",
"messages": [{"role": "user", "content": "Hello!"}]
}'

# 示例
curl http://192.168.0.197:8110/v1/chat/completions \
-H "Authorization: Bearer sk_gom_qYDDx_wObLlAjKuZ0BhZaCWx49F1sheYGJH8rugrniQ" \
-H "Content-Type: application/json" \
-d '{
"model": "openai-silliconfolw/Pro/zai-org/GLM-5.1",
"messages": [{"role": "user", "content": "你是什么模型?"}]
}'

Cherry Studio

添加提供商

输入相关信息

  • API 密钥:就是上一步我们在 GoModel 中创建的 API Key
  • API 地址:就是 GoModel 的地址

根据需要添加模型

只加了几个最新的

简单做个测试

回到首页,可以看到调用情况

而进入 Usage,可以看到模型的更精确的调用情况

注意事项

  1. 安全配置:默认情况下 GoModel 没有认证保护,强烈建议生产环境设置 GOMODEL_MASTER_KEY
  2. API key 安全:避免通过命令行 -e 参数直接传递密钥,可能泄露到 shell 历史记录,使用 .env 文件更安全
  3. 存储选择:默认使用 SQLite,适合单实例部署;高并发场景可使用 PostgreSQLMongoDB
  4. 缓存优化:可配置 Redis 实现响应缓存,结合语义缓存可达到 60-70% 的命中率
  5. 多实例部署:如需多实例运行, storage 类型需切换为 PostgreSQLMongoDB

参考文档

GoModel - High-performance AI gateway written in Go
地址:https://github.com/ENTERPILOT/GoModel

enterpilot/gomodel - Docker Image
地址:https://hub.docker.com/r/enterpilot/gomodel

GoModel Documentation
地址:https://gomodel.enterpilot.io/docs