Ctrl K
ComunidadGuías…

model/legacy_dalle_pricing.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package model

// Deprecated model compatibility: OpenAI removed DALL·E 2 and DALL·E 3 on
// 2026-05-12. Keep conversion of existing prices available for compatible
// upstreams, deriving every multiplier from the legacy DTO billing logic.
// https://developers.openai.com/api/docs/deprecations#2025-11-14-dalle-model-snapshots

import (
	"strings"

	"github.com/QuantumNous/new-api/relaykit/dto"
)

func legacyDallePricingRules(name string) []LegacyPricingRule {
	if !strings.HasPrefix(name, "dall-e") {
		return nil
	}
	var rules []LegacyPricingRule
	if name != "dall-e-3" {
		for _, size := range []string{"256x256", "512x512"} {
			request := dto.ImageRequest{Model: name, Size: size}
			rules = append(rules, LegacyPricingRule{`param("size") == "` + size + `"`, request.GetTokenCountMeta().ImagePriceRatio})
		}
	}
	rectangle := dto.ImageRequest{Model: name, Size: "1024x1792"}
	if name != "dall-e-2" && name != "dall-e" {
		rules = append(rules, LegacyPricingRule{`param("size") == "1024x1792" || param("size") == "1792x1024"`, rectangle.GetTokenCountMeta().ImagePriceRatio})
	}
	if name == "dall-e-3" {
		squareHD := dto.ImageRequest{Model: name, Size: "1024x1024", Quality: "hd"}
		rectangleHD := dto.ImageRequest{Model: name, Size: rectangle.Size, Quality: "hd"}
		rules = append(rules,
			LegacyPricingRule{`param("quality") == "hd" && param("size") != "1024x1792" && param("size") != "1792x1024"`, squareHD.GetTokenCountMeta().ImagePriceRatio},
			LegacyPricingRule{`param("quality") == "hd" && (param("size") == "1024x1792" || param("size") == "1792x1024")`, rectangleHD.GetTokenCountMeta().ImagePriceRatio / rectangle.GetTokenCountMeta().ImagePriceRatio})
	}
	return rules
}