快速结论:这个报错通常出现在使用 Langfuse OpenAPI 规范生成的客户端 SDK 中,表现为删除分数(score)的唯一接口被归入 LegacyScoreV1 标签,导致开发者按“不基于 Legacy 命名构建”的原则误判分数无法删除。优先排查你使用的 Langfuse 版本是否为 v4.59.0 之前。
适用环境:Langfuse 服务端 API 及由其 OpenAPI 规范生成的客户端;Issue 中提及的消费方为 quarkus-langfuse 扩展。其余 Python、CUDA、显卡等环境未在 Issue 中确认。
最快修复方案:升级到 Langfuse v4.59.0 或更高版本。该版本已移除 LegacyScoreV1 标签,删除接口改为与其他分数操作一起位于 scores.yml 中的 DELETE /api/public/scores/{scoreId}。
注意事项:升级后需要重新生成客户端 SDK,旧的生成产物仍会保留 LegacyScoreV1Api 类名。如果你无法升级,可优先尝试在生成客户端后手动核对该删除方法是否存在;Issue 未提供针对旧版本的官方兼容处理方案。
问题场景
用户在使用 Langfuse 的 OpenAPI 规范生成客户端 SDK,或在 quarkus-langfuse 这类封装扩展中调用分数删除功能时触发该问题。规范中 Legacy*V1 标签本应统一标记被取代的旧端点,但 LegacyScoreV1 下唯一用于删除分数的 DELETE /api/public/scores/{scoreId} 并未携带 deprecated: true,也没有移除提示。由于标签名会转换为生成客户端中的类名,删除分数的方法会以 LegacyScoreV1Api.legacyScoreV1Delete(...) 形式出现,让遵循“不要基于 Legacy 命名构建”的开发者误以为分数不可删除。
报错原文
LegacyScoreV1 holds a non-deprecated endpoint, unlike the other Legacy*V1 tags
原因分析
可能原因是迁移状态而非疏忽。规范中 /api/public/v3/scores 是整个文档里唯一的 v3 路径,说明分数域可能最先迁移到 v3,而 v3 当时只有列表能力,没有 create 和 delete,删除端点尚未迁移过去。由于标签名直接驱动生成客户端的类名,删除端点被继续归在 LegacyScoreV1 下,且未标记 deprecated,形成了误导信号。
环境排查
- 确认正在使用的 Langfuse 版本号,是否为 v4.59.0 之前。
- 确认生成客户端所用 OpenAPI 规范的来源与版本。
- 确认生成后的 SDK 中是否存在
LegacyScoreV1Api类及对应的legacyScoreV1Delete方法。 - 确认扩展或封装(如 quarkus-langfuse)是否依赖该标签名做客户端构建。
解决步骤
- 将 Langfuse 升级到 v4.59.0 或更高版本。
- 升级后重新拉取或重新生成对应的 OpenAPI 客户端 SDK。
- 在生成产物中确认
LegacyScoreV1标签已消失,分数删除操作已归入其他分数操作所在文件scores.yml,对应路径为DELETE /api/public/scores/{scoreId}。
验证方法
检查新生成的客户端中不再存在 LegacyScoreV1Api 类,且删除分数的方法不再以 legacy* 前缀出现;同时确认 DELETE /api/public/scores/{scoreId} 能在不含 Legacy 标签的类中被正常调用。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


