feat: add Tencent Cloud Coding Plan support and handle coding plan URLs in OpenAI adaptor
Docker Build / Build and Push Docker Image (push) Failing after 2m43s

This commit is contained in:
2026-06-12 17:40:53 +08:00
parent 76f8112ee7
commit 824c6d9133
3 changed files with 23 additions and 1 deletions
+4
View File
@@ -206,4 +206,8 @@ var ChannelSpecialBases = map[string]ChannelSpecialBase{
ClaudeBaseURL: "https://ark.cn-beijing.volces.com/api/coding",
OpenAIBaseURL: "https://ark.cn-beijing.volces.com/api/coding/v3",
},
"tencent-coding-plan": {
ClaudeBaseURL: "https://api.lkeap.cloud.tencent.com/coding",
OpenAIBaseURL: "https://api.lkeap.cloud.tencent.com/coding/v3",
},
}
+5 -1
View File
@@ -312,7 +312,11 @@ func fetchChannelUpstreamModelIDs(channel *model.Channel) ([]string, error) {
url = fmt.Sprintf("%s/v1/models", baseURL)
}
default:
url = fmt.Sprintf("%s/v1/models", baseURL)
if plan, ok := constant.ChannelSpecialBases[baseURL]; ok && plan.OpenAIBaseURL != "" {
url = fmt.Sprintf("%s/models", plan.OpenAIBaseURL)
} else {
url = fmt.Sprintf("%s/v1/models", baseURL)
}
}
key, _, apiErr := channel.GetNextEnabledKey()
+14
View File
@@ -164,6 +164,20 @@ func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) {
url = strings.Replace(url, "{model}", info.UpstreamModelName, -1)
return url, nil
default:
// Handle coding plan special base URLs
if specialPlan, ok := constant.ChannelSpecialBases[info.ChannelBaseUrl]; ok && specialPlan.OpenAIBaseURL != "" {
if info.RelayFormat == types.RelayFormatClaude {
return fmt.Sprintf("%s/v1/messages", specialPlan.ClaudeBaseURL), nil
}
switch info.RelayMode {
case relayconstant.RelayModeEmbeddings:
return fmt.Sprintf("%s/embeddings", specialPlan.OpenAIBaseURL), nil
case relayconstant.RelayModeImagesGenerations:
return fmt.Sprintf("%s/images/generations", specialPlan.OpenAIBaseURL), nil
default:
return fmt.Sprintf("%s/chat/completions", specialPlan.OpenAIBaseURL), nil
}
}
if (info.RelayFormat == types.RelayFormatClaude || info.RelayFormat == types.RelayFormatGemini) &&
info.RelayMode != relayconstant.RelayModeResponses &&
info.RelayMode != relayconstant.RelayModeResponsesCompact {