LLM MeasurementGitHub
Guides

What changed in your Langfuse costs?

Compare Langfuse export periods to find the model and trace contributors to recorded cost and usage changes.

Get an export

In Langfuse, open Project Settings > Integrations > Blob Storage. Available on Langfuse Cloud Pro with the Teams add-on, Enterprise, or self-hosted. Hobby and Core plans don't include it.

  1. Configure your storage destination. Use enriched exports containing observations_v2/.
  2. Choose JSONL, gzip compression and an hourly schedule.
  3. Keep core, model, usage, prompt and trace_context; exclude the other field groups.
  4. Enable the export, wait for completion manifests, then copy every file they list, including scores.

See Langfuse's export settings and field groups.

Security

The selected fields retain model, trace-name and release grouping. They omit user/session IDs and status_message by excluding basic, but trace_context also exports trace tags. Keep identifiers out of tags. Keep copied exports private: accompanying score files can contain annotations. The CLI reads local files only and makes no Langfuse or provider call.

Try the sample

No Langfuse project is needed. This downloads the released source archive for its synthetic export.

curl -fsSLo install-fleetdiff.sh https://raw.githubusercontent.com/llm-measurement/fleetdiff/2cf3f222e145bd4c5fae18d73caa7ee90976ae03/scripts/install.sh
sh install-fleetdiff.sh v0.13.0 ./fleetdiff-install
curl -fsSLo langfuse-sample.tar.gz 'https://codeload.github.com/llm-measurement/fleetdiff/tar.gz/2cf3f222e145bd4c5fae18d73caa7ee90976ae03'
printf '%s  %s\n' '1c88f08b2ee573301834564141d6f3655bed125674d79a924d618fb956e258a7' langfuse-sample.tar.gz \
  | shasum -a 256 -c -
tar -xzf langfuse-sample.tar.gz
./fleetdiff-install/fleetdiff investigate \
  --langfuse-export 'fleetdiff-2cf3f222e145bd4c5fae18d73caa7ee90976ae03/examples/langfuse-spend/export' \
  --before-period 2026-10-07T00:00:00Z/2026-10-07T01:00:00Z \
  --after-period 2026-10-08T00:00:00Z/2026-10-08T01:00:00Z \
  --group-by provided_model_name

What you'll see

The released sample contains two days, so both periods are explicit.

Recorded tokens doubled (8,000 -> 16,000).
model-1 accounts for 100% of the net recorded increase (+8,000 tokens).
Logged model requests: 4 -> 6.

The report also shows model contributors and local export coverage. Try trace-name grouping to locate the synthetic interactive trace behind the increase.

What the numbers mean

Costs and GENERATION counts are Langfuse records, not an invoice or independently verified provider requests. Manifests verify the local copy, not upstream ingestion completeness.
Measurement notes

  • Only GENERATION observations enter comparisons. Other observation types are counted separately. Duplicate project/observation IDs are deduplicated; conflicting copies stop the comparison with an error.
  • Missing files or uncovered windows remain partial. Restore them before drawing whole-period conclusions.
  • For reported input/output, fleetdiff sums base input plus cache-read/cache-write, and base output plus reasoning, once. The declared total is checked against that sum, not added to it. Missing component detail is counted as unreported.
  • v0.13.0 reports Langfuse request status as unknown; token and cost totals are unaffected.
  • JSONL, JSON and CSV work with or without gzip. Oversize comparisons stop with guidance.

evijay+fleetdiff@gmail.com · Questions · Ran it on your data? Tell us what it found · Security issues (private)