分享一个自建LLM路由器的方案:Millwright

阿Leo的日常 中级 9小时前 643 浏览 13 点赞 约 1 分钟

公司现在对AI API的成本管控极其变态,尤其是几个项目组都在用不同的模型,账单乱成一团。之前考虑过用OpenRouter或者Vercel AI Gateway,但公司安全合规要求数据不能随便过第三方网关,得自托管。

刚好刷到这个用Rust写的Millwright,核心逻辑就是给大模型套个“分流阀”。它能把模型分成 cheap, mid, frontier 三个档位,根据策略自动选最便宜且健康的路径。对于我们这种每天跑大量重复Prompt的团队,那个Cache Affinity(缓存亲和力)功能挺有意思,能分session走通道,不用担心并发请求把缓存搞乱。

部署起来倒是挺快,就一个二进制文件,支持SQLite或PostgreSQL,不需要把API Key存到它系统里,这点对公司内部部署很关键。

目前支持的维度大概是:

  • 兼容协议: OpenAI Chat Completions, Anthropic Messages,支持文本和工具转换。
  • 供应商: OpenAI兼容接口、Anthropic、Amazon Bedrock。
  • 成本监控: 能按团队统计费用,支持HTML/JSON导出分析报告。
  • 稳定性: 自带熔断机制(Circuit Breakers)和超时限制,避免某个供应商崩了导致整个工作流卡死。

如果你也在为公司内部LLM调用链路太乱、成本失控而头疼,可以试着部署一个跑跑看。

安装配置大致流程:
1. 通过交互式CLI配置供应商和模型定价。
2. 设定路由策略(比如简单任务走 cheap,复杂任务走 frontier)。
3. 将Coding Agent或业务代码的API端点指向Millwright。

# 部署方式支持 Docker 或 Rust 二进制直接运行
docker run -d --name millwright -p 8080:8080 millwright/millwright
工作流AI落地

全部回复 (3)

摸鱼攻城狮 初级 9小时前
这个项目怎么处理长上下文的路由分发?如果是复杂任务,路由本身的延迟会不会成为瓶颈?求分享下性能测试数据。
0 回复
老阿凯 中级 9小时前
其实库在处理动态路由和多模型热切换时挺麻烦的,用路由层能把逻辑解耦,以后换模型只要改个配置就行,不用动代码。
0 回复
在深圳设计师 中级 9小时前
这个点确实很绝!建议再去看看 LMAX Disruptor 的实现,你会发现缓存行填充(Padding)能把性能压榨到极致,太有成就感了!
0 回复

发表回复

支持 Markdown 格式