Локальный трейсинг LLM-пайплайна: opensmith как ответ на «слепую» отладку RAG

На Dev.to Shivnath Tathe описывает кейс: за предыдущий месяц ушло $200 на токены OpenAI при отладке RAG pipeline, без ясности, какой шаг тратил бюджет и где рвётся цепочка. В итоге он собрал opensmith — по его же формулировкам local-first LLM pipeline tracer и альтернативу LangSmith, чтобы не отправлять промпты в облако ради диагностики. https://dev.to/shivnathtathe/i-built-a-local-first-alternative-to-langsmith-after-spending-200-debugging-a-pipeline-i-couldnt-mpm
Публикация датирована 12 мая 2026 года (в источнике указано время 05:23 UTC). Ниже — сжатое изложение заявленных возможностей и акцентов по тексту той же страницы: в извлечённом материале нет отдельных ссылок на PyPI или GitHub, а точная лицензия проекта в доступном фрагменте не фигурирует.
От стоимости токенов к локальной наблюдаемости
Когда цепочка retrieval → generation растёт, без полноценного трейсинга виден счёт у провайдера, но не карта вызовов — где задержка, как токены распределяются по шагам, что ушло в ошибку. По логике заметки именно этот разрыв автор связывает с нежеланием выносить содержимое промптов в облако ради инструментов вроде LangSmith и переносит наблюдаемость на машину разработчика.
Формулирует контраст так: LangSmith полезен, но путь «отладка через облачный след» для локальной работы оказался неприемлемым; opensmith в той же подаче задуман как «zero cloud» и «zero setup» — с упором на то, что данные остаются локально.
В этой же логике автор противопоставляет облачный след LangSmith и локальное хранение данных о вызовах модели — без переноса промптов наружу ради диагностики.
Установка, декоратор @trace и контур пайплайна
В тексте материала базовая установка — через экосистему Python:
pip install opensmith
Трейсинг предлагается навешивать декоратором после импорта trace из пакета. В примере из публикации фигурирует функция pipeline с шагами в духе получения документов и генерации ответа — в терминологии автора это близко к паре retrieve / generate, то есть к привычному RAG-скелету без привязки к конкретному фреймворку оркестрации.
Что попадает в трейс и зачем это для LLM-стека
По перечню на той же странице инструмент фиксирует:
- имя функции, входы и выходы;
- задержку (latency) в миллисекундах;
- использование токенов по шагам и оценку стоимости;
- ошибки со stack trace;
- связь parent–child для вложенных вызовов.
Для практики с большими языковыми моделями это ближе к «следу инференса», чем к логам уровня приложения: видно, где именно всплеск задержки или расход токенов, а не только итоговый ответ ассистента.
Локальный интерфейс без аккаунта
Для просмотра трасс в материале предлагается команда opensmith ui: интерфейс поднимается на localhost:7823, с live WebSocket, поиском, фильтрами и графиками, аккаунт при этом не требуется. В блоке про версию v0.1.5 добавлено, что при занятом порте инструмент подбирает следующий свободный — меньше трения при локальной разработке агентов и RAG-сервисов.
Как автор сопоставляет opensmith с LangSmith
В публикации приведена сравнительная таблица; ниже — передача смысла формулировками автора, без оценки маркетинговых ярлыков:
| Аспект | LangSmith (как в тексте) | opensmith (как в тексте) |
|---|---|---|
| Настройка | облачный аккаунт | pip install |
| Данные | уходят в облако | целиком локально |
| Фреймворк | лучше всего с LangChain | любой Python-код |
| Стоимость | free, затем paid | «free forever» |
Для читателя со своим Python-стеком под LLM, который избегает облачного контура наблюдаемости, заметным отличием выглядит заявление о «любом Python» против экосистемной привязки.
Релиз v0.1.5: бюджет токенов, CLI и стартовый конфиг
В разделе про v0.1.5 автор акцентирует контроль расхода токенов: в примере фигурирует декоратор вида @trace(token_budget=1000) и иллюстративный вывод о превышении бюджета. Для фильтрации записей из командной строки приведён образец opensmith traces с аргументами в духе запроса по тегу rag, статусу ошибок и метке production.
Также описана команда opensmith init, создающая в текущей директории файл opensmith.json — явный локальный конфиг там, где не хотят SaaS ради одного JSON с настройками трейсинга.
Autopatch и интеграции с клиентами моделей и векторными хранилищами
Отдельный блок посвящён autopatch: импорт from opensmith import autopatch и вызов вроде autopatch(only=["openai", "qdrant"]). В перечне supported на той же странице названы OpenAI, Anthropic, LiteLLM, Qdrant, ChromaDB и Pinecone. Для разработчика это сигнал, что обёртка заточена под типичный набор SDK для LLM и векторного поиска, а не под одного провайдера.
Цифры «через пять дней» — пометка о раннем отклике, не метрика площадки
В конце автор приводит блок «Stats after 5 days»: «1,500+ PyPI downloads» и «16 GitHub stars», с формулировкой про органический рост — как в исходном тексте. Отдельных URL на репозиторий или страницу пакета в извлечённом материале нет; без нового источника эти числа в собственных выводах разумно трактовать как самооценку автора, а не как независимый бенчмарк.
Источники
- Shivnath Tathe, I Built a Local-First Alternative to LangSmith After Spending $200 Debugging a Pipeline I Couldn't See (Dev.to). URL: Dev.to — дата обращения: 2026-05-12, 09:03 UTC.