feat: add billing expression system documentation and enhance tiered billing logic
- Introduced a new rule for the Billing Expression System, emphasizing the importance of reading `pkg/billingexpr/expr.md` for dynamic billing. - Updated the billing expression logic to support new variables and improved handling of image and audio tokens. - Enhanced the tiered billing functionality with versioning support for expressions and refined quota calculations. - Added tests to validate the new billing expression features and ensure correctness in pricing calculations.
This commit is contained in:
@@ -1,5 +1,15 @@
|
||||
package billingexpr
|
||||
|
||||
// quotaConversion converts raw expression output to quota based on the
|
||||
// expression version. This is the central dispatch point for future versions
|
||||
// that may use a different conversion formula.
|
||||
func quotaConversion(exprOutput float64, snap *BillingSnapshot) float64 {
|
||||
switch snap.ExprVersion {
|
||||
default: // v1: coefficients are $/1M tokens prices
|
||||
return exprOutput / 1_000_000 * snap.QuotaPerUnit
|
||||
}
|
||||
}
|
||||
|
||||
// ComputeTieredQuota runs the Expr from a frozen BillingSnapshot against
|
||||
// actual token counts and returns the settlement result.
|
||||
func ComputeTieredQuota(snap *BillingSnapshot, params TokenParams) (TieredResult, error) {
|
||||
@@ -12,7 +22,7 @@ func ComputeTieredQuotaWithRequest(snap *BillingSnapshot, params TokenParams, re
|
||||
return TieredResult{}, err
|
||||
}
|
||||
|
||||
quotaBeforeGroup := cost / 1_000_000 * snap.QuotaPerUnit
|
||||
quotaBeforeGroup := quotaConversion(cost, snap)
|
||||
afterGroup := QuotaRound(quotaBeforeGroup * snap.GroupRatio)
|
||||
crossed := trace.MatchedTier != snap.EstimatedTier
|
||||
|
||||
|
||||
Reference in New Issue
Block a user