开发者工具箱|编程·开发工具·资源
780 subscribers
1.43K photos
765 links
面向开发者的实用工具、库与效率技巧,写代码更快更爽。投稿 @BDHT1
#开发者 #编程工具 #效率 #程序员 · 开源总站 @GitHubTrendingHub
Download Telegram
AI 网关 Bifrost 助力 LLM 基础设施迁移

传统的支持机器人往往只绑定单一模型、单一供应商,导致供应商不可用时系统整体失效,费用难以追踪,且缓存等功能需要自行实现。Bifrost 是一款用 Go 编写的开源 AI 网关(Apache‑2.0),提供兼容 OpenAI 的统一 API,聚合 23+ 大模型供应商。通过七步可平滑迁移旧有堆栈,显著提升可用性、降低成本并实现细粒度治理。

迁移步骤:
• 在应用旁部署 Bifrost(docker run -p 8080:8080 maximhq/bifrost),仅修改客户端基址即可接入;配置备用供应商实现自动故障切换;开启语义缓存(可基于 Redis Stack),重复问答命中缓存后零 token 消耗;为各团队下发虚拟密钥,实现模型白名单
• 预算与速率限制;接入 Prometheus 监控并记录每次路由
• 缓存与 token 使用情况;最后逐批切换客户端并通过网关日志审计。实测 60 次请求中,开启缓存后实现 32 次命中,计费 token 从 9,335 降至 4,363,成本下降约 53%,且在供应商宕机时零失败请求

Bifrost 为 LLM 应用提供统一入口、容错回退、缓存加速和治理能力,迁移风险低,运维成本显著降低。


github.com/maximhq/bifrost

#开发者 #工具 #Bifrost #AI网关 #LLM #成本优化 #可用性提升 @开发者工具库频道
@DevToolboxHub
完整示例:用仓库模式与依赖注入实现 SOLID

Repository Pattern 把所有与数据源(数据库、API、文件等)的交互封装进单一类,业务层只面对简洁的接口,就像图书馆的管理员负责取书,访客只需提出请求。代码中通过 IBookRepository 定义获取、查询、预订等操作,由 BookRepository 实现具体的数据访问。

Dependency Inversion Principle(DIP)要求高层模块依赖抽象而非具体实现,本文把业务类 BookReservationService 的构造函数参数声明为 IBookRepository 与 INotificationSender 接口。依赖注入(DI)则是把具体实现(BookRepository、EmailNotificationSender、SmsNotificationSender)在容器注册后自动注入,完成 DIP 的落地。

在示例里,单一职责体现在每个类只承担数据访问、业务规则或通知发送一种职责;开放/封闭体现在新增 SmsNotificationSender 时无需修改业务代码;里氏替换保证任意实现 INotificationSender 都可直接使用;接口隔离让 INotificationSender 只保留 SendAsync 一个方法,避免臃肿。

通过这套完整的图书预订系统,开发者可以直观看到 SOLID 五大原则在实际代码中的具体体现,并快速在自己的项目中复用相同的结构。


GitHub: GitHub

#开发者 #工具 #SOLID #RepositoryPattern #DependencyInjection #CSharp #DotNet
@DevToolboxHub
本地语义Shell实验:从 Needle2 到 llama.cpp + Granite

在一次语义Shell实验中,我尝试让本地模型把自然语言指令映射到具体工具,例如“copy report.pdf to backup” → filesystem.copy。模型只需理解意图,不生成Shell命令。

最初使用 Needle2,因其体积小、专注工具调用且支持本地运行,表现还算可用。但随着工具数量从5个扩展到50个,检索阶段出现两层决策:先筛选候选工具,再在其中选出最佳。若正确工具未进入候选集,后续就无从选择。为降低风险,我尝试将工具分组(每组5个)并并行评估,但不同组的置信分数是否可比仍不明确。

此外,工具描述的细节对小模型影响极大。仅用“Moves files from one place to another.”无法区分 filesystem.copy、filesystem.navigate、filesystem.rename,需要在描述中明确说明源文件会被删除等细节。

在尝试 C++ 原生运行时遇到平台兼容问题(ARM NEON 代码在 Intel Mac 上无法直接编译),我转而使用 llama.cpp 并加载 Granite‑4‑350M。结果出乎意料:模型在常规指令上能准确选出工具,在模糊或无匹配的输入上则直接返回“未找到合适工具”,避免了错误调用。Shell 可据此提示用户重新表述或手动选择。

实验表明,模型本身的完美并非关键,关键在于系统如何处理不确定性:意图解析 → 参数校验 → 缺失参数提示 → 策略确认 → 执行。只要外层逻辑能容错,模型不必完美。


结论:
- Needle2 仍适用于特定平台(如 ARM 目标),但在工具规模扩大、跨平台集成时存在隐性成本。
- llama.cpp + Granite 在本地语义工具调用上更稳健,尤其在处理无匹配或模糊输入时表现更好。
- 关注模型的失败模式、可移植性和置信度校准,比单纯追求演示效果更重要。

#开发者 #工具 #Needle2 #llama_cpp #Granite4_350M @开发者工具库频道
@DevToolboxHub
Antigravity CLI + IoT 实现火山冲击波预警

利用日本 29 334 台 Netatmo 家庭气象站和 Gemini AI 多代理,Antigravity CLI 能在 2.5–15 分钟内提供火山冲击波提前预警,且零误报。系统通过 Google Apps Script 每 20 分钟抓取气压、温度、湿度数据,自动存入 Google Drive;随后在 CLI 环境中结合一阶连续介质力学模型和温度依赖声速计算,完成:

- 重建温度相关的冲击波速度(冬季 304.38 m/s,春季 313.27 m/s),精度达 98.5%。
- 以 1.78° 误差定位未监测火山口方位。
- 量化爆炸能量 178.8–1 041.1 吨 TNT 当量。
- 在强风暴基线下实现 0 % 假警报率。

该框架将千余住宅气象传感器视作大陆级声学天线,克服传统 100–500 km 稀疏监测站的盲区,实现对下游城市、航空、轨道等关键基础设施的提前防护。

折叠细节

• 自动化云端抓取:Google Apps Script 每 20 分钟触发 Netatmo API,持续构建长期气象档案。
• 历史事件映射:提取 2018 年 Kusatsu‑Shirane 与 Shinmoedake 两次喷发前后 24 小时窗口。
• 物理模型驱动 AI:在 Antigravity CLI 中将 Gemini AI 与 2D Lamb 波方程、Bolton 热力学、延迟‑求和波束成形等约束结合,确保模式发现符合第一性原理。
• 双层噪声过滤:速度门剔除 10–25 m/s 风噪,区域合唱测试要求多站相位一致(相似度 ≥ 0.70),实现 100 % 零误报。


该方法已在两次真实喷发中验证,可进一步扩展至火山海啸预警、盲火山口定位等场景,为智慧城市提供可扩展的行星级灾害感知能力。

#开发者 #工具 #AntigravityCLI #GeminiAI #Netatmo #火山预警 @开发者工具库频道
@DevToolboxHub