12345678910111213141516171819202122232425262728 |
- import os.path
- from yaml import FullLoader, load
- from core.tools.entities.user_entities import UserToolProvider
- class BuiltinToolProviderSort:
- _position = {}
- @classmethod
- def sort(cls, providers: list[UserToolProvider]) -> list[UserToolProvider]:
- if not cls._position:
- tmp_position = {}
- file_path = os.path.join(os.path.dirname(__file__), '..', '_position.yaml')
- with open(file_path) as f:
- for pos, val in enumerate(load(f, Loader=FullLoader)):
- tmp_position[val] = pos
- cls._position = tmp_position
- def sort_compare(provider: UserToolProvider) -> int:
- if provider.type == UserToolProvider.ProviderType.MODEL:
- return cls._position.get(f'model.{provider.name}', 10000)
- return cls._position.get(provider.name, 10000)
-
- sorted_providers = sorted(providers, key=sort_compare)
- return sorted_providers
|