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

Прежде чем погрузиться в технические детали, давайте разберемся, почему стоит обратить внимание [3] на Langfuse:
Open Source — Langfuse является проектом с открытым исходным кодом, что предоставляет пользователям возможность изучать, изменять и улучшать его по своему усмотрению. В отличие от него, Langsmith — это закрытый проект, что ограничивает доступ к его внутреннему устройству и возможностям кастомизации.
Интеграция с LangChain — Langsmith разработан командой LangChain и интегрируется только с их фреймворком. Langfuse также поддерживает интеграции с Langchain [4], но не ограничивается только этим фреймворком, что делает его более универсальным инструментом для разработчиков.
Бесплатный self-hosting — Langfuse можно развернуть бесплатно, тогда как Langsmith требует платной Enterprise-лицензии.
Langfuse [5] — это open-source платформа для разработки LLM-приложений, которая помогает командам совместно отлаживать, анализировать и итеративно улучшать свои решения на базе языковых моделей. Все функции платформы нативно интегрированы между собой, что существенно ускоряет процесс разработки. Исходный код доступен на GitHub [6].
Одно из главных преимуществ Langfuse — это его гибкая архитектура, построенная исключительно на open-source компонентах. Систему можно развернуть где угодно: локально на вашем ноутбуке, в облаке или в корпоративном дата-центре.
Архитектура 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] — объектное хранилище для входящих событий, мультимодальных данных и больших экспортов.
Langfuse предоставляет возможность интеграции с внешними API или шлюзами [13] для работы с языковыми моделями, что позволяет расширить функциональность системы.
Langfuse поддерживает интеграцию с рядом популярных LLM API, включая:
OpenAI;
Azure OpenAI;
Anthropic;
Google Vertex;
Amazon Bedrock.

Теперь перейдем к практической части.
Для начала убедитесь, что у вас есть доступ к Kubernetes-кластеру и установлен Helm на локальной машине. В этом руководстве мы будем использовать локальный minikube, но шаги также применимы для управляемых сервисов Kubernetes.
Сначала нужно добавить репозиторий Helm-чартов Langfuse и обновить его:
helm repo add langfuse https://langfuse.github.io/langfuse-k8s [14]
helm repo update
Для локального тестирования предустановленные переменные в файле values.yaml обычно достаточны. Однако, если вы планируете отправлять чувствительные данные или использовать приложение в течение длительного времени, рекомендуется настроить values.yaml в соответствии с вашими потребностями [15].
Создайте новое пространство имен для развертывания Langfuse (опционально):
kubectl create namespace langfuse
Установите Helm-чарт в ваше пространство имен:
helm install langfuse langfuse/langfuse -n langfuse
По умолчанию чарт развернет все необходимые компоненты, включая базы данных. При желании можно использовать существующие инстансы PostgreSQL, Clickhouse и Redis, настроив соответствующие параметры в values.yaml.
Kubernetes начнет развертывание приложения Langfuse и его зависимостей. Этот процесс может занять до 5 минут. Вы можете следить за прогрессом, проверяя статус подов:
kubectl get pods -n langfuse
После успешного развертывания Langfuse, его пользовательский интерфейс будет доступен через ClusterIP сервис по умолчанию. Чтобы получить доступ к интерфейсу, выполните следующие действия:
Используйте команду kubectl get services -n langfuse, чтобы получить список сервисов в пространстве имен langfuse. Найдите сервис langfuse-web, чтобы увидеть, на каком порту он работает.
Выполните команду для создания порт-форварда, заменив <local-port> и <nodeport> на соответствующие значения:
kubectl port-forward svc/langfuse-web -n langfuse <local-port>:<nodeport>
Это позволит вам перенаправить трафик с локального порта на порт, на котором работает сервис langfuse-web.
Откройте браузер и перейдите по адресу http://localhost:<local-port>, чтобы получить доступ к пользовательскому интерфейсу Langfuse.
Наслаждайтесь результатом вашей работы! Теперь у вас есть мощный инструмент для мониторинга и анализа приложений на основе языковых моделей, который развернут в вашей инфраструктуре.
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
Нажмите здесь для печати.