| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package operation_setting
- import "strings"
- const (
- // Web search
- WebSearchPriceHigh = 25.00
- WebSearchPrice = 10.00
- // File search
- 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 (
- // Gemini Audio Input Price
- Gemini25FlashPreviewInputAudioPrice = 1.00
- Gemini25FlashProductionInputAudioPrice = 1.00 // for `gemini-2.5-flash`
- Gemini25FlashLitePreviewInputAudioPrice = 0.50
- Gemini25FlashNativeAudioInputAudioPrice = 3.00
- Gemini20FlashInputAudioPrice = 0.70
- GeminiRoboticsER15InputAudioPrice = 1.00
- )
- 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,故在const区域将各size的价格设为一致。
- // gpt-5, gpt-5-mini, gpt-5-nano 和 o 系列模型价格为 10.00 美元/千次调用,产生额外 token 计入 input_tokens
- // gpt-4o, gpt-4.1, gpt-4o-mini 和 gpt-4.1-mini 价格为 25.00 美元/千次调用,不产生额外 token
- 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
- }
|