Merge remote-tracking branch 'origin/alpha' into alpha

This commit is contained in:
t0ng7u
2025-08-11 17:38:16 +08:00

View File

@@ -126,16 +126,23 @@ func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) {
requestURL = fmt.Sprintf("%s?api-version=%s", requestURL, apiVersion) requestURL = fmt.Sprintf("%s?api-version=%s", requestURL, apiVersion)
task := strings.TrimPrefix(requestURL, "/v1/") task := strings.TrimPrefix(requestURL, "/v1/")
if info.RelayFormat == relaycommon.RelayFormatClaude {
task = strings.TrimPrefix(task, "messages")
task = "chat/completions" + task
}
// 特殊处理 responses API // 特殊处理 responses API
if info.RelayMode == relayconstant.RelayModeResponses { if info.RelayMode == relayconstant.RelayModeResponses {
responsesApiVersion := "preview" responsesApiVersion := "preview"
if info.ChannelOtherSettings.AzureResponsesVersion != "" {
responsesApiVersion = info.ChannelOtherSettings.AzureResponsesVersion
}
subUrl := "/openai/v1/responses" subUrl := "/openai/v1/responses"
if strings.Contains(info.BaseUrl, "cognitiveservices.azure.com") { if strings.Contains(info.BaseUrl, "cognitiveservices.azure.com") {
subUrl = "/openai/responses" subUrl = "/openai/responses"
responsesApiVersion = apiVersion
}
if info.ChannelOtherSettings.AzureResponsesVersion != "" {
responsesApiVersion = info.ChannelOtherSettings.AzureResponsesVersion
} }
requestURL = fmt.Sprintf("%s?api-version=%s", subUrl, responsesApiVersion) requestURL = fmt.Sprintf("%s?api-version=%s", subUrl, responsesApiVersion)
@@ -249,34 +256,34 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn
} }
} }
} }
if strings.HasPrefix(request.Model, "o") || strings.HasPrefix(request.Model, "gpt-5") { if strings.HasPrefix(info.UpstreamModelName, "o") || strings.HasPrefix(info.UpstreamModelName, "gpt-5") {
if request.MaxCompletionTokens == 0 && request.MaxTokens != 0 { if request.MaxCompletionTokens == 0 && request.MaxTokens != 0 {
request.MaxCompletionTokens = request.MaxTokens request.MaxCompletionTokens = request.MaxTokens
request.MaxTokens = 0 request.MaxTokens = 0
} }
if strings.HasPrefix(request.Model, "o") { if strings.HasPrefix(info.UpstreamModelName, "o") {
request.Temperature = nil request.Temperature = nil
} }
if strings.HasPrefix(request.Model, "gpt-5") { if strings.HasPrefix(info.UpstreamModelName, "gpt-5") {
if request.Model != "gpt-5-chat-latest" { if info.UpstreamModelName != "gpt-5-chat-latest" {
request.Temperature = nil request.Temperature = nil
} }
} }
// 转换模型推理力度后缀 // 转换模型推理力度后缀
effort, originModel := parseReasoningEffortFromModelSuffix(request.Model) effort, originModel := parseReasoningEffortFromModelSuffix(info.UpstreamModelName)
if effort != "" { if effort != "" {
request.ReasoningEffort = effort request.ReasoningEffort = effort
info.UpstreamModelName = originModel
request.Model = originModel request.Model = originModel
} }
info.ReasoningEffort = request.ReasoningEffort info.ReasoningEffort = request.ReasoningEffort
info.UpstreamModelName = request.Model
// o系列模型developer适配o1-mini除外 // o系列模型developer适配o1-mini除外
if !strings.HasPrefix(request.Model, "o1-mini") && !strings.HasPrefix(request.Model, "o1-preview") { if !strings.HasPrefix(info.UpstreamModelName, "o1-mini") && !strings.HasPrefix(info.UpstreamModelName, "o1-preview") {
//修改第一个Message的内容将system改为developer //修改第一个Message的内容将system改为developer
if len(request.Messages) > 0 && request.Messages[0].Role == "system" { if len(request.Messages) > 0 && request.Messages[0].Role == "system" {
request.Messages[0].Role = "developer" request.Messages[0].Role = "developer"