Langfuse · 评分、指标与告警
本页覆盖:评分与标注、自动评估、指标与大盘、告警与通知。每条事实链到固定提交(f75c661d)。回到 Langfuse 总览。
7. Score、人工标注、标注队列、LLM-as-judge
7.1 Score 模型
- Score 来源
source有API、EVAL、ANNOTATION(packages/shared/src/domain/scores.tsL4,permalink)。 - 公共创建接口只允许
API与ANNOTATION,EVAL保留给内部评估器(packages/shared/src/domain/scores.tsL15,permalink)。 - Score 数据类型
dataType有NUMERIC、CATEGORICAL、BOOLEAN、CORRECTION、TEXT(packages/shared/src/domain/scores.tsL46-L52,permalink)。 - 来源为
ANNOTATION时必须带configId,CORRECTION例外(packages/shared/src/domain/scores.tsL31,permalink)。 TEXT类型最长 500 个字符(packages/shared/src/domain/scores.tsL44,permalink)。- ClickHouse
scores表有trace_id(后改为可空)、observation_id、session_id、dataset_run_id、source、data_type、string_value、queue_id、execution_trace_id(packages/shared/clickhouse/migrations/canonical/0003_scores.up.sqlL6-L15,permalink;session_id见packages/shared/clickhouse/migrations/canonical/0012_add_session_id_column_scores.up.sqlL1,permalink;execution_trace_id见packages/shared/clickhouse/migrations/canonical/0030_add_eval_execution_trace_id_to_scores.up.sqlL1,permalink)。 - 所以 Score 可以挂在 Trace、Observation、Session 或 Dataset Run 上。
ScoreConfig(Postgres)定义评分配置:dataType(CATEGORICAL、NUMERIC、BOOLEAN、TEXT)、minValue、maxValue、categories、isArchived(packages/shared/prisma/schema.prismaL516-L528,permalink、packages/shared/prisma/schema.prismaL540-L545,permalink)。- 写入入口:公共
POST /api/public/scores,权限scores:create(web/src/pages/api/public/scores/index.tsL22,permalink);也可通过 ingestion 的score-create事件(见 2.1)。 - 读取入口:公共 v1
/api/public/scores、v2/api/public/v2/scores、v3/api/public/v3/scores(web/src/pages/api/public/v2/scores/index.tsL19,permalink、web/src/pages/api/public/v3/scores/index.tsL8,permalink)。 - v1 与 v2 在
events_only下返回 404;v3 没有这个开关(v3 文件里无rejectInEventsOnlyMode;已搜索web/src/pages/api/public/v3/scores/index.ts)。 - 评分分析页:
/project/[projectId]/scores/analytics与score-analytics特性目录(web/src/pages/project/[projectId]/scores/analytics.tsxL1,permalink、web/src/features/score-analytics/README.mdL1,permalink)。 - 评分表页:
ScoresPage、ScoresTable(web/src/features/scores/ScoresTable.tsxL1,permalink)。
7.2 人工标注与标注队列
- 标注队列
AnnotationQueue绑定一组scoreConfigIds,名称在项目内唯一(packages/shared/prisma/schema.prismaL547-L560,permalink)。 - 队列项
AnnotationQueueItem的对象类型是TRACE、OBSERVATION、SESSION;状态是PENDING、COMPLETED;带锁字段lockedAt、lockedByUserId(packages/shared/prisma/schema.prismaL565-L582,permalink、packages/shared/prisma/schema.prismaL596-L600,permalink)。 - 队列可分配给用户:
AnnotationQueueAssignment(packages/shared/prisma/schema.prismaL602-L614,permalink)。 - 队列项 tRPC 有
createMany、deleteMany、complete、itemsByQueueId、unseenPendingItemCountByQueueId(web/src/features/annotation-queues/server/annotationQueueItemsRouter.tsL280,permalink、web/src/features/annotation-queues/server/annotationQueueItemsRouter.tsL419,permalink)。 - 公共 API 有
/api/public/annotation-queues、[queueId]、assignments、items(web/src/pages/api/public/annotation-queues/index.tsL1,permalink、web/src/pages/api/public/annotation-queues/[queueId]/assignments.tsL1,permalink)。 - 从 Trace 表批量加入队列走批量操作
trace-add-to-annotation-queue(见 5.3)。 - Trace 详情页自带评审面板
TraceReviewPanel(web/src/features/traces/components/TraceReviewPanel.tsxL1,permalink)。 - 页面:
/project/[projectId]/annotation-queues(web/src/pages/project/[projectId]/annotation-queues/index.tsxL1,permalink)。 - 评论
Comment可挂在TRACE、OBSERVATION、SESSION、PROMPT上(packages/shared/prisma/schema.prismaL751-L756,permalink);公共 API 有/api/public/comments(web/src/pages/api/public/comments/index.tsL1,permalink)。
7.3 LLM-as-judge 与评估器
- 评估器类型
EvalTemplateType有LLM_AS_JUDGE、CODE、DECISION_MODEL、FACET(packages/shared/prisma/schema.prismaL1089-L1094,permalink)。 - 评估器
Evaluator带版本EvaluatorVersion;规则EvaluationRule带targetObject、filter、sampling、delay、idleTime、timeScope(packages/shared/prisma/schema.prismaL1156-L1176,permalink)。 - 规则与评估器通过
EvaluationRuleEvaluatorAssignment多对多,并带variableMapping(packages/shared/prisma/schema.prismaL1181-L1199,permalink)。 - 规则作用对象
EvalTargetObject有trace、dataset、event、experiment(packages/shared/src/features/evals/types.tsL116-L121,permalink)。 - 执行记录是
JobExecution,状态有COMPLETED、ERROR、PENDING、CANCELLED、DELAYED(packages/shared/prisma/schema.prismaL1201-L1207,permalink)。 - 旧路径(trace 目标):
TraceUpsert队列的处理器调用createEvalJobs(worker/src/queues/evalQueue.tsL33,permalink)。 - 新路径(observation 目标):OTLP 处理器在写入 span 后调用
scheduleObservationEvals(worker/src/features/otel-ingestion/processOtelEvents.tsL134,permalink)。 scheduleObservationEvals先用规则的过滤条件匹配,再用span_id做确定性采样(worker/src/features/evaluation/observationEval/scheduleObservationEvals.tsL115,permalink、worker/src/features/evaluation/observationEval/scheduleObservationEvals.tsL148,permalink)。- 内部环境(评估器自己产生的 trace)会被排除,避免评估器评估自己(
worker/src/features/evaluation/observationEval/scheduleObservationEvals.tsL74,permalink)。 - Worker 注册了
EvalExecutionQueue、SecondaryEvalExecutionQueue、CodeEvalExecutionQueue(worker/src/app.tsL49,permalink)。 - 评估产生的 Score 来源是
EVAL,并通过execution_trace_id指向评估器自己的执行 Trace(见 7.1 的迁移0030)。 - 公共 API 有评估器与规则:
/api/public/v2/evaluators、/api/public/v2/evaluation-rules(web/src/pages/api/public/v2/evaluators/index.tsL1,permalink、web/src/pages/api/public/v2/evaluation-rules/index.tsL1,permalink)。 - 页面:
/project/[projectId]/evals(含rules、templates、default-model、remap)(web/src/pages/project/[projectId]/evals/rules.tsxL1,permalink)。 - 批量对已有 observation 跑评估是批量操作
observation-run-batched-evaluation(见 5.3)。
8. Dashboard 与指标
Dashboard存definition(JSON)与filters;projectId可空,代表 Langfuse 托管的 dashboard(packages/shared/prisma/schema.prismaL1630-L1652,permalink)。DashboardWidget存view、dimensions、metrics、filters、chartType、chartConfig、minVersion(packages/shared/prisma/schema.prismaL1675-L1703,permalink)。- Widget 的
view有TRACES、OBSERVATIONS、SCORES_NUMERIC、SCORES_CATEGORICAL、SCORES_BOOLEAN(packages/shared/prisma/schema.prismaL1655-L1661,permalink)。 - 图表类型有
LINE_TIME_SERIES、AREA_TIME_SERIES、BAR_TIME_SERIES、HORIZONTAL_BAR、VERTICAL_BAR、PIE、NUMBER、HISTOGRAM、PIVOT_TABLE(packages/shared/prisma/schema.prismaL1663-L1674,permalink)。 - 查询引擎的
views是traces、observations、scores-numeric、scores-categorical、scores-boolean;公共 v2 的viewsV2去掉了traces(packages/shared/src/features/query/types.tsL123-L131,permalink、packages/shared/src/features/query/types.tsL135-L141,permalink)。 - 视图版本
v1、v2;v2 视图在dataModel.ts里声明为events_*(如events_traces)(packages/shared/src/features/query/types.tsL164,permalink、packages/shared/src/features/query/dataModel.tsL171,permalink)。 - 查询由
QueryBuilder编译、executeQuery执行(packages/shared/src/features/query/server/queryBuilder.tsL1,permalink、packages/shared/src/features/query/server/queryExecutor.tsL92,permalink)。 - Dashboard tRPC:
allDashboards、getDashboard、createDashboard、updateDashboardDefinition、cloneDashboard、getHomeDashboard、setHomeDashboard、updateDashboardFilters、executeQuery、delete(web/src/features/dashboard/server/dashboard-router.tsL446,permalink、web/src/features/dashboard/server/dashboard-router.tsL601,permalink、web/src/features/dashboard/server/dashboard-router.tsL693,permalink)。 - Widget tRPC:
create、all、get、update、copyToProject、delete(web/src/server/api/routers/dashboardWidgets.tsL170,permalink)。 - 项目首页有预设图表组件:延迟、模型成本、模型用量、用户(
web/src/features/dashboard/components/home-preset-registry.tsxL1,permalink、web/src/features/dashboard/components/LatencyChart.tsxL1,permalink、web/src/features/dashboard/components/ModelCostTable.tsxL1,permalink、web/src/features/dashboard/components/ModelUsageChart.tsxL1,permalink)。 - 图表库在
web/src/features/widgets/chart-library(web/src/features/widgets/chart-library/ARCHITECTURE.mdL1,permalink)。 - 公共 API:
GET /api/public/metrics(v1)与GET /api/public/v2/metrics,均调用executeQuery(web/src/pages/api/public/metrics/index.tsL11,permalink、web/src/pages/api/public/v2/metrics.tsL10,permalink)。 - v1 metrics 在
events_only下返回 404(web/src/pages/api/public/metrics/index.tsL25,permalink)。 - 另有按日汇总
GET /api/public/metrics/daily(web/src/pages/api/public/metrics/daily.tsL20,permalink)。 - 另有不稳定接口
/api/public/unstable/dashboards与dashboard-widgets(web/src/pages/api/public/unstable/dashboards/index.tsL1,permalink)。 - Cost、latency、usage 都是 observation 上的度量,通过上面的
measures聚合(度量定义见packages/shared/src/features/query/dataModel.tsL82,permalink)。
9. 告警、通知、Webhook、自动化
9.1 Monitor(告警规则)
Monitor对一个指标做窗口聚合并与阈值比较:view、filters、metric、windowMs、cadenceMs、thresholdOperator、alertThreshold、warningThreshold(packages/shared/prisma/schema.prismaL1892-L1922,permalink)。- Monitor 的
view只有OBSERVATIONS、SCORES_NUMERIC、SCORES_CATEGORICAL、SCORES_BOOLEAN,没有TRACES(packages/shared/prisma/schema.prismaL1869-L1874,permalink)。 - 严重度有
PAUSED、UNKNOWN、NO_DATA、OK、WARNING、ALERT(packages/shared/prisma/schema.prismaL1876-L1883,permalink)。 - 比较符有
GT、GTE、LT、LTE、EQ、NEQ(packages/shared/prisma/schema.prismaL1860-L1867,permalink)。 - 处理器
MonitorProcessor用 Dashboard 同一个executeQuery取标量结果(packages/shared/src/features/monitors/processor/processor.tsL17,permalink、packages/shared/src/features/monitors/processor/processor.tsL229,permalink)。 - 处理时会读取
eventSource为monitor且状态为 ACTIVE 的 Trigger,并据此生成 webhook 输入(packages/shared/src/features/monitors/processor/processor.tsL81-L82,permalink、packages/shared/src/features/monitors/processor/processor.tsL90,permalink)。 - 调度器
MonitorScheduler由MonitorRunner(周期独占任务)驱动,投递到MonitorQueue(worker/src/features/monitor-runner/index.tsL17,permalink、worker/src/app.tsL454,permalink)。 - tRPC
monitors:create、update、delete、get、all、count、suggestName、linkedEvaluatorAlerts等(web/src/server/api/routers/monitors.tsL34,permalink、web/src/server/api/routers/monitors.tsL136,permalink)。 - 页面:
/project/[projectId]/alerts(web/src/pages/project/[projectId]/alerts/index.tsxL1,permalink)。
9.2 Automation(Trigger + Action)
Trigger有eventSource、eventActions、filter、status(packages/shared/prisma/schema.prismaL1774-L1791,permalink)。Action类型有WEBHOOK、SLACK、GITHUB_DISPATCH(packages/shared/prisma/schema.prismaL1815-L1820,permalink)。Automation把一个 Trigger 和一个 Action 绑在一起,AutomationExecution记录执行(packages/shared/prisma/schema.prismaL1798-L1815,permalink)。- Trigger 的
eventSource只有三种:prompt、monitor、project-notification(packages/shared/src/domain/automations.tsL5-L13,permalink)。 - 也就是说,没有「Trace 创建」或「Score 创建」这类事件源。已搜索:
packages/shared/src/domain/automations.ts的枚举、packages/shared/src/server/repositories/automation-repository.ts与processor.ts的eventSource用法。 - Webhook 队列任务默认最多重试 5 次,指数退避,初始延迟 5 秒(
packages/shared/src/server/redis/webhookQueue.tsL27-L31,permalink)。 - Worker 的
webhooks.ts同时处理 webhook、Slack 与 GitHub dispatch(worker/src/queues/webhooks.tsL128,permalink、worker/src/queues/webhooks.tsL174,permalink)。 - 请求签名用
createSignatureHeader,头名x-langfuse-signature(worker/src/queues/webhooks.tsL686,permalink)。 - tRPC
automations:getCountOfConsecutiveFailures、regenerateWebhookSecret、getAutomations等(web/src/features/automations/server/router.tsL74,permalink)。 - 页面:
/project/[projectId]/automations(web/src/pages/project/[projectId]/automations.tsxL1,permalink)。
9.3 通知
ProjectNotification是一类事件源,路由「平台出错」事件到通知渠道(packages/shared/src/domain/automations.tsL8,permalink)。事件类型目前有blob-export-failed、posthog-export-failed、evaluator-blocked(packages/shared/src/domain/automations.tsL30-L34,permalink)。- 分发函数是
dispatchProjectNotification(packages/shared/src/server/notifications/dispatchProjectNotification.tsL74,permalink)。 - Slack 集成:
SlackIntegration表存加密的 bot token,一个项目对应一个 Slack 工作区(packages/shared/prisma/schema.prismaL1945-L1957,permalink)。 - Slack OAuth 路由是
/api/public/slack/install与/api/public/slack/oauth(web/src/pages/api/public/slack/install/index.tsL1,permalink)。 - 评论里的 @提及由
commentMentionHandler处理,用户通知偏好是NotificationPreference(worker/src/features/notifications/commentMentionHandler.tsL1,permalink、packages/shared/prisma/schema.prismaL768-L778,permalink)。 - 云端有支出告警
CloudSpendAlert(packages/shared/prisma/schema.prismaL2002-L2014,permalink)。