Skip to main content
В этом руководстве пошагово описано, как загрузить данные трассировки LLM из Langfuse Cloud в ClickHouse Cloud для Real-time аналитики.

Экспорт из Langfuse Cloud

Чтобы настроить в Langfuse Cloud интеграцию с Blob Storage для экспорта по расписанию, следуйте этому руководству. Экспорт данных трассировки в объектное хранилище можно запускать не чаще чем раз в 20 minutes либо по расписанию hourly, daily или weekly. По умолчанию каждый экспорт включает observations (дополненные атрибутами трассировок) и scores.

Структура экспортируемых файлов

Интеграция Blob Storage в Langfuse Cloud записывает данные в целевой бакет или контейнер хранилища со следующей структурой каталогов:

Импорт в ClickHouse Cloud

После настройки интеграции Blob Storage в Langfuse Cloud данные трассировки будут по расписанию экспортироваться в целевой бакет или контейнер хранилища. Чтобы импортировать эти данные в ClickHouse Cloud, воспользуйтесь ClickPipes и его управляемыми коннекторами к объектным хранилищам:

Создание ClickPipe

В этом примере S3 ClickPipe используется для импорта данных из S3 бакета, в который по расписанию выгружаются данные из Langfuse Cloud. Этот пример можно взять за основу и для других объектных хранилищ, в которые выполняется экспорт. Рекомендации для конкретных источников данных см. в документации ClickPipes.
1

Выберите источник данных

1. В ClickHouse Cloud выберите Data sources в главном меню навигации и нажмите Create ClickPipe.
Создание ClickPipe
2. Нажмите на плитку Amazon S3. Через эту плитку можно также подключиться к другим S3-совместимым сервисам, которых нет в интерфейсе ClickPipes.
Выбор источника данных Amazon S3
2

Настройте соединение

1. Укажите данные, которые нужны ClickPipes для подключения и аутентификации в бакете, куда экспортируются данные из Langfuse Cloud.
  • Authentication method: S3 ClickPipe поддерживает учётные данные IAM (Credentials) и аутентификацию на основе роли IAM (IAM role). ClickPipes требуется только доступ к бакету на чтение. Рекомендации по аутентификации и разрешениям приведены в справочной документации.
  • S3 file path: укажите для ClickPipe подкаталог и используйте подстановочный символ *, чтобы охватить все экспортированные файлы. Для каждого подкаталога необходимо создать отдельный ClickPipe, поскольку экспортированные файлы в разных подкаталогах имеют разные схемы. Рекомендации по поддерживаемым шаблонам, в том числе по сопоставлению файлов во вложенных префиксах, приведены в справочной документации.
2. Выберите Continuous ingestion, чтобы новые файлы загружались автоматически по мере того, как Langfuse записывает их в целевой бакет.
Сведения о подключении для экспорта Langfuse с включённой непрерывной ингестией.
3. Нажмите Incoming data. ClickPipes получит метаданные из вашего бакета и на следующем шаге автоматически определит схему целевой таблицы.
3

Проверьте корректность поступающих данных

1. ClickPipes подключится к вашему бакету, получит список файлов по указанному пути и автоматически определит их формат. В этом примере используется формат экспорта Langfuse Cloud по умолчанию (Parquet).
Файлы, соответствующие пути экспорта Langfuse, с типом файла Parquet
2. Нажмите Parse information. ClickPipes определит схему экспортированных данных по файлу-образцу и автоматически сопоставит поля источника с полями целевой таблицы ClickHouse.
4

Настройте целевую систему

1. На этом шаге можно просмотреть автоматически определённую схему и настроить параметры целевой таблицы: скорректировать сопоставление типов данных, задать ключ сортировки и выбрать движок таблицы.
Экспорт scores с записью в отдельную базу данных langfuse; ключ сортировки задан как environment, name, timestamp, trace_id, observation_id и id
В разделе Upload data to оставьте выбранным вариант New table и укажите:
  • Database и Name: отдельную базу данных для данных Langfuse (например, langfuse) и понятное имя целевой таблицы (например, scores). По умолчанию ClickPipes использует default.s3-<uuid>, чтобы избежать конфликтов имён.
  • Sorting key: ключ упорядочивания целевой таблицы, который определяет, как ClickHouse хранит данные на диске. Для оптимальной производительности ключ сортировки должен соответствовать тому, как ваши запросы обращаются к данным, — тогда они смогут пропускать чтение как можно большего объёма данных. Этот ключ также используется для дедупликации в таблицах ReplacingMergeTree, поэтому набор столбцов должен однозначно идентифицировать запись. Если вы загружаете несколько проектов Langfuse в одну таблицу, добавьте project_id в начало ключа сортировки. Рекомендации по выбору ключа сортировки см. в справочной документации.
  • Partition by: оставьте поле пустым, если не планируете удалять устаревшие трассировки. Партиционирование в ClickHouse предназначено для управления данными, а не для оптимизации запросов; рекомендуемый ключ сортировки и так отсекает лишние данные в запросах по временному диапазону. Если же нужно ограничить срок хранения, партиционируйте таблицу по столбцу времени (toYYYYMM(start_time) или toYYYYMM(timestamp) для scores) — тогда удаление трассировок за месяц сведётся к одной операции DROP PARTITION.
2. Затем разверните Advanced settings, выберите для Engine значение ReplacingMergeTree, чтобы обеспечить дедупликацию, и укажите updated_at в качестве столбца Version.
Расширенные настройки с движком ReplacingMergeTree и updated_at в качестве столбца версии
Окна экспорта в интеграции Langfuse Cloud Blob Storage включают обе границы, поэтому одна и та же запись может попасть в несколько экспортированных файлов. Если ваши аналитические запросы не идемпотентны (идемпотентны, например, uniq(), max(), min()), вы обязаны обрабатывать дедупликацию на уровне последующей модели данных, используя ReplacingMergeTree в качестве целевого движка.
Дедупликация с помощью ReplacingMergeTreeЭтот движок таблицы схлопывает дубликаты во время фоновых слияний. Для полной дедупликации при чтении (т. е. семантики merge-on-read) необходимо использовать в запросах модификатор FINAL (или агрегации в стиле argMax()).
5

Настройте разрешения

ClickPipes создаёт отдельного пользователя для записи данных в целевую таблицу. Выберите для этого внутреннего пользователя пользовательскую роль или одну из предопределённых ролей:
  • Full access: полный доступ к кластеру. Требуется, если с целевой таблицей используется materialized view или словарь.
  • Only destination table: разрешения INSERT только на целевую таблицу.
Разрешения
Нажмите Complete setup, чтобы создать ClickPipe.
6

Завершите настройку

Готово! Сначала ClickPipes выполнит дозагрузку исторических данных из всех файлов по указанному пути, а затем начнёт принимать новые файлы по мере их поступления в бакет.
Работающие ClickPipes для observations и scores в разделе Data sources
Повторите шаги из этого руководства для каждого подкаталога, который нужно импортировать в ClickHouse Cloud.

Запросы к данным трассировки

Когда ClickPipes будут запущены, вы сможете выполнять запросы к данным трассировки Langfuse Cloud непосредственно в ClickHouse Cloud. Ниже приведены примеры нескольких распространённых шаблонов запросов: агрегирование затрат и задержек, восстановление отдельной трассировки, а также сопоставление оценок с моделями и промптами.

Агрегация метрик по временным интервалам

Некоторые поля, например usage_details и cost_details, экспортируются как столбцы типа Map. Чтобы получить отдельное значение, обратитесь к нему по ключу (например, sum(cost_details['total'])).

Восстановление трассировки

Анализ качества

См. также

Последнее изменение 26 сентября 2026 г.