feat: update MaxTokens handling

This commit is contained in:
CaIon
2025-08-07 16:15:59 +08:00
parent 71c39c9893
commit d9c1fb5244
13 changed files with 18 additions and 39 deletions

View File

@@ -161,7 +161,7 @@ func testChannel(channel *model.Channel, testModel string) testResult {
logInfo.ApiKey = "" logInfo.ApiKey = ""
common.SysLog(fmt.Sprintf("testing channel %d with model %s , info %+v ", channel.Id, testModel, logInfo)) common.SysLog(fmt.Sprintf("testing channel %d with model %s , info %+v ", channel.Id, testModel, logInfo))
priceData, err := helper.ModelPriceHelper(c, info, 0, int(request.MaxTokens)) priceData, err := helper.ModelPriceHelper(c, info, 0, int(request.GetMaxTokens()))
if err != nil { if err != nil {
return testResult{ return testResult{
context: c, context: c,

View File

@@ -99,8 +99,11 @@ type StreamOptions struct {
IncludeUsage bool `json:"include_usage,omitempty"` IncludeUsage bool `json:"include_usage,omitempty"`
} }
func (r *GeneralOpenAIRequest) GetMaxTokens() int { func (r *GeneralOpenAIRequest) GetMaxTokens() uint {
return int(r.MaxTokens) if r.MaxCompletionTokens != 0 {
return r.MaxCompletionTokens
}
return r.MaxTokens
} }
func (r *GeneralOpenAIRequest) ParseInput() []string { func (r *GeneralOpenAIRequest) ParseInput() []string {

View File

@@ -34,9 +34,9 @@ func requestOpenAI2Baidu(request dto.GeneralOpenAIRequest) *BaiduChatRequest {
EnableCitation: false, EnableCitation: false,
UserId: request.User, UserId: request.User,
} }
if request.MaxTokens != 0 { if request.GetMaxTokens() != 0 {
maxTokens := int(request.MaxTokens) maxTokens := int(request.GetMaxTokens())
if request.MaxTokens == 1 { if request.GetMaxTokens() == 1 {
maxTokens = 2 maxTokens = 2
} }
baiduRequest.MaxOutputTokens = &maxTokens baiduRequest.MaxOutputTokens = &maxTokens

View File

@@ -149,7 +149,7 @@ func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*dto.Cla
claudeRequest := dto.ClaudeRequest{ claudeRequest := dto.ClaudeRequest{
Model: textRequest.Model, Model: textRequest.Model,
MaxTokens: textRequest.MaxTokens, MaxTokens: textRequest.GetMaxTokens(),
StopSequences: nil, StopSequences: nil,
Temperature: textRequest.Temperature, Temperature: textRequest.Temperature,
TopP: textRequest.TopP, TopP: textRequest.TopP,

View File

@@ -5,7 +5,7 @@ import "one-api/dto"
type CfRequest struct { type CfRequest struct {
Messages []dto.Message `json:"messages,omitempty"` Messages []dto.Message `json:"messages,omitempty"`
Lora string `json:"lora,omitempty"` Lora string `json:"lora,omitempty"`
MaxTokens int `json:"max_tokens,omitempty"` MaxTokens uint `json:"max_tokens,omitempty"`
Prompt string `json:"prompt,omitempty"` Prompt string `json:"prompt,omitempty"`
Raw bool `json:"raw,omitempty"` Raw bool `json:"raw,omitempty"`
Stream bool `json:"stream,omitempty"` Stream bool `json:"stream,omitempty"`

View File

@@ -7,7 +7,7 @@ type CohereRequest struct {
ChatHistory []ChatHistory `json:"chat_history"` ChatHistory []ChatHistory `json:"chat_history"`
Message string `json:"message"` Message string `json:"message"`
Stream bool `json:"stream"` Stream bool `json:"stream"`
MaxTokens int `json:"max_tokens"` MaxTokens uint `json:"max_tokens"`
SafetyMode string `json:"safety_mode,omitempty"` SafetyMode string `json:"safety_mode,omitempty"`
} }

View File

@@ -184,7 +184,7 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest, info *relaycommon
GenerationConfig: dto.GeminiChatGenerationConfig{ GenerationConfig: dto.GeminiChatGenerationConfig{
Temperature: textRequest.Temperature, Temperature: textRequest.Temperature,
TopP: textRequest.TopP, TopP: textRequest.TopP,
MaxOutputTokens: textRequest.MaxTokens, MaxOutputTokens: textRequest.GetMaxTokens(),
Seed: int64(textRequest.Seed), Seed: int64(textRequest.Seed),
}, },
} }

View File

@@ -71,7 +71,7 @@ func requestOpenAI2Mistral(request *dto.GeneralOpenAIRequest) *dto.GeneralOpenAI
Messages: messages, Messages: messages,
Temperature: request.Temperature, Temperature: request.Temperature,
TopP: request.TopP, TopP: request.TopP,
MaxTokens: request.MaxTokens, MaxTokens: request.GetMaxTokens(),
Tools: request.Tools, Tools: request.Tools,
ToolChoice: request.ToolChoice, ToolChoice: request.ToolChoice,
} }

View File

@@ -60,7 +60,7 @@ func requestOpenAI2Ollama(request *dto.GeneralOpenAIRequest) (*OllamaRequest, er
TopK: request.TopK, TopK: request.TopK,
Stop: Stop, Stop: Stop,
Tools: request.Tools, Tools: request.Tools,
MaxTokens: request.MaxTokens, MaxTokens: request.GetMaxTokens(),
ResponseFormat: request.ResponseFormat, ResponseFormat: request.ResponseFormat,
FrequencyPenalty: request.FrequencyPenalty, FrequencyPenalty: request.FrequencyPenalty,
PresencePenalty: request.PresencePenalty, PresencePenalty: request.PresencePenalty,

View File

@@ -18,30 +18,6 @@ import (
// https://developers.generativeai.google/api/rest/generativelanguage/models/generateMessage#request-body // https://developers.generativeai.google/api/rest/generativelanguage/models/generateMessage#request-body
// https://developers.generativeai.google/api/rest/generativelanguage/models/generateMessage#response-body // https://developers.generativeai.google/api/rest/generativelanguage/models/generateMessage#response-body
func requestOpenAI2PaLM(textRequest dto.GeneralOpenAIRequest) *PaLMChatRequest {
palmRequest := PaLMChatRequest{
Prompt: PaLMPrompt{
Messages: make([]PaLMChatMessage, 0, len(textRequest.Messages)),
},
Temperature: textRequest.Temperature,
CandidateCount: textRequest.N,
TopP: textRequest.TopP,
TopK: textRequest.MaxTokens,
}
for _, message := range textRequest.Messages {
palmMessage := PaLMChatMessage{
Content: message.StringContent(),
}
if message.Role == "user" {
palmMessage.Author = "0"
} else {
palmMessage.Author = "1"
}
palmRequest.Prompt.Messages = append(palmRequest.Prompt.Messages, palmMessage)
}
return &palmRequest
}
func responsePaLM2OpenAI(response *PaLMChatResponse) *dto.OpenAITextResponse { func responsePaLM2OpenAI(response *PaLMChatResponse) *dto.OpenAITextResponse {
fullTextResponse := dto.OpenAITextResponse{ fullTextResponse := dto.OpenAITextResponse{
Choices: make([]dto.OpenAITextResponseChoice, 0, len(response.Candidates)), Choices: make([]dto.OpenAITextResponseChoice, 0, len(response.Candidates)),

View File

@@ -16,6 +16,6 @@ func requestOpenAI2Perplexity(request dto.GeneralOpenAIRequest) *dto.GeneralOpen
Messages: messages, Messages: messages,
Temperature: request.Temperature, Temperature: request.Temperature,
TopP: request.TopP, TopP: request.TopP,
MaxTokens: request.MaxTokens, MaxTokens: request.GetMaxTokens(),
} }
} }

View File

@@ -48,7 +48,7 @@ func requestOpenAI2Xunfei(request dto.GeneralOpenAIRequest, xunfeiAppId string,
xunfeiRequest.Parameter.Chat.Domain = domain xunfeiRequest.Parameter.Chat.Domain = domain
xunfeiRequest.Parameter.Chat.Temperature = request.Temperature xunfeiRequest.Parameter.Chat.Temperature = request.Temperature
xunfeiRequest.Parameter.Chat.TopK = request.N xunfeiRequest.Parameter.Chat.TopK = request.N
xunfeiRequest.Parameter.Chat.MaxTokens = request.MaxTokens xunfeiRequest.Parameter.Chat.MaxTokens = request.GetMaxTokens()
xunfeiRequest.Payload.Message.Text = messages xunfeiRequest.Payload.Message.Text = messages
return &xunfeiRequest return &xunfeiRequest
} }

View File

@@ -105,7 +105,7 @@ func requestOpenAI2Zhipu(request dto.GeneralOpenAIRequest) *dto.GeneralOpenAIReq
Messages: messages, Messages: messages,
Temperature: request.Temperature, Temperature: request.Temperature,
TopP: request.TopP, TopP: request.TopP,
MaxTokens: request.MaxTokens, MaxTokens: request.GetMaxTokens(),
Stop: Stop, Stop: Stop,
Tools: request.Tools, Tools: request.Tools,
ToolChoice: request.ToolChoice, ToolChoice: request.ToolChoice,