介紹 opensmith:本地優先、開源的 LangSmith 替代方案

可觀測性是開發可靠的大型語言模型(LLM)應用程式的基石。雖然像 LangSmith 這樣的工具已為追蹤與除錯複雜的 LLM 管道樹立了標準,但它們往往伴隨著顯著的代價:高度依賴雲端託管基礎設施與帳號需求。對於重視資料隱私、本地開發,或僅僅想避免雲端設定摩擦的開發者而言,這些障礙可能相當限制性。

於是 opensmith 應運而生,它是一個全新開源、以本地為先的 LLM 管道追蹤器,旨在將可觀測性直接帶到開發者的機器上。透過將雲端排除在外,opensmith 讓開發者能在不需要帳號、託管服務或複雜 Docker 設定的情況下檢視追蹤。

本地優先哲學

opensmith 的主要動機是消除對雲端的依賴。正如作者 shivnathtathe 在 Hacker News 上所指出的:

我建立這個是因為 LangSmith 需要雲端帳號才能看到我自己的追蹤。

透過使用本地 SQLite 資料庫(預設儲存在 ~/.opensmith/traces.db),opensmith 確保追蹤資料永不離開使用者的機器。此做法不僅提升了隱私與安全性,也透過取消需要網路連線來檢視除錯資料的需求,簡化了開發流程。

核心功能與實作

opensmith 設計上著重於易於整合,提供三種主要方式來為 Python LLM 管道加上儀表:

1. @trace 裝飾器

為了取得細緻的控制,開發者可以使用 @trace 裝飾器包裹任何 Python 函式。此裝飾器會捕捉函式的輸入與輸出,讓追蹤資料在 RAG(檢索增強生成)管道或複雜的代理工作流程中的流向變得容易。

2. 上下文管理器

對於無法整齊放入單一函式的程式碼區塊,trace 上下文管理器允許在管道中手動記錄特定事件或變數。

3. 零程式碼 autopatch()

或許對於快速原型開發最有威力的功能是 autopatch()。此函式讓 opensmith 能自動為流行的 LLM 與向量資料庫後端加上儀表,無需手動修改業務邏輯。

目前支援的後端包括:

  • 大型語言模型(LLM): 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