* fix(groups): add missing gateway protocol probes * fix(groups): avoid typed gateway probe cancellation races * fix(probes): validate gateway response array elements * fix(probes): validate required native response payloads * fix(probes): enforce exclusive Gemini part payloads
54 lines
2.5 KiB
Go
54 lines
2.5 KiB
Go
package modules
|
|
|
|
import (
|
|
"gpt-load/internal/channel/spec"
|
|
"gpt-load/internal/execution"
|
|
"gpt-load/internal/protocol"
|
|
)
|
|
|
|
func NewAPI() spec.Module {
|
|
return spec.Module{
|
|
Definition: spec.Definition{
|
|
ID: spec.NewAPI,
|
|
Name: "New API",
|
|
Mark: "NA",
|
|
Icon: "new-api",
|
|
Description: "New API multi-protocol gateway",
|
|
Connection: spec.Connection{
|
|
Type: spec.ConnectionAPIKey,
|
|
CredentialInput: "batch_text",
|
|
},
|
|
Params: []spec.Field{{
|
|
Key: "base_url", Label: "Base URL", InputKind: spec.InputURL,
|
|
Required: true, Normalizer: spec.NormalizeBaseURL,
|
|
}},
|
|
Credentials: []spec.Field{{
|
|
Key: "api_key", Label: "API Key", InputKind: spec.InputSecret,
|
|
Required: true, Sensitive: true, Normalizer: spec.NormalizeNonEmpty,
|
|
}},
|
|
Provider: spec.ProviderBinding{
|
|
ProviderKind: spec.ProviderMultiProtocolGateway,
|
|
EndpointPolicy: spec.EndpointRequiredBaseURL,
|
|
},
|
|
Routes: []spec.Route{
|
|
spec.NewRoute(protocol.Rerank, execution.OperationRerank, execution.RouteNative),
|
|
spec.NewRoute(protocol.Rerank, execution.OperationProbe, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAICompletions, execution.OperationChatCompletion, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAICompletions, execution.OperationListModels, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAICompletions, execution.OperationProbe, execution.RouteNative),
|
|
spec.NewResponsesCreateRoute(execution.RouteNative, spec.ResponsesStoreHandlingUpstreamManaged),
|
|
spec.NewRoute(protocol.OpenAIResponses, execution.OperationProbe, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAIResponses, execution.OperationResponsesCompact, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAIImages, execution.OperationImagesGenerate, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAIImages, execution.OperationImagesEdit, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAIEmbeddings, execution.OperationEmbeddingsCreate, execution.RouteNative),
|
|
spec.NewRoute(protocol.OpenAIEmbeddings, execution.OperationProbe, execution.RouteNative),
|
|
spec.NewRoute(protocol.Anthropic, execution.OperationChatCompletion, execution.RouteNative),
|
|
spec.NewRoute(protocol.Anthropic, execution.OperationProbe, execution.RouteNative),
|
|
spec.NewRoute(protocol.Gemini, execution.OperationChatCompletion, execution.RouteNative),
|
|
spec.NewRoute(protocol.Gemini, execution.OperationProbe, execution.RouteNative),
|
|
},
|
|
},
|
|
}
|
|
}
|