8作者: yannranchere2 个月前
大家好,HN! 如果你想将你的智能体连接到数据库(例如,构建数据分析师聊天机器人或任何类型的智能体应用),目前你有两个选择:SQL MCP 服务器或语义层。 SQL MCP 是最容易设置的方案,特别是如果你还有一个智能体可以更新的 .md 知识库。但它很快就会变得非常混乱,尤其是在交互很多或数据库很大的情况下。如果你想了解这些数字的来源,生成的 SQL 很难审查,而且相关的查询也很难对齐和比较。 自然的替代方案是语义层,它是一个关于哪些数据可用/有用的清单(数据模型),以及一个使用结构化 DSL 查询它的接口——通常是一个度量、维度、过滤器列表,并处理连接等。 当我们在 Motley 需要一个语义层来连接到我们客户的数据时,我们首先选择了 Cube,并为多租户和动态更新模型进行了定制。我们很快遇到了一些限制,这让我们意识到现有的语义层并不是为此目的而构建的:它们仍然是 BI 世界的一部分,在那里你想要一个高效的后端,用于一组本质上是静态的、由人工策划的仪表板,而智能体需要通过迭代来找到答案,并在过程中学习。这就是我们构建 SLayer 第一个版本的时候,现在它已经开源了。 使用 SLayer MCP 或 CLI,智能体(和人类)可以: - 探索模型,运行查询,连接到多个数据库 - 编辑列/度量或创建新的列/度量 - 从 SQL 或其他模型的查询中创建自定义模型 - 从交互中学习:保存和检索与模型、列或查询相关的自然语言记忆,以形成知识库 智能体可以演进语义层,重用过去交互的结果,并在未来减少错误。 更多功能: - 从你的数据库模式自创建模型,实现快速启动 - 可嵌入性——不需要运行服务器 - 用于使用数据框进行数据分析的 Python 客户端 - 模式漂移检测和处理 - 具有表现力的 DSL,具有紧凑、自然的表示,用于任意深度的多阶段查询、自定义聚合、时间偏移、组合来自多个模型的指标,以及其他在原始 SQL 中难以正确实现的功能 路线图:访问控制、缓存等。 代码库:[https://github.com/MotleyAI/slayer](https://github.com/MotleyAI/slayer) 文档:[https://motley-slayer.readthedocs.io/en/latest/](https://motley-slayer.readthedocs.io/en/latest/)