bug: Widget for Unique Sessions Count incorrect

用户在 Langfuse 自托管实例(版本 3.171.0)中构建仪表盘 Widget,并选择 "Unique Session Ids" 作为指标时,发现计数结果与 "Traces Count" Widget 完全相同。即使用户通过 API 发送了不同 SessionID 的追踪数据(例如追踪名称均

快速结论:该 bug 发生在 Langfuse 自托管实例的仪表盘 Widget 中,当选择 “Unique Session Ids” 为指标时,实际计数的是总追踪数(Traces)而非独立会话数。优先排查是否已开启 Fast Mode,该模式下的查询路径已修复此问题。

问题场景

用户在 Langfuse 自托管实例(版本 3.171.0)中构建仪表盘 Widget,并选择 “Unique Session Ids” 作为指标时,发现计数结果与 “Traces Count” Widget 完全相同。即使用户通过 API 发送了不同 SessionID 的追踪数据(例如追踪名称均为 “traceA”,SessionID 为 “session-id-{var}” 形式),两个 Widget 仍然显示相同数值。
注意:偶尔在反复切换 Widget 设置后,数值可能临时正确,但一旦将 Widget 添加到仪表盘或更改时间范围,错误会再次出现。

报错原文

# 该 bug 不产生命令行报错,而是界面显示错误数值。
# 现象描述:Widget 设置页面选择 "Unique Session Ids" 后,计数结果与 "Traces Count" 完全一致。
# 截图对比显示数字相同,而预期中二者应有差异。

原因分析

根因位于 queryBuilder.ts 文件中的 translateAggregation 方法。该方法在处理 count(uniqueSessionIds) 时,错误地对预聚合后的别名(alias)进行了计数,而非使用底层的 uniq(traces.session_id) 聚合函数。这导致最终计数的是数据行数(即追踪数)而非真正的独立会话数。

环境排查

  • 确认 Langfuse 版本是否为 3.171.0(或相近版本)
  • 确认是否使用的是自托管(Self-hosted)实例
  • 确认 SDK 版本(用户环境为 3.38.12)
  • 检查是否已启用 Fast Mode(该模式下的查询路径已修复)

解决步骤

  1. 启用 Fast Mode(可优先尝试):在自托管实例的设置或配置中开启 Fast Mode。该模式下的查询路径已包含修复,可以正确计算独立会话数。
  2. 等待 v4 OSS 发布:项目维护者已确认旧(非 Fast Mode)代码路径的修复将被包含在 v4 开源版本中,目前没有单独修复旧路径的计划。
  3. 如需临时验证:可尝试反复切换 Widget 的统计设置(如切换指标类型再切回 “Unique Session Ids”),但请注意此方法不稳定,且在添加至仪表盘或更改时间范围后会失效。

验证方法

在同一仪表盘中并排放置 “Unique Session Ids” Widget 和 “Traces Count” Widget,并发送带有不同 SessionID 的测试追踪数据。如果二者数值不再相同,且 “Unique Session Ids” 显示的数字低于 “Traces Count”,则说明问题已解决。

参考来源

langfuse/langfuse #13417

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 16141

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注