_positions.py 778 B

1234567891011121314151617181920212223
  1. import os.path
  2. from core.tools.entities.user_entities import UserToolProvider
  3. from core.utils.position_helper import get_position_map, sort_by_position_map
  4. class BuiltinToolProviderSort:
  5. _position = {}
  6. @classmethod
  7. def sort(cls, providers: list[UserToolProvider]) -> list[UserToolProvider]:
  8. if not cls._position:
  9. cls._position = get_position_map(os.path.join(os.path.dirname(__file__), '..'))
  10. def name_func(provider: UserToolProvider) -> str:
  11. if provider.type == UserToolProvider.ProviderType.MODEL:
  12. return f'model.{provider.name}'
  13. else:
  14. return provider.name
  15. sorted_providers = sort_by_position_map(cls._position, providers, name_func)
  16. return sorted_providers