bug: Langfuse cost tracking for gemini-2.5-flash does not match Google Cloud billing

用户在自托管 Langfuse 环境中,通过 Google AI SDK 调用 gemini-2.5-flash 模型,并在生产环境下发现 Langfuse 追踪的成本与 Google Cloud 账单中的实际支出存在显著差异。

bug: Langfuse cost tracking for gemini-2.5-flash does not match Google Cloud billing

bug: Langfuse cost tracking for gemini-2.5-flash does not match Google Cloud billing

快速结论:该报错发生在使用 gemini-2.5-flash 模型时,Langfuse 的成本追踪与 Google Cloud 实际账单金额不一致,通常表现为 Langfuse 低估了成本。优先排查 worker 目录下 default-model-prices.json 中 gemini-2.5-flash 的价格配置是否正确。

问题场景

用户在自托管 Langfuse 环境中,通过 Google AI SDK 调用 gemini-2.5-flash 模型,并在生产环境下发现 Langfuse 追踪的成本与 Google Cloud 账单中的实际支出存在显著差异。

报错原文

Cost tracking for gemini-2.5-flash does not match Google Cloud billing
Langfuse is significantly under-reporting costs compared to what Google charges us.

原因分析

根本原因可能是 default-model-prices.json 中的 gemini-2.5-flash 模型定价配置值不正确。具体问题包括:

  • 输入价格:当前配置为 $0.30/百万 token,但 Google 实际收费为 $0.15/百万 token。
  • 输出价格:当前配置为 $2.50/百万 token,但 Google 实际收费为 $3.50/百万 token。
  • 思考令牌(Thinking tokens):当前配置将其与输出 token 同等定价($2.50/百万),但 Google 对思考令牌单独收费 $0.70/百万 token,且 Langfuse 将所有 thoughtsTokenCount 归入输出价格计算。
  • 缺少大上下文阶梯:当使用量超过 200K token 时,Google 会按更高价格收费(输入 $0.30/百万、输出 $10.50/百万、思考令牌 $0.70/百万),但当前配置仅有一个“标准”价格层。

环境排查

  • 确认 Langfuse 版本:检查是否使用了自托管的 Langfuse,以及其 worker/src/constants/default-model-prices.json 文件中 gemini-2.5-flash 的价格值。
  • 确认模型调用:使用 Google AI SDK 调用 gemini-2.5-flash,并检查返回的 usage 元数据(包括 prompt_token_countcandidates_token_countthoughts_token_counttotal_token_count)。
  • 确认账单:比对同一时间段内的 Google Cloud 账单仪表盘与 Langfuse 追踪的成本数据。

解决步骤

  1. 直接修复定价文件(可优先尝试):找到 worker/src/constants/default-model-prices.json 文件中 gemini-2.5-flash 的配置项,将:
    • 输入价格从 3e-7($0.30/百万)更正为 1.5e-7($0.15/百万)。
    • 输出价格从 2.5e-6($2.50/百万)更正为 3.5e-6($3.50/百万)。
    • 思考令牌价格单独设置为 7e-7($0.70/百万),且不应与输出价格合并。
  2. 添加大上下文阶梯:在配置中增加超过 200K token 的大上下文计费层,并设置相应价格(输入 $0.30/百万、输出 $10.50/百万、思考令牌 $0.70/百万)。参考 Google AI 定价页面(如 https://ai.google.dev/pricing)。
  3. 手动提供成本(临时替代方案):若临时无法修复,可在 SDK 中手动设置成本值直接覆盖 Langfuse 的计算:
    langfuse.update_current_generation(
        usage_details={
            "input": usage.prompt_token_count,
            "output": usage.candidates_token_count,
            "thoughts_token_count": usage.thoughts_token_count,
        }
    )
  4. 在 UI 中配置自定义模型:在 Langfuse 设置的 UI 界面中,为 gemini-2.5-flash 定义一个具有正确价格的自定义模型。

验证方法

修复后,执行一次 gemini-2.5-flash 调用,记录返回的 token 数,并在 Google Cloud 账单仪表盘与 Langfuse 追踪的成本之间进行比对,确认价格差异已消失。同时确认思考令牌(thinking tokens)未再被按输出价格计费。

参考来源

langfuse/langfuse #13820

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 7542

发表回复

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