Show HN: GoModel – 开源 Go 语言 AI 网关,体积仅为 LiteLLM 的 1/44

Hacker News Top 工具

摘要

GoModel 是一款用 Go 编写的全新开源 AI 网关,提供统一的 OpenAI 兼容 API,支持多家模型提供商,宣称体积比 LiteLLM 小 44 倍。

大家好,我是 Jakub,一名驻扎在华沙的独立开发者。<p>从去年 12 月起,我和几位贡献者一起做了 GoModel。它是一个开源 AI 网关,位于你的应用与 OpenAI、Anthropic 等模型提供商之间。<p>做这个项目是为了解决我自己创业时遇到的几个痛点:<p><pre><code> - 按客户或团队追踪 AI 用量与费用 - 不改代码即可切换模型 - 更方便地调试请求链路 - 通过精确与语义缓存降低 AI 开销 </code></pre> 有什么不同?<p><pre><code> - Docker 镜像仅 ~17 MB - LiteLLM 的镜像大 44 倍以上(docker.litellm.ai/berriai/litellm:latest 在 amd64 上约 746 MB) - 请求工作流可视化,随时 inspect - 默认优先使用环境变量配置 </code></pre> 之所以现在发,是因为最近的 LiteLLM 供应链攻击。虽然对方团队处理得非常出色,但不少人开始寻找替代方案,GoModel 是其中之一。<p>官网:<a href="https://gomodel.enterpilot.io" rel="nofollow">https://gomodel.enterpilot.io</a><p>欢迎任何反馈。
查看原文
查看缓存全文

缓存时间: 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嵌入文件批处理透传
OpenAIOPENAI_API_KEYgpt-4o-mini
AnthropicANTHROPIC_API_KEYclaude-sonnet-4-20250514
Google GeminiGEMINI_API_KEYgemini-2.5-flash
GroqGROQ_API_KEYllama-3.3-70b-versatile
OpenRouterOPENROUTER_API_KEYgoogle/gemini-2.5-flash
Z.aiZAI_API_KEY(可配 ZAI_BASE_URLglm-5.1
xAI (Grok)XAI_API_KEYgrok-2
Azure OpenAIAZURE_API_KEY + AZURE_BASE_URL(可配 AZURE_API_VERSIONgpt-4o
OracleORACLE_API_KEY + ORACLE_BASE_URLopenai.gpt-oss-120b
OllamaOLLAMA_BASE_URLllama3.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+

  1. 创建 .env 文件:
cp .env.template .env
  1. .env 中填写 API 密钥(至少一个)。
  2. 启动服务:
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 APIhttp://localhost:8080
Adminer(数据库 UI)http://localhost:8081
Prometheushttp://localhost:9090

本地构建镜像

docker build -t gomodel .
docker run --rm -p 8080:8080 --env-file .env gomodel

OpenAI 兼容 API 端点

端点方法说明
/v1/chat/completionsPOST对话补全(支持流式)
/v1/responsesPOSTOpenAI Responses API
/v1/embeddingsPOST文本嵌入
/v1/filesPOST上传文件(OpenAI 兼容 multipart)
/v1/filesGET列出文件
/v1/files/{id}GET获取文件元数据
/v1/files/{id}DELETE删除文件
/v1/files/{id}/contentGET下载文件内容
/v1/batchesPOST创建原生批处理(OpenAI 兼容模式;支持内联 requests
/v1/batchesGET列出批处理
/v1/batches/{id}GET获取批处理详情
/v1/batches/{id}/cancelPOST取消批处理
/v1/batches/{id}/resultsGET获取批处理结果
/p/{provider}/...GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS供应商原生透传,返回上游原始响应
/v1/modelsGET列出可用模型
/healthGET健康检查
/metricsGETPrometheus 指标(需开启)
/admin/api/v1/usage/summaryGET用量汇总
/admin/api/v1/usage/dailyGET按日用量
/admin/api/v1/usage/modelsGET按模型用量
/admin/api/v1/usage/logGET用量日志分页
/admin/api/v1/audit/logGET审计日志分页
/admin/api/v1/audit/conversationGET单条审计日志的会话线程
/admin/api/v1/modelsGET带供应商信息的模型列表
/admin/api/v1/models/categoriesGET模型分类
/admin/dashboardGET管理后台 UI
/swagger/index.htmlGETSwagger UI(需开启)

网关配置

GoModel 通过环境变量与可选的 config.yaml 配置,环境变量优先级更高。
详见 .env.templateconfig/config.example.yaml

关键配置:

变量默认值说明
PORT8080服务端口
GOMODEL_MASTER_KEY用于鉴权的 API 密钥
ENABLE_PASSTHROUGH_ROUTEStrue开启 /p/{provider}/... 原生透传
ALLOW_PASSTHROUGH_V1_ALIAStrue允许 /p/{provider}/v1/... 别名
ENABLED_PASSTHROUGH_PROVIDERSopenai,anthropic,openrouter,zai启用的透传供应商列表
STORAGE_TYPEsqlite存储后端(sqlitepostgresqlmongodb
METRICS_ENABLEDfalse开启 Prometheus 指标
LOGGING_ENABLEDfalse开启审计日志
GUARDRAILS_ENABLEDfalse开启防护栏流程

快速开始 - 鉴权:
默认未设置 GOMODEL_MASTER_KEY,此时 API 无保护,任何人都能调用,生产环境极不安全。强烈建议在暴露服务前设置强密钥,在 .env 或环境中添加 GOMODEL_MASTER_KEY


响应缓存

GoModel 提供双层缓存,降低 LLM 成本与延迟。

第一层 - 精确匹配缓存

对完整请求(路径 + Workflow + 体)哈希,字节完全一致时直接返回缓存,亚毫秒级查找。
通过环境变量 RESPONSE_CACHE_SIMPLE_ENABLEDREDIS_URL 开启。
命中时响应头带 X-Cache: HIT (exact)

第二层 - 语义缓存

用配置的 /v1/embeddings 对最后一条用户消息向量化,执行 KNN 搜索。语义等价的问题(如“法国首都是哪?” vs “法国的首都是什么城市?”)可共用缓存,预期命中率约 60–70%,远高于精确匹配的 ~18%。
命中时响应头带 X-Cache: HIT (semantic)
支持向量库:qdrantpgvectorpineconeweaviate(设置 cache.response.semantic.vector_store.type 及对应配置)。
缓存位于防护栏/工作流补丁之后,确保缓存的是最终提示。
可用 Cache-Control: no-cacheno-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)

相似文章

OpenAI o1 和开发者新工具

OpenAI Blog

OpenAI 向 API 发布 o1 模型,具备生产就绪的功能,包括函数调用、结构化输出、视觉能力,以及比 o1-preview 低 60% 的延迟。其他开发者工具包括 Realtime API 改进、偏好微调,以及新的 Go 和 Java SDK。