快速结论:该报错发生在通过 Langfuse 的 public scores API 使用 operator 参数(如 >、<)进行数值评分过滤时,后端过滤逻辑未正确应用操作符,导致返回结果与预期不符。优先排查后端查询构造或操作符映射问题,目前暂无官方标准解决方案。
问题场景
用户在使用 Langfuse Cloud 的 Python SDK 调用 score_v2 API,通过 operator 和 value 参数过滤评分(例如 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_timestamp和to_timestamp时间范围覆盖了测试数据 - 尝试在 API 请求中去掉其他参数(如
name、limit等),单独测试operator和value组合
解决步骤
- 作为临时测试,可以尝试使用其他操作符(如
"=="或">="),检查这些操作符是否按预期工作,以进一步确认问题范围。 - 可优先尝试在客户端(应用层)进行二次过滤:先不传入
operator参数,获取指定时间范围内的所有评分数据,然后在代码中手动按数值条件过滤。 - 如果依赖精确的数值过滤功能,建议关注 Langfuse 官方修复进度,或考虑将数据导出至外部工具处理。
- 避免在生产环境中依赖脆弱的
operator过滤逻辑,直至官方确认并修复该 bug。
验证方法
使用相同的测试脚本分别在带 operator 和不带 operator 的场景下执行查询,对比返回结果的数值分布。如果客户端过滤后的数据符合预期,但 API 过滤依旧异常,则可确认问题在服务端。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


