Is Your LLM Overcharging You? Tokenization, Transparency, and Incentives
SAI replication review · Referee report
Summary
The paper studies the economic incentives that pay-per-token pricing creates in LLM-as-a-service markets. Framing the interaction as a principal-agent problem — the provider observes the full generative process, the user sees only a reported token sequence — the authors argue that providers have a direct financial incentive to report longer-than-necessary tokenizations of the same output string. The core conceptual move is to formalize this moral hazard and to ask two questions in tandem: whether a self-serving provider can misreport while remaining "plausible" under a next-token-probability transparency requirement, and what pricing mechanism eliminates the incentive altogether. The authors prove that finding the longest plausible tokenization under top- sampling is NP-hard via a reduction from Hamiltonian path, and extend the hardness to top- and probability-threshold plausibility. They then show constructively that a simple index-based greedy heuristic (Algorithm 1) already lets a transparent provider overcharge non-trivially, and — using the empirical observation that verification cost is roughly constant in sequence length — that the resulting utility gain remains positive over a wide margin range. On the mechanism side, they characterize additive incentive-compatible pricing as necessarily linear in character counts (Theorem 4.3), motivating a pay-per-character rule and a price that preserves the provider's average pay-per-token margin. The framing is timely and the mechanism-design half is a genuinely useful contribution. Execution evidence strengthens the central story: the energy table, the utility-gain mechanism, the flatness of verification cost, and the pay-per-character margin results all reproduce. However, the marquee overcharge percentages () did not reproduce from the released code at scale, and the effect is concentrated at temperature and . The main conceptual limitation is that pay-per-character removes the tokenization-inflation incentive but not the closely related verbosity-inflation incentive — acknowledged in one sentence and not analyzed — so incentive-compatibility is scoped to fixed output strings rather than to the task.
Strengths
- Conceptual framing. Casting LLM billing as a principal-agent problem with hidden actions is a clarifying move: it explains why the current market can plausibly hide overcharging even from technically competent users, and it sits cleanly within a well-developed economics literature.
- NP-hardness result. The Hamiltonian-path reduction in Theorem 3.2 is non-trivial and generalizes to top- (Appendix C.1.1) and to a probability-threshold plausibility criterion (Appendix C.1.2), so the hardness holds across the plausibility notions a real provider might advertise.
- Characterization of incentive-compatible additive pricing. Theorem 4.3 is clean and yields a concrete migration path: the conversion is deployable, and execution confirms it preserves the average margin exactly while keeping per-output margins positive for – of sequences.
- Constructive vulnerability, empirically anchored. Algorithm 1 plus the constant-verification-cost observation move the vulnerability from "in principle" to "in practice profitable." Execution reproduces the net-positive utility gain ( at for Llama-3.2-1B-Instruct) and the flatness of verification energy (coefficient of variation – over – tokens for four of five models).
- Empirical breadth. Five open-weight models across three families, three temperatures, three top- values, and four languages; the multilingual analysis in Appendix D.4 addresses a fairness concern explicitly and reproduces the direction of the effect.
Weaknesses
- Verbosity loophole is admitted but not addressed. Section 5 notes in one sentence that pay-per-character does not prevent verbosity-based overcharging. This threatens the central prescription: an incentive-compatible mechanism that lets providers pad outputs merely relocates the moral hazard, and since verbosity padding needs no plausibility check or verification cost it may be strictly more profitable than Algorithm 1. The guarantee (Definition 4.1) is conditioned on a fixed generated string, so it is scoped to a fixed string, not the task.
- Practical severity is narrow. The overcharge only appears at temperature , and the headline requires ; at it drops to . Typical serving configurations (temperature , ) fall largely outside the profitable regime, which the abstract's "significantly overcharge" framing does not convey.
- Overreach on "unique" mechanism. Section 4 says "there is only one incentive-compatible pricing mechanism," but after fixing additivity and equal per-character pricing, Theorem 4.3 still leaves free — a one-parameter family. The Conclusions strengthen this to "must be required to price users per character," dropping both additivity and equal pricing.
- Generalization to proprietary LLMs is asserted, not argued. "We cannot find any reason to believe our results will not generalize" is weak for a claim that motivates the paper. Proprietary providers can misreport more than tokenization — a decoy tokenizer, altered next-token probabilities, or silent model substitution (Cai et al., 2025) — breaking the plausibility framework in ways the open-weight setup cannot detect.
- NP-hardness sketch in the main text is incomplete. The prose describes only the simple-path half of the correspondence; the covers-every-node requirement essential to Hamiltonian path is compressed into the appendix character-count argument and is invisible in the main text.
- Competition-argument feasibility. The market-dynamics sketch assumes an unfaithful provider can reach ; this is bounded by , and the "sufficiently long" qualifier does not identify the feasible range of .
- "Regardless of the margin" is broader than the sweep. Eq. 4 makes the utility-gain condition a function of and Figure 3 sweeps ; execution actually supports profitability across for , but the sentence still reads as an all- claim while the plotted evidence stops at .
- Statistical and presentation inconsistencies. The -value corresponds to seeds, not the stated (correct value ); prompt counts () are never reconciled; the source is called both "LMSYS Chatbot Arena" and "LMSYS-Chat-1M"; Figure 6 cross-references Figure 2 for optimal though its grid matches Figure 5; and the utility-gain baseline is never stated, making the pair ( overcharge vs utility gain) look contradictory.
Reproducibility & code
Execution (veritas, full mode) reproduced of extracted claims, including of headline claims and the central profitability mechanism.
- Energy backbone reproduces exactly. All cells of Table 1 (, , for five models) reproduce to the third decimal from the shipped
energy_results_*.jsonsnapshots, and the flatness of verification energy is confirmed quantitatively (CV – for four models; a CV outlier for Gemma-3-4B-It). The utility-gain mechanism (Figure 3) also reproduces at . - Headline overcharge percentages did not reproduce as shipped. Re-running the pipeline produced versus the paper's . This is largely a scale artifact: the shipped verification routine was too slow to run at prompts, forcing a -prompt run. Recomputing the paper's own formula on the authors' shipped full-scale data gives , broadly consistent with the paper (though is lower). The central mechanism holds; the precise signature numbers are fragile and not independently reproducible from the released code.
- Pay-per-character results reproduce. Positive-margin fractions (), exact average-margin preservation under , and the multilingual squeeze on Russian/Chinese all reproduce.
- Released code required substantial repair; Algorithm 2 not shipped. Reproduction needed fixes ( critical, major, minor). The random-splitting policy behind Figure 1 shipped with no generator or data and was reimplemented from the text; the verification routine had to be vectorized/batched to run at scale — both indicating the released code did not, as shipped, produce the released numbers.
- Generation/verification inconsistency. Generation applied
no_repeat_ngram_size=2while verification used a plain top- nucleus, collapsing plausibility counts to zero until reconciled — a substantive mismatch between the advertised plausibility criterion and the actual generative process. - Undocumented CI rescaling and artifact divergences. The profit notebook applies
std_095 *= 0.3, narrowing the plotted band ; the energy scripts target ana100partition despite the paper's H100 claim; snapshots usenum_seq=3not ; the released system prompt differs from the paper's; and notebooks load.pklwhile the release ships.json, blocking a clean re-run.
Recommended Changes
Essential
- Address the verbosity attack. Add a quantitative treatment of verbosity-based overcharging under pay-per-character (bound the achievable character inflation for the studied LLMs, or prove an impossibility), or explicitly scope the incentive-compatibility guarantee to a fixed output string .
- Weaken the uniqueness and "must" claims. Rewrite the Section 4 uniqueness sentence as "a unique one-parameter family, parameterized by the per-character price ," and replace the Conclusions' "must be required to price users per character" with the qualified statement Theorem 4.3 supports (additive, character-linear, equal per-character pricing an added assumption).
- Reconcile the headline overcharge numbers with a runnable release. Release the optimized verification code and full-scale data that generate the figures, since the shipped code cannot reproduce them at scale; report the actual seed count and prompt count used for these numbers.
- Ship a runnable Algorithm 2 pipeline and fix the sampling inconsistency. Add the random-splitting generator and its outputs behind Figure 1, and make generation and verification use identical sampling constraints (remove or document the
no_repeat_ngram_sizemismatch). - Reconcile counts, naming, hardware, and seeds. State one canonical sample size per experiment, standardize on "LMSYS-Chat-1M," clarify whether measurements are H100 or A100, and align the released
num_seqand system prompt with the paper. - Fix the confidence-interval -value. Either report seeds (consistent with ) or replace with for seeds.
- Document or remove
std_095 *= 0.3. State the rationale in Appendix B or remove the rescaling so Figure 3's band reflects the seeds.
Suggested
- Scope the practical-severity claim. State prominently that overcharging requires temperature and is substantial only near , so "significantly overcharge" is not read as general across serving configurations.
- Rephrase "regardless of the margin." Use "for all in the range examined," or extend Figure 3 to the corner.
- Complete the NP-hardness sketch. Add a sentence noting that plausibility plus forces coverage of every node exactly once.
- Bound the feasible range in the competition argument via .
- Report the verification-cost bound. Include the reproduced CV figures (and the Gemma-3-4B-It outlier) instead of the visual claim.
- Clarify the utility-gain baseline so the pair is not read as contradictory.
- Scope the proprietary-LLM claim. Either add evidence on a proprietary API or restrict conclusions to open-weight models, noting orthogonal misreporting channels.
- Correct Figure 6's cross-reference to Figure 5, and convert the notebook loaders to read the released
.json(or ship the.pkl).