本周有趣的项目、工具和库
1、backon
使重试像 Rust 提供的内置功能一样。
- 简单:就像一个内置功能:your_fn.retry(ExponentialBuilder::default()).await。
- 灵活:同时支持阻塞和异步功能。
- 功能强大:允许控制重试行为,如when和notify。
- 可定制:支持自定义重试策略,如指数、常数等。
2、DisTrO
这是 DisTrO(互联网分布式训练)的存储库,它是一类低延迟分布式优化器,可将 GPU 间通信要求降低三到四个数量级。
3、klee
KLEE 符号执行引擎
KLEE是一个建立在 LLVM 编译器基础架构之上的符号虚拟机。目前,有两个主要组件:
- 核心符号虚拟机引擎;负责执行支持符号值的 LLVM 位码模块。它由 lib/ 中的代码组成。
- 面向支持 uClibc 的 POSIX/Linux 仿真层,另外还提供对使操作系统环境的部分符号化的支持。
此外,还有一个简单的库,用于在本机代码上重放计算输入(用于封闭程序)。还有一个更复杂的基础架构,用于重放为 POSIX/Linux 仿真层生成的输入,该基础架构负责在与计算测试输入匹配的环境中运行本机程序,包括设置文件、管道、环境变量和传递命令行参数。
4、wayfind
适用于 Rust 的快速、灵活的路由器。
wayfind尝试弥合现有 Rust 路由器选项之间的差距:
- 快速路由器,缺乏灵活性
- 灵活的路由器,速度不够
5、Go-HtmX
Go-HTMX 提供了一个框架,使用 Go(而不是 JavaScript)为 Web 应用程序编写交互式 UI 组件。
该框架将负责状态管理、HTMX 重新加载等,一旦组件完成,无需编写任何 HTML 即可构建完整的 Web 应用程序。
Go-HTMX 可以使用 Templ 组件。
https://go.dev/
https://htmx.org/
https://templ.guide/
6、DebateGPT
该项目展示了一个自主的人工智能代理,旨在利用大型语言模型 (LLM) 和语音识别/合成技术的力量参与辩论。该代理能够以结构化的方式理解和回应辩论,在辩论的各个阶段(从开始到结束)提供支持。它是一种创新工具,可以通过提供战略性论点、反驳和反驳来显著提高辩论的质量,所有这些都是由注重逻辑一致性和说服力的人工智能生成的。
该项目的主要用途是作为个人或团队辩论的对手,尤其是在教育或公开演讲环境中。当参与者希望通过逻辑推理和基于证据的反驳来加强他们的论点时,它尤其有用。通过利用人工智能,该工具确保辩论者能够训练自己更有效地提出论点,为他们提供结构良好、逻辑合理且有说服力的回应。
特征
- 语音识别:利用speech_recognition库将口语转换为文本,实现辩论中的实时互动。
- 文本到语音:用于pyttsx3将文本响应转换为口头语言,促进辩论中的听觉参与。
- 辩论结构:遵循预定义的辩论结构,包括介绍、提出论点、反驳、反驳、总结和结论。
- AI 生成的响应:利用 LLM 的强大功能来生成具有上下文相关性、逻辑合理且具有说服力的响应。
- 阶段检测:能够确定辩论的当前阶段并提出适当的回应或行动。
7、ChartDB
免费开源数据库图表编辑器,只需一次查询即可可视化和设计您的数据库。
ChartDB 是一款功能强大的基于 Web 的数据库图表编辑器。只需一个“智能查询”即可立即可视化您的数据库架构。自定义图表、导出 SQL 脚本并访问所有功能 - 无需帐户。在此体验无缝数据库设计。
它的作用:
- 即时模式导入 运行单个查询即可立即以 JSON 格式检索数据库模式。这使得可视化数据库模式变得非常快,无论是用于文档、团队讨论,还是仅仅为了更好地理解数据。
- 人工智能驱动的导出功能,轻松迁移 我们的人工智能驱动的导出功能允许您以您选择的方言生成 DDL 脚本。无论您是从 MySQL 迁移到 PostgreSQL 还是从 SQLite 迁移到 MariaDB,ChartDB 都可以通过提供针对您的目标数据库量身定制的必要脚本来简化流程。
- 交互式编辑 使用我们直观的编辑器微调您的数据库架构。轻松进行调整或注释,以更好地可视化复杂结构。
8、MiniJinja
MiniJinja 是与 Jinja/Jinja2 兼容的 Rust 功能强大但依赖性极小的模板引擎。
MiniJinja 是一个功能强大但极简的 Rust 依赖模板引擎,它基于 Python 的Jinja2模板引擎的语法和行为。
它在serde 之上实现,并且只将其作为单个必需依赖项。它支持Jinja2 的一系列功能, 包括继承、过滤器等。目标是应该能够在 Rust 程序中使用一些模板,而不必担心为了一个小问题而引入复杂的依赖项。此外,它试图不重新发明某些东西,而是与现有技术保持一致,以利用现有的编辑器集成生态系统。
9、ruroco
ruroco 是一款可让您通过发送 UDP 数据包在服务器上执行命令的工具。
ruroco 是一个让你通过发送 UDP 数据包在服务器上执行命令的工具。
该工具由 3 个二进制文件组成:
- client:在你的笔记本/电脑上运行并发送 UDP 数据包
- server:接收 UDP 数据包并确保其有效
- commander:如果有效,则运行由 UDP 数据包的数据编码的命令
命令是在服务器端配置的,因此客户端没有定义要执行什么,它只能从现有命令中进行选择。
安全
- 客户端向服务器发送 UDP 数据包,服务器从不响应它 ->端口扫描对对手没有帮助
- 从客户端发送到服务器的数据使用RSA加密
- 客户端仅定义要执行的命令,命令保存在服务器上-> 客户端可以选择命令但不能定义它
- 以尽可能少使用操作系统权限的方式运行服务器软件
- 通过将服务器收到的每个数据包添加到阻止列表来提供重放保护
- (正在开发)DoS 保护
10、buffdb
为多路复用而构建的嵌入式存储。 智能机器不需要读取 JSON,只需要协议缓冲区。 世界上第一个 MODMS(面向机器的数据库管理系统),支持 RocksDB、SQLite 和 DuckDB 作为后端。
BuffDB 是一个轻量级、高性能的 gRPC 持久层,使用 Rust 编写。使用 SQLite 后端和动态链接时,二进制文件大小不到 2 MiB。它旨在用于带宽有限且性能至关重要的环境。Protobuf 是首选的消息传递格式,但计划使用其他格式。
要将 BuffDB 添加到您的 Rust 项目,请运行cargo add buffdb。
11、graphiti
构建和查询动态、时间感知的知识图谱
Graphiti 构建动态、时间感知的知识图谱,表示实体之间随时间变化的复杂关系。Graphiti 采集非结构化和结构化数据,并可使用时间、全文、语义和图形算法方法的融合来查询生成的图形。
Graphiti 可帮助您创建和查询随时间演变的知识图谱。知识图谱是一个相互关联的事实网络,例如“Kendra 喜欢阿迪达斯鞋”。每个事实都是一个“三元组”,由两个实体或节点(“Kendra”、“阿迪达斯鞋”)及其关系或边(“喜欢”)表示。知识图谱已被广泛用于信息检索。Graphiti 的独特之处在于它能够自主构建知识图谱,同时处理不断变化的关系并维护历史背景。
使用 Graphiti,您可以构建 LLM 应用程序,例如:
- 助手从用户交互中学习,将个人知识与来自 CRM 和计费平台等业务系统的动态数据融合。
- 自主执行复杂任务的代理,通过来自多个动态源的状态变化进行推理。
Graphiti 支持销售、客户服务、健康、金融等领域的广泛应用,使助理和代理能够进行长期回忆和基于状态的推理。
为什么选择 Graphiti?
我们对微软的 GraphRAG 很感兴趣,它扩展了 RAG 文本分块,使用图形更好地模拟文档语料库,并通过语义和图形搜索技术提供这种表示。然而,GraphRAG 并没有解决我们的核心问题:它主要是为静态文档设计的,本身并不处理数据的时间方面。
Graphiti 从一开始就被设计用于处理不断变化的信息、混合语义和图形搜索以及扩展:
- 时间感知:跟踪事实和关系随时间的变化,实现时间点查询。图边缘包括时间元数据,用于记录关系生命周期。
- 情景处理:将数据作为离散情景进行摄取,维护数据来源并允许增量实体和关系提取。
- 混合搜索:结合语义和 BM25 全文搜索,并能够根据与中心节点(例如“Kendra”)的距离对结果重新排序。
- 可扩展:专为处理大型数据集而设计,通过并行化 LLM 调用进行批量处理,同时保留事件的时间顺序。
- 支持多种来源:可以提取非结构化文本和结构化 JSON 数据。
12、picows
picows是一个高性能 Python 库,专为构建 asyncio WebSocket 客户端和服务器而设计。它采用 Cython 实现,速度和效率出众,超越其他流行的 WebSocket Python 库。
流行的 WebSocket 库试图提供高级接口。 它们负责超时、流量控制、可选的压缩/解压缩、从帧中组装 WebSocket 消息以及实现异步迭代接口。 这些功能通常是用纯 Python 实现的,即使报文很小、没有碎片(每个 WebSocket 框架都是最终的)且未压缩,也会带来很大的成本。 异步迭代接口是使用 Futures 实现的,这给事件循环增加了额外的工作并带来了延迟。 此外,并不总是可以检查是否有更多信息已经到达;有时,只有最后一条信息才重要。
13、microrabbit
MicroRabbit 是一个用于与 RabbitMQ 配合使用的轻量级异步 Python 框架。它简化了设置 RabbitMQ 消费者和发布者的过程,使构建微服务和分布式系统变得容易。
特征
- 使用异步消息处理asyncio
- 简单的基于装饰器的消息路由
- 用于模块化代码组织的插件系统
- 易于使用的客户端配置
- 内置日志记录支持
14、gigi
Gigi 是一款专为快速原型设计和快速开发实时渲染技术而设计的软件。它适合专业人士、研究人员、学生和业余爱好者使用。
目标是允许以思维的速度工作,然后使用各种 API 或引擎轻松地在实际应用程序中使用所创建的内容。
Gigi 由三部分组成:
- 编辑器 - 创作渲染技术
- 查看器——调试并分析技术
- 编译器——为该技术生成像人类一样的代码
根文件夹中将有三个可执行文件:
- GigiEdit——这是编辑器。
- GigiViewerDX12 — 这是查看器。
- GigiCompiler——这是命令行界面编译器。
15、django-cotton
将基于组件的设计引入 Django 模板。
- 文档站点 + 演示:django-cotton.com
Cotton 的目标是克服django 模板系统中存在的某些限制,当我们想要应用现代实践以模块化和可重用的方式组合 UI 时,这些限制阻碍了我们。
主要特点
- 现代 UI 组合:高效组合和重用 UI 组件。
- 与 Django 互操作: Cotton 仅增强了 django 现有的模板系统(不需要 Jinja)。
- 类似 HTML 的语法:由于组件标签类似于 html 标签,因此可以获得更好的代码编辑器支持和生产力。
- 最小开销:使用动态缓存编译为本机 Django 组件。
- 封装 UI:将布局、设计和交互保存在一个文件中(尤其是与 Tailwind 和 Alpine.js 配对时)
- 赞美 HTMX:创建智能组件,减少重复并增强可维护性。
16、csv_trimming
CSV Trimming是一个 Python 软件包,旨在将杂乱的 CSV(从网站、旧系统或管理不善的数据中获取的 CSV)转换为干净、格式良好的 CSV,只需一行代码即可完成。无需复杂的设置或大型语言模型。它简单、直接,通常可以完成工作。