Feat/model as tool (#2744)

This commit is contained in:
Yeuoly 2024-03-08 15:22:55 +08:00 • committed by GitHub
commit 40c646cf7a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 840 additions and 43 deletions

View file

@ -4,24 +4,24 @@ from yaml import FullLoader, load
from core.tools.entities.user_entities import UserToolProvider
position = {}
class BuiltinToolProviderSort:
@staticmethod
def sort(providers: list[UserToolProvider]) -> list[UserToolProvider]:
global position
if not position:
_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
position = tmp_position
cls._position = tmp_position
def sort_compare(provider: UserToolProvider) -> int:
# if provider.type == UserToolProvider.ProviderType.MODEL:
# return position.get(f'model_provider.{provider.name}', 10000)
return position.get(provider.name, 10000)
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)