85 lines
4.2 KiB
Markdown
85 lines
4.2 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: Discover Models From Base URL And API Key
|
|
|
|
The system SHALL allow users to fetch a provider's available model list using the currently entered Base URL and API key.
|
|
|
|
#### Scenario: Normalize root base URL before discovery
|
|
- **GIVEN** the user enters a provider root URL such as `https://api.tu-zi.com`
|
|
- **WHEN** the system performs model discovery
|
|
- **THEN** the request SHALL be sent to the normalized models endpoint under `/v1/models`
|
|
|
|
#### Scenario: Normalize v1 base URL before discovery
|
|
- **GIVEN** the user enters a Base URL such as `https://api.tu-zi.com/v1`
|
|
- **WHEN** the system performs model discovery
|
|
- **THEN** the request SHALL be sent to the models endpoint under the same API namespace
|
|
|
|
#### Scenario: Surface discovery failure without breaking existing settings
|
|
- **GIVEN** the current Base URL or API key cannot fetch a valid model list
|
|
- **WHEN** the discovery request fails, returns non-JSON, or returns an empty list
|
|
- **THEN** the user SHALL receive a visible failure message
|
|
- **AND** the existing static model list fallback SHALL remain available
|
|
|
|
### Requirement: Adapt Remote Models To Runtime Model Config
|
|
|
|
Remote model list items SHALL be converted into the internal model configuration format used by model selectors.
|
|
|
|
#### Scenario: Reuse static metadata for known models
|
|
- **GIVEN** a discovered model ID matches an existing static model definition
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the system SHALL reuse the known short code, tags, and default parameters when available
|
|
|
|
#### Scenario: Create safe defaults for unknown models
|
|
- **GIVEN** a discovered model ID does not match any static model definition
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the system SHALL still expose that model as selectable
|
|
- **AND** assign safe fallback values for display label, short code, and description
|
|
|
|
### Requirement: Classify Discovered Models By Type
|
|
|
|
The system SHALL classify discovered models into image, video, or text groups for the corresponding selectors.
|
|
|
|
#### Scenario: Classify video models from endpoint hints
|
|
- **GIVEN** a discovered model exposes video-oriented endpoint types or video-specific model identifiers
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the model SHALL appear in the video model selector
|
|
|
|
#### Scenario: Classify image models from endpoint hints
|
|
- **GIVEN** a discovered model exposes image-oriented endpoint types or image-specific model identifiers
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the model SHALL appear in the image model selector
|
|
|
|
#### Scenario: Default non-image non-video models to text
|
|
- **GIVEN** a discovered model does not match image or video classification rules
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the model SHALL appear in the text model selector
|
|
|
|
### Requirement: Group Discovered Models By Provider Vendor
|
|
|
|
The system SHALL present discovered models under provider vendor groupings compatible with the existing model dropdown vendor tabs.
|
|
|
|
#### Scenario: Use provider ownership as primary vendor hint
|
|
- **GIVEN** a discovered model includes a recognized `owned_by` value
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the model SHALL be assigned to the mapped vendor group for dropdown display
|
|
|
|
#### Scenario: Fallback to model identifier for custom ownership
|
|
- **GIVEN** a discovered model uses a generic or custom `owned_by` value
|
|
- **WHEN** the runtime model config is built
|
|
- **THEN** the system SHALL infer the vendor from model identifier keywords when possible
|
|
|
|
### Requirement: Reuse Runtime Model Lists Across Selectors
|
|
|
|
All model selectors that currently depend on static model lists SHALL prefer the discovered runtime model lists when available.
|
|
|
|
#### Scenario: Settings dialog uses discovered lists
|
|
- **GIVEN** model discovery has completed successfully
|
|
- **WHEN** the user opens the settings dialog
|
|
- **THEN** the image, video, and text model selectors SHALL use the discovered runtime lists first
|
|
|
|
#### Scenario: Generation entry points use discovered lists
|
|
- **GIVEN** model discovery has completed successfully
|
|
- **WHEN** the user opens the AI input bar or generation dialogs
|
|
- **THEN** those selectors SHALL use the same discovered runtime lists
|
|
- **AND** continue to work with saved model IDs from settings
|