| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package operation_setting
- import "strings"
- const (
- // Web search
- WebSearchHighTierModelPriceLow = 30.00
- WebSearchHighTierModelPriceMedium = 35.00
- WebSearchHighTierModelPriceHigh = 50.00
- WebSearchPriceLow = 25.00
- WebSearchPriceMedium = 27.50
- WebSearchPriceHigh = 30.00
- // File search
- FileSearchPrice = 2.5
- )
- const (
- // Gemini Audio Input Price
- Gemini25FlashPreviewInputAudioPrice = 1.00
- Gemini25FlashProductionInputAudioPrice = 1.00 // for `gemini-2.5-flash`
- Gemini25FlashLitePreviewInputAudioPrice = 0.50
- Gemini25FlashNativeAudioInputAudioPrice = 3.00
- Gemini20FlashInputAudioPrice = 0.70
- )
- const (
- // Claude Web search
- ClaudeWebSearchPrice = 10.00
- )
- func GetClaudeWebSearchPricePerThousand() float64 {
- return ClaudeWebSearchPrice
- }
- func GetWebSearchPricePerThousand(modelName string, contextSize string) float64 {
- // 确定模型类型
- // https://platform.openai.com/docs/pricing Web search 价格按模型类型和 search context size 收费
- // gpt-4.1, gpt-4o, or gpt-4o-search-preview 更贵,gpt-4.1-mini, gpt-4o-mini, gpt-4o-mini-search-preview 更便宜
- isHighTierModel := (strings.HasPrefix(modelName, "gpt-4.1") || strings.HasPrefix(modelName, "gpt-4o")) &&
- !strings.Contains(modelName, "mini")
- // 确定 search context size 对应的价格
- var priceWebSearchPerThousandCalls float64
- switch contextSize {
- case "low":
- if isHighTierModel {
- priceWebSearchPerThousandCalls = WebSearchHighTierModelPriceLow
- } else {
- priceWebSearchPerThousandCalls = WebSearchPriceLow
- }
- case "medium":
- if isHighTierModel {
- priceWebSearchPerThousandCalls = WebSearchHighTierModelPriceMedium
- } else {
- priceWebSearchPerThousandCalls = WebSearchPriceMedium
- }
- case "high":
- if isHighTierModel {
- priceWebSearchPerThousandCalls = WebSearchHighTierModelPriceHigh
- } else {
- priceWebSearchPerThousandCalls = WebSearchPriceHigh
- }
- default:
- // search context size 默认为 medium
- if isHighTierModel {
- priceWebSearchPerThousandCalls = WebSearchHighTierModelPriceMedium
- } else {
- priceWebSearchPerThousandCalls = WebSearchPriceMedium
- }
- }
- return priceWebSearchPerThousandCalls
- }
- func GetFileSearchPricePerThousand() float64 {
- return FileSearchPrice
- }
- func GetGeminiInputAudioPricePerMillionTokens(modelName string) float64 {
- if strings.HasPrefix(modelName, "gemini-2.5-flash-preview-native-audio") {
- return Gemini25FlashNativeAudioInputAudioPrice
- } else if strings.HasPrefix(modelName, "gemini-2.5-flash-preview-lite") {
- return Gemini25FlashLitePreviewInputAudioPrice
- } else if strings.HasPrefix(modelName, "gemini-2.5-flash-preview") {
- return Gemini25FlashPreviewInputAudioPrice
- } else if strings.HasPrefix(modelName, "gemini-2.5-flash") {
- return Gemini25FlashProductionInputAudioPrice
- } else if strings.HasPrefix(modelName, "gemini-2.0-flash") {
- return Gemini20FlashInputAudioPrice
- }
- return 0
- }
|