feat: publish sanitized custom.97 source
This commit is contained in:
1022 files changed
+69903
-19207
No files matched your search
@@ -68,9 +68,9 @@ var (
|
||||
|
||||
const (
|
||||
requestConverterClaudeToGemini = "claude_messages_to_gemini_generate_content"
|
||||
requestConverterClaudeToResponses = "claude_messages_to_openai_responses"
|
||||
requestConverterClaudeToResponses = ConverterClaudeMessagesToOpenAIResponses
|
||||
requestConverterGeminiToClaude = "gemini_generate_content_to_claude_messages"
|
||||
requestConverterGeminiToResponses = "gemini_generate_content_to_openai_responses"
|
||||
requestConverterGeminiToResponses = ConverterGeminiContentToOpenAIResponses
|
||||
requestConverterResponsesToClaude = ConverterOpenAIResponsesToClaudeMessages
|
||||
)
|
||||
|
||||
@@ -84,6 +84,8 @@ const (
|
||||
ConverterOpenAIResponsesToGemini = "openai_responses_to_gemini_generate_content"
|
||||
ConverterGeminiContentToOpenAIChat = "gemini_generate_content_to_openai_chat_completions"
|
||||
ConverterOpenAIChatToGeminiContent = "openai_chat_completions_to_gemini_generate_content"
|
||||
ConverterClaudeMessagesToOpenAIResponses = "claude_messages_to_openai_responses"
|
||||
ConverterGeminiContentToOpenAIResponses = "gemini_generate_content_to_openai_responses"
|
||||
)
|
||||
|
||||
func registerBuiltinRequestConverter(spec RequestConverterSpec) {
|
||||
@@ -247,11 +249,6 @@ func executeRequestSteps(c context.Context, info convmeta.Meta, from types.Relay
|
||||
}
|
||||
steps := make([]RequestStep, 0, len(specs))
|
||||
for _, spec := range specs {
|
||||
current, err = prepareRequestForStep(current, spec, target)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var step RequestStep
|
||||
current, step, err = executeRequestStep(c, info, spec, current)
|
||||
if err != nil {
|
||||
@@ -260,6 +257,7 @@ func executeRequestSteps(c context.Context, info convmeta.Meta, from types.Relay
|
||||
steps = append(steps, step)
|
||||
}
|
||||
|
||||
tools.Model = convmeta.UpstreamModelName(info)
|
||||
current, toolDiagnostics, err := toolconv.AttachRequest(target, current, tools, convmeta.OptionsOf(info))
|
||||
diagnostics := append(diagnosticCollector.Diagnostics(), toolDiagnostics...)
|
||||
for i := range diagnostics {
|
||||
@@ -284,6 +282,9 @@ func executeRequestSteps(c context.Context, info convmeta.Meta, from types.Relay
|
||||
for _, step := range steps {
|
||||
info.AppendRequestConversion(step.To)
|
||||
}
|
||||
if from == types.RelayFormatOpenAIResponses {
|
||||
info.SetResponsesToolState(responsesToolState(tools))
|
||||
}
|
||||
}
|
||||
|
||||
converters := make([]string, 0, len(steps))
|
||||
@@ -304,6 +305,19 @@ func executeRequestSteps(c context.Context, info convmeta.Meta, from types.Relay
|
||||
}, nil
|
||||
}
|
||||
|
||||
// responsesToolState records which Responses custom tools were sent upstream
|
||||
// as functions and which tool names were flattened from namespaces, so the
|
||||
// response side can restore their calls. It returns nil when there is nothing
|
||||
// to restore so a retry never reuses another attempt's record.
|
||||
func responsesToolState(tools toolconv.Set) *convmeta.ResponsesToolState {
|
||||
names := toolconv.ResponsesCustomToolNames(tools)
|
||||
namespaces := toolconv.ResponsesToolNamespaces(tools)
|
||||
if len(names) == 0 && len(namespaces) == 0 {
|
||||
return nil
|
||||
}
|
||||
return &convmeta.ResponsesToolState{CustomToolNames: names, Namespaces: namespaces}
|
||||
}
|
||||
|
||||
func expandRequestConverterSteps(spec RequestConverterSpec) ([]RequestConverterSpec, error) {
|
||||
if len(spec.StepConverters) == 0 {
|
||||
if spec.Convert == nil {
|
||||
@@ -353,28 +367,6 @@ func executeRequestStep(c context.Context, info convmeta.Meta, spec RequestConve
|
||||
}, nil
|
||||
}
|
||||
|
||||
func prepareRequestForStep(request any, spec RequestConverterSpec, finalTarget types.RelayFormat) (any, error) {
|
||||
if spec.From != types.RelayFormatOpenAIResponses || finalTarget != types.RelayFormatGemini {
|
||||
return request, nil
|
||||
}
|
||||
|
||||
responsesRequest, ok := request.(*dto.OpenAIResponsesRequest)
|
||||
if !ok {
|
||||
if value, ok := request.(dto.OpenAIResponsesRequest); ok {
|
||||
responsesRequest = &value
|
||||
}
|
||||
}
|
||||
if responsesRequest == nil {
|
||||
return nil, fmt.Errorf("expected OpenAI responses request, got %T", request)
|
||||
}
|
||||
|
||||
prepared, err := oairesponses.PrepareOpenAIResponsesRequest(*responsesRequest)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &prepared, nil
|
||||
}
|
||||
|
||||
func lookupRequestRoute(from types.RelayFormat, to types.RelayFormat) (RequestConverterSpec, bool) {
|
||||
requestConverterMu.RLock()
|
||||
defer requestConverterMu.RUnlock()
|
||||
@@ -521,12 +513,7 @@ func convertOpenAIResponsesRequestToGeminiChat(c context.Context, info convmeta.
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
prepared, err := oairesponses.PrepareOpenAIResponsesRequest(*responsesRequest)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return oairesponses.OpenAIResponsesRequestToGeminiChat(c, &prepared, info)
|
||||
return oairesponses.OpenAIResponsesRequestToGeminiChat(c, responsesRequest, info)
|
||||
}
|
||||
|
||||
func convertResponsesRequestToChat(c context.Context, _ convmeta.Meta, request any) (any, error) {
|
||||
|
||||
Reference in new issue
Block a user