Show HN: GoModel – 开源 Go 语言 AI 网关,体积仅为 LiteLLM 的 1/44
摘要
GoModel 是一款用 Go 编写的全新开源 AI 网关,提供统一的 OpenAI 兼容 API,支持多家模型提供商,宣称体积比 LiteLLM 小 44 倍。
查看缓存全文
缓存时间: 2026/04/21 14:58
ENTERPILOT/GOModel
源码:https://github.com/ENTERPILOT/GOModel
GoModel - 基于 Go 的高性能 AI 网关
CI (https://github.com/ENTERPILOT/GoModel/actions/workflows/test.yml)
文档 (https://gomodel.enterpilot.io/docs)
Discord (https://discord.gg/gaEB9BQSPH)
Docker 镜像 (https://hub.docker.com/r/enterpilot/gomodel)
Go 版本 (https://github.com/ENTERPILOT/GoModel/blob/main/go.mod)
用 Go 编写的高性能 AI 网关,为 OpenAI、Anthropic、Gemini、xAI、Groq、OpenRouter、Z.ai、Azure OpenAI、Oracle、Ollama 等提供统一的 OpenAI 兼容 API。
快速开始 - 部署 AI 网关
步骤 1: 启动 GoModel
docker run --rm -p 8080:8080 \
-e LOGGING_ENABLED=true \
-e LOGGING_LOG_BODIES=true \
-e LOG_FORMAT=text \
-e LOGGING_LOG_HEADERS=true \
-e OPENAI_API_KEY="your-openai-key" \
enterpilot/gomodel
只需传入所需供应商的凭证或 Base URL(至少一个):
docker run --rm -p 8080:8080 \
-e OPENAI_API_KEY="your-openai-key" \
-e ANTHROPIC_API_KEY="your-anthropic-key" \
-e GEMINI_API_KEY="your-gemini-key" \
-e GROQ_API_KEY="your-groq-key" \
-e OPENROUTER_API_KEY="your-openrouter-key" \
-e ZAI_API_KEY="your-zai-key" \
-e XAI_API_KEY="your-xai-key" \
-e AZURE_API_KEY="your-azure-key" \
-e AZURE_BASE_URL="https://your-resource.openai.azure.com/openai/deployments/your-deployment" \
-e AZURE_API_VERSION="2024-10-21" \
-e ORACLE_API_KEY="your-oracle-key" \
-e ORACLE_BASE_URL="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/v1" \
-e ORACLE_MODELS="openai.gpt-oss-120b,xai.grok-3" \
-e OLLAMA_BASE_URL="http://host.docker.internal:11434/v1" \
enterpilot/gomodel
⚠️ 不要在命令行用 -e 传密钥——会泄漏到 shell 历史和进程列表。生产环境请用 docker run --env-file .env 从文件加载。
步骤 2: 发起首次 API 调用
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{ "model": "gpt-5-chat-latest", "messages": [{"role": "user", "content": "Hello!"}] }'
搞定! GoModel 会根据你提供的凭证自动识别可用供应商。
支持的 LLM 供应商
示例模型名仅为演示,可能变动;请以供应商目录为准。功能列表示网关层支持,不代表上游模型全部能力。
| 供应商 | 凭证 | 示例模型 | 对话 | /responses | 嵌入 | 文件 | 批处理 | 透传 |
|---|---|---|---|---|---|---|---|---|
| OpenAI | OPENAI_API_KEY | gpt-4o-mini | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Anthropic | ANTHROPIC_API_KEY | claude-sonnet-4-20250514 | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| Google Gemini | GEMINI_API_KEY | gemini-2.5-flash | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Groq | GROQ_API_KEY | llama-3.3-70b-versatile | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| OpenRouter | OPENROUTER_API_KEY | google/gemini-2.5-flash | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Z.ai | ZAI_API_KEY(可配 ZAI_BASE_URL) | glm-5.1 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |
| xAI (Grok) | XAI_API_KEY | grok-2 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Azure OpenAI | AZURE_API_KEY + AZURE_BASE_URL(可配 AZURE_API_VERSION) | gpt-4o | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Oracle | ORACLE_API_KEY + ORACLE_BASE_URL | openai.gpt-oss-120b | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Ollama | OLLAMA_BASE_URL | llama3.2 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
✅ 支持 ❌ 不支持
Z.ai GLM Coding Plan 需设置 ZAI_BASE_URL=https://api.z.ai/api/coding/paas/v4。
Oracle 若上游 /models 不可用,需设置 ORACLE_MODELS=openai.gpt-oss-120b,xai.grok-3。
其他部署方式
源码运行
前置: Go 1.26.2+
- 创建
.env文件:
cp .env.template .env
- 在
.env中填写 API 密钥(至少一个)。 - 启动服务:
make run
Docker Compose
仅基础设施(Redis、PostgreSQL、MongoDB、Adminer,不构建镜像):
docker compose up -d # 或:make infra
全栈(含 GoModel + Prometheus,会构建镜像):
cp .env.template .env # 填写 API 密钥
docker compose --profile app up -d # 或:make image
| 服务 | 地址 |
|---|---|
| GoModel API | http://localhost:8080 |
| Adminer(数据库 UI) | http://localhost:8081 |
| Prometheus | http://localhost:9090 |
本地构建镜像
docker build -t gomodel .
docker run --rm -p 8080:8080 --env-file .env gomodel
OpenAI 兼容 API 端点
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/chat/completions | POST | 对话补全(支持流式) |
/v1/responses | POST | OpenAI Responses API |
/v1/embeddings | POST | 文本嵌入 |
/v1/files | POST | 上传文件(OpenAI 兼容 multipart) |
/v1/files | GET | 列出文件 |
/v1/files/{id} | GET | 获取文件元数据 |
/v1/files/{id} | DELETE | 删除文件 |
/v1/files/{id}/content | GET | 下载文件内容 |
/v1/batches | POST | 创建原生批处理(OpenAI 兼容模式;支持内联 requests) |
/v1/batches | GET | 列出批处理 |
/v1/batches/{id} | GET | 获取批处理详情 |
/v1/batches/{id}/cancel | POST | 取消批处理 |
/v1/batches/{id}/results | GET | 获取批处理结果 |
/p/{provider}/... | GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS | 供应商原生透传,返回上游原始响应 |
/v1/models | GET | 列出可用模型 |
/health | GET | 健康检查 |
/metrics | GET | Prometheus 指标(需开启) |
/admin/api/v1/usage/summary | GET | 用量汇总 |
/admin/api/v1/usage/daily | GET | 按日用量 |
/admin/api/v1/usage/models | GET | 按模型用量 |
/admin/api/v1/usage/log | GET | 用量日志分页 |
/admin/api/v1/audit/log | GET | 审计日志分页 |
/admin/api/v1/audit/conversation | GET | 单条审计日志的会话线程 |
/admin/api/v1/models | GET | 带供应商信息的模型列表 |
/admin/api/v1/models/categories | GET | 模型分类 |
/admin/dashboard | GET | 管理后台 UI |
/swagger/index.html | GET | Swagger UI(需开启) |
网关配置
GoModel 通过环境变量与可选的 config.yaml 配置,环境变量优先级更高。
详见 .env.template 与 config/config.example.yaml。
关键配置:
| 变量 | 默认值 | 说明 |
|---|---|---|
PORT | 8080 | 服务端口 |
GOMODEL_MASTER_KEY | 无 | 用于鉴权的 API 密钥 |
ENABLE_PASSTHROUGH_ROUTES | true | 开启 /p/{provider}/... 原生透传 |
ALLOW_PASSTHROUGH_V1_ALIAS | true | 允许 /p/{provider}/v1/... 别名 |
ENABLED_PASSTHROUGH_PROVIDERS | openai,anthropic,openrouter,zai | 启用的透传供应商列表 |
STORAGE_TYPE | sqlite | 存储后端(sqlite、postgresql、mongodb) |
METRICS_ENABLED | false | 开启 Prometheus 指标 |
LOGGING_ENABLED | false | 开启审计日志 |
GUARDRAILS_ENABLED | false | 开启防护栏流程 |
快速开始 - 鉴权:
默认未设置 GOMODEL_MASTER_KEY,此时 API 无保护,任何人都能调用,生产环境极不安全。强烈建议在暴露服务前设置强密钥,在 .env 或环境中添加 GOMODEL_MASTER_KEY。
响应缓存
GoModel 提供双层缓存,降低 LLM 成本与延迟。
第一层 - 精确匹配缓存
对完整请求(路径 + Workflow + 体)哈希,字节完全一致时直接返回缓存,亚毫秒级查找。
通过环境变量 RESPONSE_CACHE_SIMPLE_ENABLED 与 REDIS_URL 开启。
命中时响应头带 X-Cache: HIT (exact)。
第二层 - 语义缓存
用配置的 /v1/embeddings 对最后一条用户消息向量化,执行 KNN 搜索。语义等价的问题(如“法国首都是哪?” vs “法国的首都是什么城市?”)可共用缓存,预期命中率约 60–70%,远高于精确匹配的 ~18%。
命中时响应头带 X-Cache: HIT (semantic)。
支持向量库:qdrant、pgvector、pinecone、weaviate(设置 cache.response.semantic.vector_store.type 及对应配置)。
缓存位于防护栏/工作流补丁之后,确保缓存的是最终提示。
可用 Cache-Control: no-cache 或 no-store 跳过缓存。
测试、Lint、预提交等开发流程见 DEVELOPMENT.md。
0.2.0 路线图
Must Have
- 智能路由
- 扩展供应商:Oracle 模型通过环境变量配置,新增 Cohere、Command A、Operational、DeepSeek V3
-
预算管理:按
user_path或 API 密钥限制额度 - 可编辑模型价格,精准成本跟踪
-
完整支持 OpenAI
/responses与/conversations生命周期 - Prompt 缓存可见性:展示每条提示被供应商缓存的比例
- 防护栏强化:更好 UI、简化架构、易写自定义规则、输出侧防护栏
- 所有供应商透传,不仅当前 OpenAI & Anthropic beta
- 修复仪表盘的故障转移图表
Should Have
- 集群模式
社区
加入 Discord (https://discord.gg/gaEB9BQSPH) 与其他 GoModel 用户交流。
Star 历史
Star History 图表 (https://www.star-history.com/#enterpilot/gomodel&type=date&legend=top-left)
相似文章
@aiDotEngineer: 您的智能体现在可以训练模型。来自@mervenoyann 的观点:开源模型已经迎头赶上。GLM 5.1 在人工智能分析指数上领先……
@mervenoyann 的演讲展示了开源模型(如 GLM 5.1)已赶上闭源模型,并说明了 Hugging Face 生态系统如何让智能体训练模型、执行推理和构建工作流。
@dhruvtwt_:怎么没人聊这事?@nvidia 正免费提供约 80 款 AI 模型的托管 API
Nvidia 低调开放约 80 款免费托管 AI 模型 API,包括 MiniMax M2.7、GLM 5.1、Kimi 2.5、DeepSeek 3.2、GPT-OSS-120B 等,可直接接入 OpenClaude、Zed IDE 等主流开发工具。
@aiDotEngineer:DeepMind 开源模型家族 Gemma https://youtube.com/watch?v=_gVFUEdhCyI… 在 Gemma 4 发布后首次公开演讲中…
Google DeepMind 的 Gemma 系列开源模型下载量已突破 5 亿次,被誉为“单位比特能力最高”的开源大语言模型。
OpenAI o1 和开发者新工具
OpenAI 向 API 发布 o1 模型,具备生产就绪的功能,包括函数调用、结构化输出、视觉能力,以及比 o1-preview 低 60% 的延迟。其他开发者工具包括 Realtime API 改进、偏好微调,以及新的 Go 和 Java SDK。
OpenLumara - 一种与众不同的AI代理,从头编写,非Vibe编码。极其节省Token,系统提示非常小,专为本地模型设计。一切皆模块化。
OpenLumara是一个全新的开源AI代理框架,专为本地模型设计,强调Token效率、模块化和安全性。它从头编写,拥有小巧的系统提示,并能完全控制AI能力。