2作者: jmartenka11 天前原帖
嗨,HN——我开发了LunarGate,这是一个自托管的、与OpenAI兼容的LLM网关,使用Go语言编写。 之所以创建这个项目,是因为当你添加多个模型提供者、重试、回退、路由和可观察性逻辑时,这些复杂性会渗透到应用代码中。 LunarGate将这些复杂性集中到一个网关层中。 当前功能包括: - 提供者/模型路由 - 重试和回退机制 - 熔断器 - 可选的缓存和速率限制 - 热重载的YAML配置 - 可选的可观察性 - 复杂性感知路由 重要的警告:入站认证/安全性尚未达到生产级别,因此它应该在一个强制认证的代理/网关后运行。我现在正在积极处理这个问题。 我还有一个长期的路线图,但我正在努力找出在实际应用中最重要的是什么。如果你之前运行过类似的项目,我特别想知道:在将这样的网关投入生产之前,你需要哪些1-2个关键要素才能信任它? 这是一个开源项目: [https://github.com/lunargate-ai/gateway](https://github.com/lunargate-ai/gateway) 文档/网站: [https://docs.lunargate.ai/](https://docs.lunargate.ai/) [https://lunargate.ai](https://lunargate.ai)
2作者: derstruct11 天前原帖
我创建了一个 Go 语言扩展,它将 HTML 模板转换为类型化的 Go 表达式,并添加了 `elem` 原语。通过代理 gopls 并在其基础上增加额外功能和运行时包,使用自己的语言服务器来实现。 从核心理念上看,它与 `templ` 相似——编译为 Go,拥有自己的扩展名(`.gox`)、语言服务器、命令行工具和 IDE 插件,可以写入 `io.Writer`。但也有许多不同之处。 1. HTML 被支持为一等公民的 Go 表达式。例如,以下语法是有效的:`hello := <h1>Hello World!</h1>`。此外,`elem` 关键字的作用类似于 `templ`,但支持匿名函数: ``` var f = elem() { <h1>Header</h1> } ``` 2. 我旨在提供更优越的 LSP 体验,我的语言服务器架构不同,这使我能够启用 LSP 编辑(重命名功能有效!)并支持无缝的 LSP 导航(跳转到定义、调用等——不会指向生成的文件)。同时,它自动管理生成的文件(在你输入时编译,在你保存时写入,无需手动运行 `generate` 命令)。 3. 改进了解析稳定性。我基于扩展的 Go tree-sitter 语法树语法构建了解析器,并使语法更加独特。在实践中,这意味着在编辑过程中提供更好的开发者体验,并减少伪影(不会因普通文本中的关键字而触发)。 4. 不同的原语集合。我有 `gox.Elem` 作为具体类型,以及带有 `Main() gox.Elem` 函数的 `gox.Comp` 接口。这使得在基本的 `gox.Elem` 上扩展功能集成为可能,同时允许你编写组件而不需要降低到 `Render(ctx, io.Writer)` 接口。 5. 可扩展的渲染管道。在 `GoX` 中,HTML 被转换为类型化作业的流,可以以任何方式进行预处理。例如,你可以添加自己的元素 `<eb>`,并在渲染时将其转换为 `<span class="font-extrabold">`。 此外,它还有各种可扩展性点,比如你可以像常规 Go 值一样读取和修改属性。甚至还有一个特殊接口 `gox.Modify`,可以在渲染时读取和设置/取消设置任何属性:`<svg (styles.NormSVG) ...>` 可以设置 `fill`、`stroke` 并取消设置现有的宽度/高度。 我基本上试图解决我在使用 templ 时遇到的所有问题,并将整体设计转向更好的可扩展性,保持核心的简约,我认为我成功了。 在原始性能方面,templ 每次都会超过 `GoX`。我添加的额外层仍然是额外的层。它在微秒级别,无法想象它会成为瓶颈,但无论如何。 附言:我主要是为了支持我的服务器驱动的 web 应用程序运行时/框架而构建它,但它也可以完美独立工作,并且与 templ 兼容。
1作者: G_S11 天前原帖
嗨,HN, 我制作了《堆叠》,这是一件由粘土板、金属和电子元件构成的雕塑。 这件作品反映了数字艺术中知识的层次:原材料、工艺、电路、代码和算法。在雕塑的顶部放置了一台ESP32设备,每15秒广播一个新的Wi-Fi网络名称。在附近的手机和笔记本电脑上,这些名称会出现在可用网络列表中,形成一首支离破碎的诗。 由于设备扫描网络的方式不同,每个人看到的序列略有不同。 我对粘土这种作为知识存储的最古老媒介之一与无线网络之间的对比感兴趣,无线网络是看不见的、不稳定的,且容易被忽视。这件作品还反映了“堆叠”的概念:在创作数字作品时涉及的众多工具、系统和继承技术的层次。
3作者: lemonade31111 天前原帖
我创建了 Polter: <a href="https://github.com/myDataValue/polter" rel="nofollow">https://github.com/myDataValue/polter</a> <p>这是一个开源的 React 库,允许 AI 代理通过使用您实际的用户界面来执行任务,而不是通过 API 调用。</p> <p>为什么要这样做?因为这解决了许多应用程序中用户不理解如何使用您产品的问题,目前大多数代理只是 API 调用。</p> <p>通过这种方式,用户可以隐性地理解您的用户界面,从而减少支持邮件和用户引导的需求。</p> <p>目前市场上的大多数解决方案都是为外部网站构建的,使用不稳定的网页抓取工具、公共 DOM 等等。而 Polter 则存在于您的 React 树中,连接到您的 AI/LLM websocket,并始终有效工作。</p> <p>试试看,告诉我您的想法。</p> <p>谢谢!</p>