Skip to content

Commit fd319e0

Browse files
committed
Add Novita AI as a new LLM provider
- Add AIProvider_Novita constant to provider list - Add Novita endpoint URL and API token secret name constants - Add Novita provider defaults (OpenAI-compatible API with tools and images support) - Register Novita in schema and config enums Users can now use Novita AI by setting ai:provider to 'novita' and storing their API key in the NOVITA_API_KEY secret.
1 parent 2b11043 commit fd319e0

4 files changed

Lines changed: 19 additions & 1 deletion

File tree

pkg/aiusechat/uctypes/uctypes.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const (
3232
AIProvider_OpenAI = "openai"
3333
AIProvider_Azure = "azure"
3434
AIProvider_AzureLegacy = "azure-legacy"
35+
AIProvider_Novita = "novita"
3536
AIProvider_Custom = "custom"
3637
)
3738

pkg/aiusechat/usechat-mode.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const (
2323
OpenRouterChatEndpoint = "https://openrouter.ai/api/v1/chat/completions"
2424
NanoGPTChatEndpoint = "https://nano-gpt.com/api/v1/chat/completions"
2525
GroqChatEndpoint = "https://api.groq.com/openai/v1/chat/completions"
26+
NovitaChatEndpoint = "https://api.novita.ai/openai/v1/chat/completions"
2627
AzureLegacyEndpointTemplate = "https://%s.openai.azure.com/openai/deployments/%s/chat/completions?api-version=%s"
2728
AzureResponsesEndpointTemplate = "https://%s.openai.azure.com/openai/v1/responses"
2829
AzureChatEndpointTemplate = "https://%s.openai.azure.com/openai/v1/chat/completions"
@@ -36,6 +37,7 @@ const (
3637
GroqAPITokenSecretName = "GROQ_KEY"
3738
AzureOpenAIAPITokenSecretName = "AZURE_OPENAI_KEY"
3839
GoogleAIAPITokenSecretName = "GOOGLE_AI_KEY"
40+
NovitaAPITokenSecretName = "NOVITA_API_KEY"
3941
)
4042

4143
func resolveAIMode(requestedMode string, premium bool) (string, *wconfig.AIModeConfigType, error) {
@@ -125,6 +127,20 @@ func applyProviderDefaults(config *wconfig.AIModeConfigType) {
125127
config.APITokenSecretName = GroqAPITokenSecretName
126128
}
127129
}
130+
if config.Provider == uctypes.AIProvider_Novita {
131+
if config.APIType == "" {
132+
config.APIType = uctypes.APIType_OpenAIChat
133+
}
134+
if config.Endpoint == "" {
135+
config.Endpoint = NovitaChatEndpoint
136+
}
137+
if config.APITokenSecretName == "" {
138+
config.APITokenSecretName = NovitaAPITokenSecretName
139+
}
140+
if len(config.Capabilities) == 0 {
141+
config.Capabilities = []string{uctypes.AICapabilityTools, uctypes.AICapabilityImages}
142+
}
143+
}
128144
if config.Provider == uctypes.AIProvider_AzureLegacy {
129145
if config.AzureAPIVersion == "" {
130146
config.AzureAPIVersion = AzureLegacyDefaultAPIVersion

pkg/wconfig/settingsconfig.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ type AIModeConfigType struct {
286286
DisplayOrder float64 `json:"display:order,omitempty"`
287287
DisplayIcon string `json:"display:icon,omitempty"`
288288
DisplayDescription string `json:"display:description,omitempty"`
289-
Provider string `json:"ai:provider,omitempty" jsonschema:"enum=wave,enum=google,enum=groq,enum=openrouter,enum=nanogpt,enum=openai,enum=azure,enum=azure-legacy,enum=custom"`
289+
Provider string `json:"ai:provider,omitempty" jsonschema:"enum=wave,enum=google,enum=groq,enum=openrouter,enum=nanogpt,enum=openai,enum=azure,enum=azure-legacy,enum=novita,enum=custom"`
290290
APIType string `json:"ai:apitype,omitempty" jsonschema:"enum=google-gemini,enum=openai-responses,enum=openai-chat"`
291291
Model string `json:"ai:model,omitempty"`
292292
ThinkingLevel string `json:"ai:thinkinglevel,omitempty" jsonschema:"enum=low,enum=medium,enum=high"`

schema/waveai.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"openai",
2727
"azure",
2828
"azure-legacy",
29+
"novita",
2930
"custom"
3031
]
3132
},

0 commit comments

Comments
 (0)