章节 01
导读 / 主楼:Augur:面向生产的智能LLM推理网关,实现请求感知路由与自适应学习
Augur是一个用Go语言编写的开源LLM推理网关,它解决了多模型部署中的核心难题:如何为每个请求选择最合适的后端。项目支持OpenAI、Anthropic及兼容OpenAI的本地服务器,提供基于策略、健康状态、延迟、成本和实际结果学习的智能路由能力。
正文
Augur是一个用Go语言编写的开源LLM推理网关,它解决了多模型部署中的核心难题:如何为每个请求选择最合适的后端。项目支持OpenAI、Anthropic及兼容OpenAI的本地服务器,提供基于策略、健康状态、延迟、成本和实际结果学习的智能路由能力。
章节 01
Augur是一个用Go语言编写的开源LLM推理网关,它解决了多模型部署中的核心难题:如何为每个请求选择最合适的后端。项目支持OpenAI、Anthropic及兼容OpenAI的本地服务器,提供基于策略、健康状态、延迟、成本和实际结果学习的智能路由能力。
章节 02
章节 03
在大语言模型(LLM)迅速普及的今天,调用模型本身已经变得相对简单——无论是通过OpenAI的API、Anthropic的Claude,还是本地部署的vLLM或Ollama,开发者都能快速集成模型能力。然而,真正的挑战在于如何为每个请求选择正确的后端。
不同的模型在成本、延迟、质量和能力上存在显著差异。GPT-4.1-nano可能足够处理简单的闲聊,但面对复杂的推理任务时,可能需要GPT-4.1甚至Claude 3.5 Sonnet。更糟糕的是,模型性能会随时间波动,某些后端可能出现故障或变慢。手动管理这些复杂性几乎是不可能的。
这就是Augur诞生的原因——一个自托管的Go语言推理网关,它智能地将请求路由到最合适的后端,同时强制执行延迟、成本、错误率和质量限制,并从实际结果中学习优化策略。
章节 04
Augur定位为一个请求感知的LLM网关,它位于客户端和多个模型后端之间,提供统一的OpenAI兼容API接口(/v1/chat/completions和/v1/embeddings)。
章节 05
章节 06
理解Augur的最佳方式是跟踪一个请求的完整生命周期:
客户端 → HTTP API → 数据平面 → 路由器/控制器 → 后端适配器 → 模型提供商
章节 07
请求解析:internal/httpapi解析OpenAI兼容的请求格式,提取请求类型(chat/reasoning/coding/embedding)和客户端提示
路由匹配:internal/dataplane根据配置的路由规则匹配候选后端集合。路由可按任务类型、租户、用户层级等条件匹配
多层过滤:数据平面依次应用以下过滤器:
金丝雀分配:如果路由配置了金丝雀规则,按百分比将部分请求分配给候选后端
路由选择:路由器从剩余候选中选择一个后端。Augur支持多种策略:
故障回退:如果选中的后端在返回完整响应前失败,Augur会尝试回退链中的下一个后端
影子金丝雀:可选地调用候选后端但不返回其响应,用于收集性能数据
请求执行:后端适配器将请求发送到实际的模型提供商或本地服务器
响应增强:返回的响应包含丰富的元数据头:
X-Augur-Backend:实际处理请求的后端X-Augur-Route:匹配的路由名称X-Augur-Fallback-Count:回退尝试次数X-Augur-Attempted-Backends:所有尝试过的后端学习更新:如果启用了实时学习,internal/live会更新奖励和质量状态
章节 08
Augur的路由配置采用声明式YAML/JSON格式,支持高度灵活的匹配规则:
routes:
- name: "reasoning"
match:
task_types: ["reasoning"]
tenants: ["premium"]
candidates:
- backend: "balanced"
fallbacks:
- backend: "strong"
canary:
backend: "candidate"
percent: 5
sticky_key: "tenant_and_request"
这种设计允许运营团队为不同场景定义精细的策略:高价值推理任务使用更强的模型,普通聊天使用更便宜的模型,同时保持代码的简洁性。