diff --git a/common/model-ratio.go b/common/model-ratio.go index b3933e3..47745ff 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -34,14 +34,16 @@ var defaultModelRatio = map[string]float64{ "gpt-4o-mini": 0.075, // $0.00015 / 1K tokens "gpt-4o-mini-2024-07-18": 0.075, "chatgpt-4o-latest": 2.5, // $0.01 / 1K tokens - "gpt-4o": 2.5, // $0.005 / 1K tokens + "gpt-4o": 1.25, // $0.005 / 1K tokens "gpt-4o-2024-05-13": 2.5, // $0.005 / 1K tokens "gpt-4o-2024-08-06": 1.25, // $0.01 / 1K tokens "gpt-4o-2024-11-20": 1.25, // $0.01 / 1K tokens "o1-preview": 7.5, "o1-preview-2024-09-12": 7.5, - "o1-mini": 1.5, - "o1-mini-2024-09-12": 1.5, + "o1-mini": 0.55, // $0.0011 / 1K tokens + "o1-mini-2024-09-12": 0.55, + "o3-mini": 0.55, + "o3-mini-2025-01-31": 0.55, "gpt-4-turbo": 5, // $0.01 / 1K tokens "gpt-4-turbo-2024-04-09": 5, // $0.01 / 1K tokens "gpt-4-1106-preview": 5, // $0.01 / 1K tokens @@ -365,6 +367,9 @@ func GetCompletionRatio(name string) float64 { if "o1" == name || strings.HasPrefix(name, "o1-") { return 4 } + if "o3" == name || strings.HasPrefix(name, "o3-") { + return 4 + } if name == "chatgpt-4o-latest" { return 3 } diff --git a/dto/text_request.go b/dto/text_request.go index f0b8622..e4365ee 100644 --- a/dto/text_request.go +++ b/dto/text_request.go @@ -3,38 +3,39 @@ package dto import "encoding/json" type GeneralOpenAIRequest struct { - Model string `json:"model,omitempty"` - Messages []Message `json:"messages,omitempty"` - Prompt any `json:"prompt,omitempty"` - BestOf int `json:"best_of,omitempty"` - Echo bool `json:"echo,omitempty"` - Stream bool `json:"stream,omitempty"` - StreamOptions *StreamOptions `json:"stream_options,omitempty"` - Suffix string `json:"suffix,omitempty"` - MaxTokens uint `json:"max_tokens,omitempty"` + Model string `json:"model,omitempty"` + ReasoningEffort string `json:"reasoning_effort,omitempty"` + Messages []Message `json:"messages,omitempty"` + Prompt any `json:"prompt,omitempty"` + BestOf int `json:"best_of,omitempty"` + Echo bool `json:"echo,omitempty"` + Stream bool `json:"stream,omitempty"` + StreamOptions *StreamOptions `json:"stream_options,omitempty"` + Suffix string `json:"suffix,omitempty"` + MaxTokens uint `json:"max_tokens,omitempty"` MaxCompletionTokens uint `json:"max_completion_tokens,omitempty"` - Temperature float64 `json:"temperature,omitempty"` - TopP float64 `json:"top_p,omitempty"` - TopK int `json:"top_k,omitempty"` - Stop any `json:"stop,omitempty"` - N int `json:"n,omitempty"` - Input any `json:"input,omitempty"` - Instruction string `json:"instruction,omitempty"` - Size string `json:"size,omitempty"` - Functions any `json:"functions,omitempty"` - FrequencyPenalty float64 `json:"frequency_penalty,omitempty"` - PresencePenalty float64 `json:"presence_penalty,omitempty"` - ResponseFormat any `json:"response_format,omitempty"` - Seed float64 `json:"seed,omitempty"` - Tools []ToolCall `json:"tools,omitempty"` - ToolChoice any `json:"tool_choice,omitempty"` - User string `json:"user,omitempty"` - LogitBias any `json:"logit_bias,omitempty"` - LogProbs any `json:"logprobs,omitempty"` - TopLogProbs int `json:"top_logprobs,omitempty"` - Dimensions int `json:"dimensions,omitempty"` - ParallelToolCalls bool `json:"parallel_Tool_Calls,omitempty"` - EncodingFormat any `json:"encoding_format,omitempty"` + Temperature float64 `json:"temperature,omitempty"` + TopP float64 `json:"top_p,omitempty"` + TopK int `json:"top_k,omitempty"` + Stop any `json:"stop,omitempty"` + N int `json:"n,omitempty"` + Input any `json:"input,omitempty"` + Instruction string `json:"instruction,omitempty"` + Size string `json:"size,omitempty"` + Functions any `json:"functions,omitempty"` + FrequencyPenalty float64 `json:"frequency_penalty,omitempty"` + PresencePenalty float64 `json:"presence_penalty,omitempty"` + ResponseFormat any `json:"response_format,omitempty"` + Seed float64 `json:"seed,omitempty"` + Tools []ToolCall `json:"tools,omitempty"` + ToolChoice any `json:"tool_choice,omitempty"` + User string `json:"user,omitempty"` + LogitBias any `json:"logit_bias,omitempty"` + LogProbs any `json:"logprobs,omitempty"` + TopLogProbs int `json:"top_logprobs,omitempty"` + Dimensions int `json:"dimensions,omitempty"` + ParallelToolCalls bool `json:"parallel_tool_calls,omitempty"` + EncodingFormat any `json:"encoding_format,omitempty"` } type OpenAITools struct {