Skip to content

Очереди ручной проверки трасс LLM и агентов

Как трассы попадают в очередь ручной проверки, что размечают рецензенты и как Langfuse, LangSmith и Potato превращают метки в оценки и наборы данных для оценки.

Очередь ручной проверки — это список трасс LLM или агентов, которые ждут меток от людей, а Langfuse и LangSmith называют эту функцию очередью разметки (annotation queue). Langfuse, LangSmith и Arize AX встраивают очереди разметки в сам инструмент трассировки, Braintrust назначает логи рецензентам на странице Review, а Arize Phoenix позволяет рецензентам размечать спаны прямо из просмотра трассы. Potato — бесплатный инструмент проверки с самостоятельным размещением, который принимает трассы из Langfuse, через вебхук или из экспорта, отправляет каждую трассу нескольким рецензентам, сообщает, насколько рецензенты согласны между собой, и записывает объединённый ответ обратно в Langfuse или LangSmith в виде оценки (score).

Трасса записывает один запуск LLM-приложения, а спан (в Langfuse — наблюдение, observation) записывает один шаг внутри запуска, например вызов модели или вызов инструмента (трассы OpenTelemetry). Транскрипт агента — это трасса многошагового агента или многоходового чата. Рецензенты размечают трассы по двум причинам. Во-первых, метки людей служат эталоном, с которым сверяют LLM-as-a-judge, прежде чем судья начнёт самостоятельно оценивать продакшен-трафик (Zheng et al., 2023). Во-вторых, проверенные трассы становятся набором данных для оценки. Набор данных для оценки — это фиксированный набор входов и ожидаемых выходов, на котором тестируют каждую новую версию промпта или модели. Согласованность разметчиков показывает, как часто два рецензента ставят одну и ту же метку. Обычно её выражают через каппу Коэна или альфу Криппендорфа.

Сравнение инструментов оценки ИИ-агентов сопоставляет платформы по функциям. Сравнение инструментов для оценки LLM людьми и сбора данных предпочтений посвящено данным предпочтений. Разметка траекторий агентов описывает, как построить таксономию ошибок на уровне шагов.

Откуда трассы попадают в очередь проверки

Команда редко проверяет все трассы подряд. Поэтому в каждом инструменте есть способ отобрать трассы, которые увидит человек. В Langfuse трассы, наблюдения или сессии выбирают в таблице и нажимают Add to queue либо размечают отдельный элемент на странице этого элемента. Очереди LangSmith принимают запуски (runs) и целые треды, добавленные вручную или правилами автоматизации. Ручное добавление помещает в очередь до 100 запусков или тредов за одно действие. Правило для тредов в LangSmith добавляет разговор, когда разговор затихает. Arize AX наполняет очередь спанами за временной интервал или примерами из набора данных.

Potato читает трассы тремя способами:

  • Экспорты. python -m potato.trace_converter преобразует 15 форматов трасс в JSONL Potato, в том числе langchain для экспорта запусков LangSmith, langfuse и otel для спанов OpenTelemetry и OpenInference из экспортёров Phoenix или Braintrust.
  • Вебхуки. Когда включён trace_ingestion, Potato принимает трассы, отправленные на /api/traces/webhook, /api/traces/langsmith и /api/traces/otel, и добавляет каждую трассу в очередь, пока рецензенты работают.
  • Опрос Langfuse. Запись langfuse в trace_ingestion.sources с заданным интервалом забирает новые трассы из проекта Langfuse.

Potato решает, какие из входящих трасс попадут к рецензентам и в каком порядке. Правила автоматизации делают выборку входящих трасс по полю и с заданной долей. Очередь триажа первыми выдаёт рецензентам трассы с ошибками, трассы с отрицательным отзывом пользователя и трассы с низкими автоматическими оценками.

Какие метки рецензенты ставят трассе

Вид метки зависит от того, как её будут использовать дальше. Вердикт «прошло / не прошло» даёт долю успешных случаев, а оценка по каждому критерию рубрики даёт судье то, с чем сверяться. Исправленный вывод даёт обучающий пример. Для каждого вида меток в таблице ниже есть схема Potato, которая эту метку записывает.

МеткаПримерСхема Potato
Прошло или не прошлоРешил ли агент запрос?radio
Оценки по рубрикеТочность, тон и безопасность по шкале от 1 до 5rubric_eval, likert
Спаны ошибокВыделить галлюцинированное предложение и указать тип и серьёзностьerror_span
Правильность шаговОтметить первый неверный шаг или оценить каждый шагprocess_reward, trajectory_eval
Вызовы инструментовНужный инструмент, нужные аргументыtool_call_review
Вина в мультиагентном запускеКакой агент и на каком шаге вызвал сбойfailure_attribution, agent_scorecard
Исправленный выводПереписать итоговый ответ или неверный шагtext_edit, trajectory_edit
Предпочтение между двумя запускамиОтвет A, ответ B или ничьяpairwise

Платформы трассировки записывают те же суждения в виде оценок. Langfuse хранит исправленный вывод на трассе или наблюдении. Рецензенты LangSmith пишут утверждения (assertions), которые становятся ожидаемым выводом примера в наборе данных, а Braintrust может записать оценку в свободной форме в поле expected. Попарные очереди LangSmith показывают запуски из двух экспериментов бок о бок, и рецензент выбирает A, B или Equal.

Функции очередей проверки по инструментам

Команда Potato сверила лицензии, тарифы и функции ниже со страницами каждого проекта 2 ноября 2026 года.

ИнструментКак работаетЛицензия или ценаФункции проверки
LangfuseОблачный сервис или самостоятельное размещениеMIT, бесплатно при самостоятельном размещении, очереди разметки включены; в облаке Hobby бесплатно с 1 очередью, Core за $29 в месяц с 3 очередями, Pro за $199 в месяц без ограничения числа очередейОчереди трасс, наблюдений и сессий; исправленные выводы; каппа Коэна между двумя названиями оценок
LangSmithОблачный сервисDeveloper бесплатно для 1 места; Plus за $39 за место в месяц; самостоятельное размещение только на EnterpriseОчереди одиночных запусков и попарные очереди, проверка тредов, заданное число рецензентов на запуск и Add to Dataset
Arize PhoenixСамостоятельное размещение через pip или DockerElastic License 2.0Категориальные, непрерывные и свободные аннотации от людей, LLM или кода, каждая с указанием автора
Arize AXОблачная платформаКоммерческаяОчереди спанов или примеров из набора данных с методом назначения ALL или RANDOM
BraintrustОблачный сервисStarter бесплатно с 1 оценкой ручной проверки на проект; Pro за $249 в месяц; развёртывание on-premises на EnterpriseНазначенные рецензенты, слепая проверка, оценки записываются в expected
Label StudioВеб-приложениеCommunity Edition под Apache-2.0; шаблоны проверки трасс требуют Enterprise«Прошло / не прошло» для каждой реплики и для всей трассы на трассах Langfuse или Braintrust, которые загружает ноутбук
ArgillaВеб-приложение в Docker или в Hugging Face SpaceApache-2.0Записи чатов через ChatField с минимальным числом ответов на запись
PotatoВеб-сервер на Python на вашей машинеGPL-3.0-or-later, бесплатноНесколько слепых рецензентов на трассу, согласованность, схемы на уровне шагов и оценки, отправляемые обратно в Langfuse или LangSmith

В репозитории Argilla сказано, что исходные авторы перешли к другим проектам и что проект выпускает исправления ошибок и патчи, но не новые функции. Облачные платформы подходят команде, которая уже трассирует продакшен-трафик на одной из них. На облачной платформе рецензент открывает трассу в том же инструменте, где инженер эту трассу отлаживает.

В руководстве по миграции Humanloop сказано, что платформа Humanloop будет закрыта 8 сентября 2025 года и что после этой даты платформа и все данные станут безвозвратно недоступны. 13 августа 2025 года TechCrunch сообщил, что сооснователи и большая часть команды перешли в Anthropic, а представитель Anthropic заявил, что Anthropic не приобретала активы или интеллектуальную собственность Humanloop. Ближайшие облачные замены, объединяющие автоматическую оценку и ручную проверку в одном продукте, — Langfuse, LangSmith, Braintrust и Arize. Команда, которой нужна согласованность слепых рецензентов на каждой трассе, может добавить Potato к любой из этих четырёх платформ.

Число рецензентов на трассу и согласованность

Один рецензент на трассу даёт метку, которую ничто не проверяет, а два слепых рецензента показывают, какие трассы неоднозначны и ясна ли рубрика. Очередь LangSmith задаёт число рецензентов на запуск, и рецензенты LangSmith не видят отзывов друг друга. Braintrust скрывает оценки коллег, пока рецензент не отправит свою. Если включено Require all scores, строка в Braintrust считается завершённой, когда её оценили все назначенные рецензенты. Phoenix показывает каждую аннотацию на спане вместе с автором. На форуме Langfuse пользователи 7 ноября 2025 года сообщили, что два человека по-прежнему не могут независимо разметить одну и ту же трассу в очереди. Обходной путь в обсуждении — отдельная конфигурация оценки (score config) для каждого рецензента. Последний комментарий датирован 22 апреля 2026 года и по-прежнему описывает обходные пути. Аналитика оценок в Langfuse считает каппу Коэна между любыми двумя названиями оценок, по две за раз.

В Potato num_annotators_per_item задаёт, сколько рецензентов видят каждую трассу. Панель /admin/iaa показывает каппу Коэна, каппу Фляйса и альфу Криппендорфа для категориальных схем и взвешенную каппу для порядковых, а /admin/api/step_agreement показывает согласованность меток на уровне шагов. Арбитр разрешает расхождения на странице /adjudicate, а о том, когда нужен арбитраж, рассказывает руководство Арбитраж и разрешение расхождений. Выбор коэффициента разобран в руководстве Согласованность разметчиков: как её считать.

Метки обратно в инструмент трассировки и в наборы данных для оценки

Проверенные метки приносят пользу, когда попадают в набор данных для оценки, на котором тестируют следующую версию. Рецензенты LangSmith добавляют запуск или целый тред в набор данных прямо из очереди. Langfuse добавляет наблюдения в набор данных со ссылкой на исходную трассу, а API оценок Langfuse возвращает исправленные выводы как оценки типа CORRECTION. Phoenix переносит аннотации спанов в наборы данных, а Braintrust строит наборы данных из проверенных логов.

Potato возвращает метки тремя способами:

  • Оценки на исходной трассе. С trace_ingestion.writeback трасса, пришедшая от опросчика Langfuse или через вебхук LangSmith, получает по одной оценке на каждую схему, как только ответят min_annotators человек. Ответ radio — это метка большинства, а ответ multiselect — это множество классов, которые выбрали больше половины рецензентов. В комментарии и метаданных записываются число разметчиков и доля пар рецензентов, которые согласились. При равенстве голосов оценка ждёт арбитража. Схемы на уровне шагов, такие как process_reward, дополнительно оценивают каждое наблюдение Langfuse.
  • Обучающие данные. Экспортёр trajectory_correction записывает каждую исправленную трассу как запись SFT (prompt, completion) и запись DPO (prompt, chosen, rejected), как описано в руководстве Редактирование траекторий для SFT/DPO.
  • Файлы и наборы данных. Potato экспортирует в CSV, JSONL, Parquet, набор данных Hugging Face и agent_eval. Экспорт agent_eval агрегирует оценки по каждой трассе. Наборы данных Potato хранят версионированные наборы для оценки.

Очередь проверки в Potato, которую наполняет Langfuse

С конфигурацией ниже Potato опрашивает проект Langfuse каждые 60 секунд и отдаёт каждую трассу двум рецензентам. Рецензенты отвечают на три вопроса, и когда ответят оба, Potato отправляет каждый ответ обратно на трассу как оценку Langfuse с именем review.outcome, review.failure_mode и review.step_correctness. Конфигурация полная и проходит python -m potato.validate_cli --strict.

yaml
annotation_task_name: Support agent trace review, two reviewers per trace
task_dir: .
output_annotation_dir: annotation_output/
data_files:
  - data/traces.jsonl
item_properties:
  id_key: id
  text_key: task_description
user_config:
  allow_all_users: true
  users: []
 
# Pull new traces from Langfuse every 60 seconds, and send each merged
# answer back to the trace as a Langfuse score once two people have judged it
trace_ingestion:
  enabled: true
  api_key: change-me
  sources:
    - type: langfuse
      api_url: https://cloud.langfuse.com
      public_key: pk-lf-...
      secret_key: sk-lf-...
      poll_interval: 60
  writeback:
    trigger: fully_annotated
    min_annotators: 2
    score_prefix: review
 
# Two reviewers per trace, so agreement can be measured on every trace
num_annotators_per_item: 2
 
instance_display:
  fields:
    - key: steps
      type: agent_trace
      label: Agent trace
 
annotation_schemes:
  - annotation_type: radio
    name: outcome
    description: Did the agent resolve the customer's request?
    labels: [pass, fail]
  - annotation_type: multiselect
    name: failure_mode
    description: Which problems does the trace show?
    labels: [wrong_tool, hallucinated_fact, ignored_instruction, unsafe_action, none]
  - annotation_type: process_reward
    name: step_correctness
    description: Mark the first step that went wrong.
    steps_key: steps
    mode: first_error

Запустите сервер командой potato start config.yaml -p 8000. Обратная запись доходит только до трасс, пришедших из Langfuse или LangSmith, а трассы, загруженные из data/traces.jsonl, остаются в Potato. Если трассы экспортированы в файлы, сначала преобразуйте экспорт:

bash
python -m potato.trace_converter --input langfuse_traces.json --output data/traces.jsonl --input-format langfuse

Potato защищает эндпоинты вебхуков с помощью api_key. Обратная запись берёт ключи Langfuse из LANGFUSE_PUBLIC_KEY и LANGFUSE_SECRET_KEY, если заданы обе переменные, а иначе из источника langfuse. Команда curl -H "X-API-Key: $KEY" http://localhost:8000/admin/api/trace_writeback показывает, сколько оценок ожидают отправки, отправлены, не отправлены из-за ошибки и удержаны.

Ограничения Potato как очереди проверки

  • Нет трассировки продакшена. Potato читает трассы из инструмента трассировки и не заменяет этот инструмент.
  • Нет рецензентов. Пригласите свою команду или наберите рецензентов на Prolific, как описано в разделе Интеграция с краудсорсингом.
  • Обратная запись только в два сервиса. Оценки уходят только в Langfuse и LangSmith. Текстовые ответы не отправляются никогда, а LangSmith получает только отзывы на уровне трассы. В документации Potato сказано, что доставка в LangSmith следует опубликованному API LangSmith и на самом сервисе не проверялась.
  • Опрос только для Langfuse. Запуски LangSmith поступают через вебхук или экспорт.

Частые вопросы

Что такое очередь разметки для трасс агентов и LLM?

Очередь разметки — это список трасс, спанов или разговоров, которые команда отложила для разметки людьми, с фиксированным набором вопросов к каждому элементу. Рецензент открывает следующий элемент, отвечает на вопросы и отмечает элемент как выполненный. Langfuse, LangSmith и Arize AX называют эту функцию очередью разметки (annotation queue). Potato поддерживает тот же процесс на вашем собственном сервере, с несколькими рецензентами на трассу и отчётом о согласованности.

Какие инструменты поддерживают ручную проверку и разметку трасс LLM?

Langfuse, LangSmith, Braintrust, Arize Phoenix и Arize AX прикрепляют метки людей к трассам внутри инструмента трассировки. В Label Studio Enterprise рецензенты размечают трассы Langfuse и Braintrust через шаблоны. Potato показывает рецензентам трассы из Langfuse, LangSmith, OpenTelemetry и ещё 12 форматов, измеряет согласованность рецензентов и отправляет результат обратно в Langfuse или LangSmith.

Какие есть альтернативы Humanloop для автоматической оценки и ручной проверки?

К облачным альтернативам Humanloop относятся Langfuse, LangSmith, Braintrust и Arize. Каждая из четырёх платформ объединяет трассировку, автоматические оценщики и ручную проверку, а Langfuse распространяется под лицензией MIT и бесплатен при самостоятельном размещении. Платформа Humanloop закрыта 8 сентября 2025 года. Potato — бесплатная альтернатива с самостоятельным размещением для ручной проверки, с согласованностью слепых рецензентов и оценками, которые записываются обратно в Langfuse или LangSmith.

Что почитать дальше

Источники

  1. Zheng, L., Chiang, W.-L., Sheng, Y., et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. NeurIPS 2023 Datasets and Benchmarks. https://arxiv.org/abs/2306.05685