mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-09-02 17:40:22 +08:00
[Feature] Server-side multi-provider/model support (#583)
* [Feature] Server side multi-pvorider/model support * copilot suggesition implemented * feat: improve model selector UI and auto-select default server model - Replace emoji headers with Lucide icons (Monitor, User) - Fix transition-all to explicit properties per web guidelines - Use CSS padding instead of hardcoded space indentation - Add ModelSelectorSectionHeader component for section headers - Replace Star icon with "default" text label - Style Configure button with muted text color - Auto-select default server model when page loads - Support AI_MODELS_CONFIG env var for cloud deployments - Support custom apiKeyEnv/baseUrlEnv per provider config * docs: update server-side multi-model configuration documentation - Add AI_MODELS_CONFIG env var option for cloud deployments - Document apiKeyEnv and baseUrlEnv fields for custom env var names - Document default field for auto-selecting default model - Remove deprecated version field from examples - Add field reference table for clarity --------- Co-authored-by: dayuan.jiang <jdy.toh@gmail.com>
This commit is contained in:
@@ -54,7 +54,7 @@ export interface MultiModelConfig {
|
||||
|
||||
// Flattened model for dropdown display
|
||||
export interface FlattenedModel {
|
||||
id: string // Model config UUID
|
||||
id: string // Model config UUID or synthetic server ID (e.g., "server:provider:modelId")
|
||||
modelId: string // Actual model ID
|
||||
provider: ProviderName
|
||||
providerLabel: string // Provider display name
|
||||
@@ -69,6 +69,13 @@ export interface FlattenedModel {
|
||||
vertexApiKey?: string // Express Mode API key
|
||||
|
||||
validated?: boolean // Has this model been validated
|
||||
// Source of this model config: user-defined (client) or server-defined
|
||||
source?: "user" | "server"
|
||||
// Whether this model is the server default (matches AI_MODEL env var)
|
||||
isDefault?: boolean
|
||||
// Custom env var names for server models (allows multiple API keys per provider)
|
||||
apiKeyEnv?: string
|
||||
baseUrlEnv?: string
|
||||
}
|
||||
|
||||
// Provider metadata
|
||||
@@ -307,7 +314,7 @@ export function createModelConfig(modelId: string): ModelConfig {
|
||||
}
|
||||
}
|
||||
|
||||
// Get all models as flattened list for dropdown
|
||||
// Get all models as flattened list for dropdown (user-defined only)
|
||||
export function flattenModels(config: MultiModelConfig): FlattenedModel[] {
|
||||
const models: FlattenedModel[] = []
|
||||
|
||||
@@ -333,6 +340,8 @@ export function flattenModels(config: MultiModelConfig): FlattenedModel[] {
|
||||
vertexApiKey: provider.vertexApiKey,
|
||||
|
||||
validated: model.validated,
|
||||
source: "user",
|
||||
isDefault: false,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user