| package operation_setting |
|
|
| import "strings" |
|
|
| const ( |
| |
| WebSearchPriceHigh = 25.00 |
| WebSearchPrice = 10.00 |
| |
| FileSearchPrice = 2.5 |
| ) |
|
|
| const ( |
| GPTImage1Low1024x1024 = 0.011 |
| GPTImage1Low1024x1536 = 0.016 |
| GPTImage1Low1536x1024 = 0.016 |
| GPTImage1Medium1024x1024 = 0.042 |
| GPTImage1Medium1024x1536 = 0.063 |
| GPTImage1Medium1536x1024 = 0.063 |
| GPTImage1High1024x1024 = 0.167 |
| GPTImage1High1024x1536 = 0.25 |
| GPTImage1High1536x1024 = 0.25 |
| ) |
|
|
| const ( |
| |
| Gemini25FlashPreviewInputAudioPrice = 1.00 |
| Gemini25FlashProductionInputAudioPrice = 1.00 |
| Gemini25FlashLitePreviewInputAudioPrice = 0.50 |
| Gemini25FlashNativeAudioInputAudioPrice = 3.00 |
| Gemini20FlashInputAudioPrice = 0.70 |
| GeminiRoboticsER15InputAudioPrice = 1.00 |
| ) |
|
|
| const ( |
| |
| ClaudeWebSearchPrice = 10.00 |
| ) |
|
|
| func GetClaudeWebSearchPricePerThousand() float64 { |
| return ClaudeWebSearchPrice |
| } |
|
|
| func GetWebSearchPricePerThousand(modelName string, contextSize string) float64 { |
| |
| |
| |
| |
| |
| isNormalPriceModel := |
| strings.HasPrefix(modelName, "o3") || |
| strings.HasPrefix(modelName, "o4") || |
| strings.HasPrefix(modelName, "gpt-5") |
| var priceWebSearchPerThousandCalls float64 |
| if isNormalPriceModel { |
| priceWebSearchPerThousandCalls = WebSearchPrice |
| } else { |
| priceWebSearchPerThousandCalls = WebSearchPriceHigh |
| } |
| 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 |
| } else if strings.HasPrefix(modelName, "gemini-robotics-er-1.5") { |
| return GeminiRoboticsER15InputAudioPrice |
| } |
| return 0 |
| } |
|
|
| func GetGPTImage1PriceOnceCall(quality string, size string) float64 { |
| prices := map[string]map[string]float64{ |
| "low": { |
| "1024x1024": GPTImage1Low1024x1024, |
| "1024x1536": GPTImage1Low1024x1536, |
| "1536x1024": GPTImage1Low1536x1024, |
| }, |
| "medium": { |
| "1024x1024": GPTImage1Medium1024x1024, |
| "1024x1536": GPTImage1Medium1024x1536, |
| "1536x1024": GPTImage1Medium1536x1024, |
| }, |
| "high": { |
| "1024x1024": GPTImage1High1024x1024, |
| "1024x1536": GPTImage1High1024x1536, |
| "1536x1024": GPTImage1High1536x1024, |
| }, |
| } |
|
|
| if qualityMap, exists := prices[quality]; exists { |
| if price, exists := qualityMap[size]; exists { |
| return price |
| } |
| } |
|
|
| return GPTImage1High1024x1024 |
| } |
|
|