- BrainTools - https://www.braintools.ru -

Разворачиваем Langfuse в Kubernetes: open-source альтернатива Langsmith

Меня зовут Арсений @kazars24 [1], я студент 2 курса магистратуры [AI] Talent Hub [2] и ML инженер в компании Вита. Последнее время я активно занимаюсь разработкой LLM-приложений, и в процессе работы столкнулся с необходимостью их мониторинга. После долгих поисков и экспериментов я нашел отличное решение — Langfuse, о котором сегодня и поговорим.

Почему Langfuse, а не Langsmith?

Разворачиваем Langfuse в Kubernetes: open-source альтернатива Langsmith - 1

Прежде чем погрузиться в технические детали, давайте разберемся, почему стоит обратить внимание [3] на Langfuse:

  1. Open Source — Langfuse является проектом с открытым исходным кодом, что предоставляет пользователям возможность изучать, изменять и улучшать его по своему усмотрению. В отличие от него, Langsmith — это закрытый проект, что ограничивает доступ к его внутреннему устройству и возможностям кастомизации.

  2. Интеграция с LangChain — Langsmith разработан командой LangChain и интегрируется только с их фреймворком. Langfuse также поддерживает интеграции с Langchain [4], но не ограничивается только этим фреймворком, что делает его более универсальным инструментом для разработчиков.

  3. Бесплатный self-hosting — Langfuse можно развернуть бесплатно, тогда как Langsmith требует платной Enterprise-лицензии.

Что такое Langfuse?

Langfuse [5] — это open-source платформа для разработки LLM-приложений, которая помогает командам совместно отлаживать, анализировать и итеративно улучшать свои решения на базе языковых моделей. Все функции платформы нативно интегрированы между собой, что существенно ускоряет процесс разработки. Исходный код доступен на GitHub [6].

Архитектура

Одно из главных преимуществ Langfuse — это его гибкая архитектура, построенная исключительно на open-source компонентах. Систему можно развернуть где угодно: локально на вашем ноутбуке, в облаке или в корпоративном дата-центре.

Схема архитектуры с официального сайта

Схема архитектуры с официального сайта [7]

Архитектура Langfuse включает в себя два основных контейнера приложений, компоненты хранения данных и опциональный API/шлюз для работы с языковыми моделями (LLM).

Контейнеры приложений

  • Langfuse Web: Это основное веб-приложение, которое предоставляет интерфейс пользователя (UI) и API для взаимодействия с Langfuse.

  • Langfuse Worker: Этот контейнер выполняет асинхронную обработку событий.

Рекомендации по размеру и масштабированию

Для обеспечения стабильной работы рекомендуется выделить как минимум 2 CPU и 4 ГБ оперативной памяти [8] для всех контейнеров Langfuse. Это минимальные требования, которые обеспечат достаточную производительность и надежность системы.

Для достижения высокой доступности следует развернуть как минимум два инстанса контейнера Langfuse Web. Это позволит распределить нагрузку и обеспечить бесперебойную работу приложения.

Для автоматического масштабирования рекомендуется добавлять новые инстансы контейнеров, когда загрузка CPU превышает 50% на любом из контейнеров. Это позволит динамически адаптироваться к изменяющимся нагрузкам и поддерживать оптимальную производительность системы.

Компоненты хранения данных

Для хранения данных используется набор специализированных компонентов:

  • PostgreSQL [9] — основная база данных для транзакционных операций;

  • Clickhouse [10] — высокопроизводительная OLAP БД, где хранятся трейсы, наблюдения и оценки;

  • Redis [11] — быстрое in-memory хранилище для очередей и кэширования;

  • S3/Blob Storage [12] — объектное хранилище для входящих событий, мультимодальных данных и больших экспортов.

Опциональный LLM API/шлюз

Langfuse предоставляет возможность интеграции с внешними API или шлюзами [13] для работы с языковыми моделями, что позволяет расширить функциональность системы.

Langfuse поддерживает интеграцию с рядом популярных LLM API, включая:

  • OpenAI;

  • Azure OpenAI;

  • Anthropic;

  • Google Vertex;

  • Amazon Bedrock.

Поднимаем в Kubernetes

Разворачиваем Langfuse в Kubernetes: open-source альтернатива Langsmith - 3

Теперь перейдем к практической части. 

Для начала убедитесь, что у вас есть доступ к Kubernetes-кластеру и установлен Helm на локальной машине. В этом руководстве мы будем использовать локальный minikube, но шаги также применимы для управляемых сервисов Kubernetes.

Шаг 1: Добавляем Helm-чарт

Сначала нужно добавить репозиторий Helm-чартов Langfuse и обновить его:

helm repo add langfuse https://langfuse.github.io/langfuse-k8s [14]
helm repo update

Для локального тестирования предустановленные переменные в файле values.yaml обычно достаточны. Однако, если вы планируете отправлять чувствительные данные или использовать приложение в течение длительного времени, рекомендуется настроить values.yaml в соответствии с вашими потребностями [15].

Шаг 2: Устанавливаем Helm-чарт

Создайте новое пространство имен для развертывания Langfuse (опционально):

kubectl create namespace langfuse

Установите Helm-чарт в ваше пространство имен:

helm install langfuse langfuse/langfuse -n langfuse

По умолчанию чарт развернет все необходимые компоненты, включая базы данных. При желании можно использовать существующие инстансы PostgreSQL, Clickhouse и Redis, настроив соответствующие параметры в values.yaml.

Шаг 3: Проверяем развертывание

Kubernetes начнет развертывание приложения Langfuse и его зависимостей. Этот процесс может занять до 5 минут. Вы можете следить за прогрессом, проверяя статус подов:

kubectl get pods -n langfuse

Шаг 4: Получаем доступ к UI

После успешного развертывания Langfuse, его пользовательский интерфейс будет доступен через ClusterIP сервис по умолчанию. Чтобы получить доступ к интерфейсу, выполните следующие действия:

  1. Используйте команду kubectl get services -n langfuse, чтобы получить список сервисов в пространстве имен langfuse. Найдите сервис langfuse-web, чтобы увидеть, на каком порту он работает.

  2. Выполните команду для создания порт-форварда, заменив <local-port> и <nodeport> на соответствующие значения:
    kubectl port-forward svc/langfuse-web -n langfuse <local-port>:<nodeport>
    Это позволит вам перенаправить трафик с локального порта на порт, на котором работает сервис langfuse-web.

  3. Откройте браузер и перейдите по адресу http://localhost:<local-port>, чтобы получить доступ к пользовательскому интерфейсу Langfuse.

Шаг 5: Радуемся результату

Наслаждайтесь результатом вашей работы! Теперь у вас есть мощный инструмент для мониторинга и анализа приложений на основе языковых моделей, который развернут в вашей инфраструктуре.

Заключение

Langfuse — это мощный инструмент для наблюдения и аналитики LLM-приложений, который предлагает открытый исходный код и возможность бесплатного самохостинга. Развертывание Langfuse в Kubernetes с использованием Helm — это простой и эффективный способ интеграции этого инструмента в вашу инфраструктуру. Надеюсь, что это руководство поможет вам начать работу с Langfuse и извлечь максимальную пользу из его возможностей.

Материал подготовил магистрант 2 курса [AI] Talent Hub [2], Арсений Казанцев.

Автор: ai-talent

Источник [16]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/11584

URLs in this post:

[1] @kazars24: https://www.braintools.ru/users/kazars24

[2] [AI] Talent Hub: https://ai.itmo.ru/?utm_source=habr&utm_medium=article&utm_campaign=artem

[3] внимание: http://www.braintools.ru/article/7595

[4] интеграции с Langchain: https://langfuse.com/docs/integrations/langchain/tracing

[5] Langfuse: https://langfuse.com/

[6] GitHub: https://github.com/langfuse/langfuse

[7] сайта: https://langfuse.com/self-hosting#architecture

[8] памяти: http://www.braintools.ru/article/4140

[9] PostgreSQL: https://langfuse.com/self-hosting/infrastructure/postgres

[10] Clickhouse: https://langfuse.com/self-hosting/infrastructure/clickhouse

[11] Redis: https://langfuse.com/self-hosting/infrastructure/cache

[12] S3/Blob Storage: https://langfuse.com/self-hosting/infrastructure/blobstorage

[13] внешними API или шлюзами: https://langfuse.com/self-hosting/infrastructure/llm-api

[14] https://langfuse.github.io/langfuse-k8s: https://langfuse.github.io/langfuse-k8s

[15] потребностями: http://www.braintools.ru/article/9534

[16] Источник: https://habr.com/ru/articles/877070/?utm_campaign=877070&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100