mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
Adds full support for managing model-to-model relationships in the UI and backend.
Introduces RelatedModels subpanel for linking and unlinking models in model management.
- Adds REST API routes for adding, removing, and retrieving model relationships.
- New database migration: creates model_relationships table for bidirectional links.
- New service layer (model_relationships) for relationship management.
- Updated frontend: Related models float to top of LoRA/Main grouped model comboboxes for quick access.
- Added 'Show Only Related' toggle badge to MainModelPicker filter bar
**Amended commit to remove changes to ParamMainModelSelect.tsx and MainModelPicker.tsx to avoid conflict with upstream deletion/ rewrite**
30 lines
1.5 KiB
Python
30 lines
1.5 KiB
Python
from invokeai.backend.model_manager.config import AnyModelConfig
|
|
from .model_relationships_base import ModelRelationshipsServiceABC
|
|
from invokeai.app.services.invoker import Invoker
|
|
|
|
class ModelRelationshipsService(ModelRelationshipsServiceABC):
|
|
__invoker: Invoker
|
|
|
|
def start(self, invoker: Invoker) -> None:
|
|
self.__invoker = invoker
|
|
|
|
def add_model_relationship(self, model_key_1: str, model_key_2: str) -> None:
|
|
self.__invoker.services.model_relationship_records.add_model_relationship(model_key_1, model_key_2)
|
|
|
|
def remove_model_relationship(self, model_key_1: str, model_key_2: str) -> None:
|
|
self.__invoker.services.model_relationship_records.remove_model_relationship(model_key_1, model_key_2)
|
|
|
|
def get_related_model_keys(self, model_key: str) -> list[str]:
|
|
return self.__invoker.services.model_relationship_records.get_related_model_keys(model_key)
|
|
|
|
def add_relationship_from_models(self, model_1: AnyModelConfig, model_2: AnyModelConfig) -> None:
|
|
self.add_model_relationship(model_1.key, model_2.key)
|
|
|
|
def remove_relationship_from_models(self, model_1: AnyModelConfig, model_2: AnyModelConfig) -> None:
|
|
self.remove_model_relationship(model_1.key, model_2.key)
|
|
|
|
def get_related_keys_from_model(self, model: AnyModelConfig) -> list[str]:
|
|
return self.get_related_model_keys(model.key)
|
|
|
|
def get_related_model_keys_batch(self, model_keys: list[str]) -> list[str]:
|
|
return self.__invoker.services.model_relationship_records.get_related_model_keys_batch(model_keys) |