bug: public scores API operator parameter odd behavior

用户在使用 Langfuse Cloud 的 Python SDK 调用 score_v2 API,通过 operator 和 value 参数过滤评分(例如 operator=">" 和 value=0 ),期望返回大于 0 的评分,但实际 API 返回了 0 条结果;而当使用 operator=

快速结论:该报错发生在通过 Langfuse 的 public scores API 使用 operator 参数(如 ><)进行数值评分过滤时,后端过滤逻辑未正确应用操作符,导致返回结果与预期不符。优先排查后端查询构造或操作符映射问题,目前暂无官方标准解决方案。

问题场景

用户在使用 Langfuse Cloud 的 Python SDK 调用 score_v2 API,通过 operatorvalue 参数过滤评分(例如 operator=">"value=0),期望返回大于 0 的评分,但实际 API 返回了 0 条结果;而当使用 operator="<"value=0 时,API 却返回了包含 1.0、0.0、-1.0 等值的结果,明显违背了操作符语义。

报错原文

Testing positive scores with numeric value:
Found 0 positive scores

Testing negative scores with numeric value:
Found 5 negative scores
  1: value=-1.0
  2: value=0.0
  3: value=-1.0
  4: value=-1.0
  5: value=1.0

注意:当使用 operator=">" 时应返回评分大于 0 的记录,但结果为 0;当使用 operator="<" 时应返回评分小于 0 的记录,但结果中包含了 0.0 和 1.0 等非负数。

原因分析

可能原因是后端在构建数据库查询时,操作符参数(operator)的处理逻辑存在 bug,未能正确映射到数据库过滤条件。具体表现为:

  • operator=">" 完全未返回任何结果,可能是条件被忽略或与其他参数冲突。
  • operator="<" 返回的结果包含了 >= 0 的数值,类似未应用任何操作符过滤。

已有多个用户报告类似的 operator 参数问题,且官方文档未明确说明数值过滤中 operator 的预期语义。

环境排查

  • 确认是否使用 Langfuse Cloud 版本(本 Issue 触发于 Cloud,self-hosted 版本也可能存在相同问题)
  • 确认 Python SDK 版本(建议升级到最新版后重试)
  • 确认调用时是否正确传入了 data_type="NUMERIC" 参数
  • 确认 from_timestampto_timestamp 时间范围覆盖了测试数据
  • 尝试在 API 请求中去掉其他参数(如 namelimit 等),单独测试 operatorvalue 组合

解决步骤

  1. 作为临时测试,可以尝试使用其他操作符(如 "=="">="),检查这些操作符是否按预期工作,以进一步确认问题范围。
  2. 可优先尝试在客户端(应用层)进行二次过滤:先不传入 operator 参数,获取指定时间范围内的所有评分数据,然后在代码中手动按数值条件过滤。
  3. 如果依赖精确的数值过滤功能,建议关注 Langfuse 官方修复进度,或考虑将数据导出至外部工具处理。
  4. 避免在生产环境中依赖脆弱的 operator 过滤逻辑,直至官方确认并修复该 bug。

验证方法

使用相同的测试脚本分别在带 operator 和不带 operator 的场景下执行查询,对比返回结果的数值分布。如果客户端过滤后的数据符合预期,但 API 过滤依旧异常,则可确认问题在服务端。

参考来源

langfuse/langfuse #8630

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 16214

发表回复

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