
【免费下载链接】GoModelAI gateway / AI control plane / AI proxy written in Go. Unified OpenAI-compatible and Anthropic-compatible API for OpenAI, Anthropic, Gemini, Groq, xAI, Ollama, vLLM and more. A LiteLLM alternative with observability, guardrails, streaming, cost tracking, intelligent routing, sticky sessions, failover, real-time logs and usage tracking. Prod ready.项目地址https://gitcode.com/gh_mirrors/go/GoModel点击查看免费下载GoModel 是一个用 Go 编写的 AI 网关AI Gateway它的虚拟模型Virtual Models功能允许你自定义模型名称既可以做别名映射一个稳定名字指向真实模型也可以做负载均衡一个名字按策略分发到多个模型。本文将从新手视角讲清楚虚拟模型能做什么、五种路由策略怎么选以及它背后一张表、两个阶段的统一实体设计。1. 什么是虚拟模型别名与访问策略的统一实体一句话定义虚拟模型是你定义的模型而不是供应商Provider发布的模型。GoModel 判断一行配置属于哪种虚拟模型只看它有没有targets目标模型类型判断条件行为Redirect重定向/别名有targets把请求里写的名字改写为真实模型1 个目标是别名多个目标就是负载均衡Access Policy访问策略无targets不给新名字而是对已有模型做访问控制按user_path限制或整体禁用这个没有 role 字段、行为由数据推导的设计正是统一实体的精髓存储、服务层、管理 API 和仪表盘共用同一套代码只是同一张virtual_models表喂给了流水线的两个不同阶段。 图中就是仪表盘的 Models 页面带ALIAS徽标的行就是虚拟模型可以直观看到anthropic/claude-3-haiku-20240307被影子映射到了claude-sonnet-4-5。核心类型定义与角色推导见 internal/virtualmodels/types.goIsRedirect与Kind函数。2. 别名映射稳定名称、影子模型与 A/B 测试别名映射是虚拟模型最基础也最高频的用法解决的核心痛点是应用代码里的模型名不该绑定具体供应商。稳定名称把regular指向anthropic/claude-sonnet-4-6把smarter指向 Opus 级别模型。应用只需要发{ model: regular, messages: [] }想升级模型时只需在网关侧改一下指向应用代码一行不用动。影子模型Shadow虚拟模型的source可以和某个真实模型同名从而影子掉它——应用照发anthropic/claude-opus-4-6GoModel 实际路由到更便宜的claude-sonnet-4-6。这是零改代码做成本优化的利器。A/B 测试把别名今天指向 Opus、明天指向 Sonnet对比应用的延迟与效果。你也可以在 Playground 里直接切换虚拟模型名称验证行为3. 负载均衡五种路由策略横向对比一个source指向多个targets时虚拟模型就变成了负载均衡器。策略由strategy字段选择策略行为适用场景round_robin默认按轮转均匀分发支持每个目标设weight加权权重 2 收到 2 倍流量均匀分摊多供应商/多模型负载cost每次请求都发给当前最便宜的目标按模型注册表的输入输出单价排序成本敏感型流量failover目标列表即优先级列表永远先打第一个可用目标它挂了才轮到下一个主备容灾adaptivePro按实测延迟、错误率、价格综合打分自动避开限流目标智能路由plugin交给名为strategy_plugin的路由策略插件决策内置cheapest_healthy可选自定义路由逻辑策略选择的核心实现在 internal/virtualmodels/balancer.go加权轮转的槽位计算见 weightedIndex。除了首次怎么选还有三个默认开启的保底机制故障转移链无论哪种策略被选中目标若遇到可重试错误请求会按声明顺序自动重试到剩余目标见 ResolveFailovers。会话保持Session Keeping同一客户端会话会粘在最初服务它的目标上保证多轮对话的提示词缓存prompt cache持续命中。不可用目标自动跳过模型被禁用、供应商宕机或当前调用者无权使用所有策略都会自动绕开——某个模型配额耗尽时禁用它流量会立刻转移到其他目标。4. 设计揭秘为什么要做统一实体理解这一节你会明白这个功能为什么看起来简单、实现却考究。设计决策记录在 docs/adr/0008-virtual-models.md。4.1 问题两套系统同一个概念早期 GoModel 里别名映射新名字到真实模型和访问覆盖按 user_path 控制已有模型是两张表、两个服务、两组管理端点——但它们本质上是同一个运维概念运维定义的模型。分裂导致user_path匹配逻辑被重复实现还因缺少数据库迁移引发过真实 bug。4.2 方案一张表两个阶段统一后所有虚拟模型持久化在virtual_models表以source为唯一键加载时经 buildSnapshot 构建内存快照并做图校验请求期全程只读快照无需加锁读存储。解析遵循两阶段规则见 resolve.goResolver早阶段请求的模型名若精确匹配某重定向的source改写到其目标负载均衡在此选点Authorizer晚阶段对已解析出的真实选择器做user_paths访问裁决。两类行永远不会跨阶段干扰重定向的新名字不会命中策略行策略行没有目标所以解析器直接忽略。4.3 进阶虚拟模型可以链式组合重定向的目标可以再指向另一个虚拟模型把星形结构变成 DAGvirtual_models: # 共享底座小模型轮转池 - source: cheap targets: - { model: openai/gpt-4o-mini } - { model: groq/llama-3.3-70b } # 分层叠加cheap 池占 3 份权重与高端模型并列 - source: smart-frugal strategy: round_robin targets: - { model: cheap, weight: 3 } - { model: openai/gpt-4o }链式解析逐层进行外层策略选中cheap这条腿后cheap再用自己的策略选具体模型会话保持在每一层都生效。校验是图属性环被拒绝、链深最多 8 层且被其他虚拟模型引用的条目不能删除或改名。5. 快速上手三种方式声明虚拟模型 三种方式功能等价按团队习惯选择方式一仪表盘推荐新手Models → New virtual model填Target model即为别名/负载均衡器留空则为访问策略。目标列表支持拖拽手柄☰排序——对failover策略来说顺序就是优先级。方式二config.yaml推荐 IaC 团队virtual_models: # 普通别名 - source: regular target: anthropic/claude-sonnet-4-6 # 加权轮转负载均衡 - source: smart strategy: round_robin targets: - { model: openai/gpt-4o, weight: 2 } - { model: anthropic/claude-sonnet-4-6 }声明式条目在启动时生效覆盖管理库中同source的行且在仪表盘显示为只读带 Config 徽标。字段定义见 config/virtualmodels.go。方式三VIRTUAL_MODELS 环境变量把同一列表以 JSON 数组形式注入如VIRTUAL_MODELS[{source:smart,strategy:cost,targets:[...]}]同名时覆盖 YAML 配置适合容器环境快速调整。此外还有 Admin APIGET/PUT/DELETE /admin/virtual-models路由定义见 internal/admin/routes.go已统一取代旧的/admin/aliases和/admin/model-overrides端点。6. 实践建议清单给每个核心模型起业务语义别名regular/smarter/cheap把供应商细节隔离在网关层成本优化用cost策略容灾用failover策略把主备关系显式写进目标顺序多轮对话场景保持会话开启默认开启让提示词缓存持续命中配额耗尽时禁用具体模型即可所有策略会自动把流量移交给其他目标完整文档见 docs/features/virtual-models.mdx含 Slowdown 人工延迟、/v1/models展示控制等进阶配置。虚拟模型把别名、访问控制、负载均衡、故障转移四个曾经独立的概念收敛为一个统一实体——这正是 GoModel 作为 LiteLLM 替代方案在模型路由上的差异化设计。赞分享【免费下载链接】GoModelAI gateway / AI control plane / AI proxy written in Go. Unified OpenAI-compatible and Anthropic-compatible API for OpenAI, Anthropic, Gemini, Groq, xAI, Ollama, vLLM and more. A LiteLLM alternative with observability, guardrails, streaming, cost tracking, intelligent routing, sticky sessions, failover, real-time logs and usage tracking. Prod ready.项目地址https://gitcode.com/gh_mirrors/go/GoModel点击查看免费下载相关推荐awesome-public-datasets35 个领域、近 980 个开放数据集速览awesome public datasets35 个领域、近 980 个开放数据集速览 数据没找齐数据分析的活儿就卡在第一步。公司里一位做数据多年的老哥最文档知识库数据集Semantic Router vLLM 端点配置实战单端点、加权负载均衡与 preferred_endpoints 模型映射Semantic Router vLLM 端点配置实战单端点、加权负载均衡与 preferred_endpoints 模型映射 本指南基于 semantic后端API网关模型推理服务AI AgentCANN ops-transformer MoeUpdateExpert 算子详解MoE 负载均衡映射与专家剪枝实战指南CANN ops transformer MoeUpdateExpert 算子详解MoE 负载均衡映射与专家剪枝实战指南 MoeUpdateExpert 是算子库人工智能大模型深度学习CANNAscend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考