介绍 opensmith:本地优先、开源的 LangSmith 替代方案

可观测性是构建可靠的大型语言模型(LLM)应用的基石。虽然像 LangSmith 这样的工具已经为追踪和调试复杂的 LLM 流水线设定了标准,但它们往往伴随着显著的取舍:高度依赖云托管基础设施和账户要求。对于那些重视数据隐私、本地开发,或仅仅想避免云环境搭建摩擦的开发者来说,这些限制可能相当束缚。

本地优先理念

opensmith 的核心动机是消除对云的依赖。正如作者 shivnathtathe 在 Hacker News 上所说:

我创建它是因为 LangSmith 需要云账户才能查看我自己的追踪记录。

通过使用本地 SQLite 数据库(默认存放在 ~/.opensmith/traces.db),opensmith 确保任何追踪数据都不会离开用户的机器。这种方式不仅提升了隐私和安全性,还通过去除对网络连接的需求,简化了开发循环。

核心特性与实现

opensmith 旨在易于集成,提供三种主要方式来为 Python LLM 流水线植入观测点:

1. @trace 装饰器

如果需要细粒度控制,开发者可以使用 @trace 装饰器包装任意 Python 函数。它会捕获函数的输入和输出,便于跟踪数据在 RAG(检索增强生成)流水线或复杂代理工作流中的流动。

2. 上下文管理器

对于不易归入单一函数的代码块,trace 上下文管理器允许手动记录流水线中的特定事件或变量。

3. 零代码 autopatch()

对于快速原型开发,autopatch() 是最强大的特性。它可以在不修改业务逻辑的前提下,自动为流行的 LLM 与向量数据库后端植入观测点。

当前支持的后端包括:

  • LLMs: OpenAI, Anthropic, LiteLLM
  • 向量数据库: Qdrant, ChromaDB, Pinecone

分析追踪:仪表盘与 CLI

追踪只有在数据易于获取时才有价值。opensmith 提供两种主要方式来交互已捕获的数据:

本地仪表盘

运行 opensmith ui,开发者即可在 http://localhost:7823 启动本地仪表盘。该界面提供可视化的方式来浏览追踪记录、检查流水线的各个步骤,并分析 LLM 调用的性能。

命令行界面(CLI)

对于更喜欢终端的用户,CLI 提供了若干实用命令:

  • opensmith traces:列出最近的追踪记录。
  • opensmith stats:提供关于追踪、步骤、令牌和费用的聚合统计。
  • opensmith clear:清空本地数据库,重新开始。

配置与灵活性

opensmith 通过当前工作目录下的 opensmith.json 文件实现高度可配置。开发者可以指定自定义数据库路径、切换控制台模式(实时在终端打印结果),以及定义哪些后端应被自动打补丁或排除。

结论

虽然仍处于 alpha 阶段(v0.1.2),opensmith 已经标志着向更易获取、私密且轻量的 LLM 可观测性迈进的一步。通过专注于“无云、零配置”的体验,它为希望获得 LangSmith 风格追踪能力,却不想承担云账户和数据外流负担的开发者提供了简化的替代方案。

Sources