feat: publish sanitized custom.97 source

This commit is contained in:
cneicy committed 2026-10-27 20:43:39 +08:00
1 parent 8e6ed0317b
commit 86c0276156
1022 files changed
+69903 -19207

No files matched your search

+22 -1
View File
@@ -78,6 +78,8 @@ func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycommon.RelayIn
return a.claudeAdaptor.ConvertClaudeRequest(c, info, request)
case relayconvert.ConverterClaudeMessagesToOpenAIChat:
return a.convertCrossProtocolChatRequest(c, info, converter, request)
case relayconvert.ConverterClaudeMessagesToOpenAIResponses:
return convertCrossProtocolResponsesRequest(c, info, converter, request)
default:
return nil, fmt.Errorf("converter %q does not support Anthropic Messages requests", converter)
}
@@ -94,6 +96,8 @@ func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycommon.RelayIn
return a.geminiAdaptor.ConvertGeminiRequest(c, info, request)
case relayconvert.ConverterGeminiContentToOpenAIChat:
return a.convertCrossProtocolChatRequest(c, info, converter, request)
case relayconvert.ConverterGeminiContentToOpenAIResponses:
return convertCrossProtocolResponsesRequest(c, info, converter, request)
default:
return nil, fmt.Errorf("converter %q does not support Gemini generateContent requests", converter)
}
@@ -296,7 +300,10 @@ func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycom
return a.geminiAdaptor.DoResponse(c, resp, info)
case relayconvert.ConverterOpenAIResponsesToGemini:
return a.geminiAdaptor.DoResponse(c, resp, info)
case relayconvert.ConverterOpenAIChatToOpenAIResponses:
case relayconvert.ConverterOpenAIChatToOpenAIResponses,
relayconvert.ConverterClaudeMessagesToOpenAIResponses,
relayconvert.ConverterGeminiContentToOpenAIResponses:
// These handlers convert the Responses upstream into info.RelayFormat.
if info.IsStream {
return openai.OaiResponsesToChatStreamHandler(c, info, resp)
}
@@ -531,6 +538,20 @@ func (a *Adaptor) convertCrossProtocolChatRequest(c *gin.Context, info *relaycom
return a.convertOpenAICompatibleRequest(c, info, chatRequest)
}
// convertCrossProtocolResponsesRequest converts a Claude or Gemini client
// request for an OpenAI Responses upstream.
func convertCrossProtocolResponsesRequest(c *gin.Context, info *relaycommon.RelayInfo, converter string, request any) (any, error) {
result, err := service.ConvertRequestByID(c, info, converter, request)
if err != nil {
return nil, err
}
responsesRequest, ok := result.Value.(*dto.OpenAIResponsesRequest)
if !ok {
return nil, fmt.Errorf("expected OpenAI Responses request, got %T", result.Value)
}
return responsesRequest, nil
}
func (a *Adaptor) convertOpenAICompatibleRequest(c *gin.Context, info *relaycommon.RelayInfo, request *dto.GeneralOpenAIRequest) (any, error) {
old := info.ChannelType
info.ChannelType = constant.ChannelTypeOpenAI