# Open WebUI и Langfuse: увидеть трассу ответа и проверить передачу данных

Источник: https://modelium.tech/zhurnal/open-webui-langfuse-trassirovka/

Интеграция Open WebUI с Langfuse записывает в трассу сообщения, ответ модели и сведения о пользователе. Для первой проверки включите официальный Filter только для одной тестовой модели, отправьте вымышленный вопрос и прочитайте трассу в своём проекте Langfuse. Не включайте Global и не используйте реальные документы, пока не проверили адрес сервера, состав данных и права доступа. Modelium не запускал этот стек.

**Инженерный гайд, не домашний рецепт.** Понадобятся работающий Open WebUI, учётная запись администратора и собственный проект Langfuse с public/secret key. Если Langfuse ещё не развёрнут, сначала настройте его по [официальному руководству Langfuse](https://langfuse.com/self-hosting); здесь мы не описываем установку сервера. Эта инструкция сверена с документацией Open WebUI на Git-коммите `0d43b3e1`; Modelium не запускал связку и не проверял сеть. Filter — исполняемый Python-код на сервере: перед установкой прочитайте его, не вставляйте непроверенный код из сообщества. [s1](#src-s1) [s2](#src-s2)

## Что вы увидите и какие данные покинут Open WebUI?

Представьте, что вы хотите понять, какой вопрос получила модель и что она ответила. **Трасса** — запись одного обращения в Langfuse. Официальная интеграция записывает входные сообщения и полный текст ответа, идентификатор модели, email пользователя и ID чата; если доступны данные о токенах, добавляет и их. Это не приватный счётчик скорости: даже с локальной моделью содержание беседы отправляется **по адресу Langfuse**, указанному в настройке Host. Облачный Host означает внешнюю передачу; собственный сервер — отдельный компонент, чью сеть, хранение и доступ вам нужно проверить самим. [s1](#src-s1)

Для первого опыта используйте только вымышленный текст. Не подключайте фильтр ко всем моделям и не отправляйте реальные договоры, письма или персональные данные. Удаление или сроки хранения в Langfuse зависят от настройки именно вашего проекта; этот гайд не обещает автоматическую анонимизацию или офлайн-режим. [s1](#src-s1)

## Как подготовить один безопасный тест?

- Убедитесь, что вы администратор работающего Open WebUI и у вас есть доступ к **своему** проекту Langfuse. В нём получите пару API-ключей и точный URL сервера. Для приватного маршрута используйте адрес вашего Langfuse, а не значение Cloud по умолчанию. Проверьте, что адрес доступен с сервера Open WebUI: адрес `localhost` внутри контейнера может указывать на сам контейнер, а не на соседний сервис. Не публикуйте secret key в статье, чате или журнале. [s1](#src-s1)

- Откройте в официальной документации Open WebUI раздел **Langfuse Integration** из источника ниже. Прочитайте код Filter и предупреждение о правах Python; не копируйте стороннюю версию. В Open WebUI откройте **Admin Panel → Functions → Create → New Function**, вставьте именно сверенный код из официального источника и сохраните. Документация говорит, что зависимость `langfuse~=3.11` может установиться при сохранении; при отключённой автоматической установке её готовит администратор отдельно. Не меняйте версию библиотеки на 4 «на всякий случай»: документация предупреждает о конфликте её OpenTelemetry-зависимостей с Open WebUI. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

- В **Admin Panel → Functions** откройте **Valves** фильтра, введите Public Key, Secret Key и точный Host своего проекта, сохраните и включите переключатель. Затем в **Workspace → Models** выберите **одну тестовую модель** и привяжите этот Filter в поле Filters. **Global не включайте**: он распространит запись на все модели. Если заменили Host или Secret Key, оставив тот же Public Key, документация рекомендует перезапустить Open WebUI, чтобы применить изменение. [s1](#src-s1)

- Откройте новый чат именно с тестовой моделью и отправьте вымышленный запрос: «В учебном блокноте записано: встреча в четверг. В какой день встреча?» В Langfuse откройте свой проект и найдите запись **Open WebUI chat**, а внутри — ответ **chat-reply**. Сопоставьте input с этой фразой, output — с фактическим ответом, а поля user/session/model — с тестовой учётной записью, чатом и моделью. Ответ должен быть непустым и говорить «четверг»; Modelium его не получал и не воспроизводил. [s1](#src-s1)

## Что делать, если трасса отсутствует или раскрывает лишнее?

Если трасса не появилась, проверьте, включён ли Filter **именно для выбранной модели**, верны ли Host и ключи, видит ли сервер Open WebUI адрес Langfuse и нет ли ошибки установки зависимости в журнале. Не включайте Global ради диагностики. Отсутствие счётчика токенов не доказывает, что фильтр не сработал: для потоковых ответов некоторым провайдерам нужна отдельная возможность Usage в настройках модели. Запросы напрямую к API тоже могут трассироваться, когда включён `ENABLE_API_OUTLET_FILTERS` (по документации — по умолчанию). [s1](#src-s1) [s3](#src-s3)

Если в input/output или поле пользователя оказались сведения, которые нельзя передавать выбранному Langfuse, **выключите Filter до рабочих бесед** и пересмотрите адрес, доступ к проекту и сам код передачи. Привязка к одной модели уменьшает охват теста, но не превращает содержимое трассы в анонимные метрики. На настоящем контуре отдельно проверьте права, сетевой маршрут и хранение; эта инструкция не подтверждает соответствие требованиям по персональным данным. [s1](#src-s1) [s2](#src-s2)

Следующий шаг — [сравнить с журналом аудита Open WebUI](/zhurnal/open-webui-audit-log/): он решает другую задачу и не подменяет проверку содержимого трассы. [s1](#src-s1)

## Источники

1. [Open WebUI: официальный Langfuse Integration, закреплённый Git-коммит](https://raw.githubusercontent.com/open-webui/docs/0d43b3e1c103b142abe025e6ebdc3afadf71b83f/docs/tutorials/integrations/monitoring/langfuse.md) — получено 2026-10-22
2. [Open WebUI: Filter Function и предупреждение о выполнении Python, закреплённый Git-коммит](https://raw.githubusercontent.com/open-webui/docs/0d43b3e1c103b142abe025e6ebdc3afadf71b83f/docs/features/extensibility/plugin/functions/filter.mdx) — получено 2026-10-22
3. [Open WebUI: Functions и установка зависимостей, закреплённый Git-коммит](https://raw.githubusercontent.com/open-webui/docs/0d43b3e1c103b142abe025e6ebdc3afadf71b83f/docs/features/extensibility/plugin/functions/index.mdx) — получено 2026-10-22
