feat: tool credentials cache and introduce _position.yaml (#2386)

This commit is contained in:
Yeuoly
2024-02-05 12:39:42 +08:00
committed by GitHub
parent 6278ff0f30
commit 5010706d8b
4 changed files with 96 additions and 26 deletions

View File

@@ -0,0 +1,15 @@
- google
- bing
- wikipedia
- dalle
- azuredalle
- webscraper
- wolframalpha
- github
- chart
- time
- yahoo
- stablediffusion
- vectorizer
- youtube
- gaode

View File

@@ -1,31 +1,29 @@
from typing import List
from core.tools.entities.user_entities import UserToolProvider
from core.tools.entities.tool_entities import ToolProviderType
from typing import List
from yaml import load, FullLoader
position = {
'google': 1,
'bing': 2,
'wikipedia': 2,
'dalle': 3,
'webscraper': 4,
'wolframalpha': 5,
'chart': 6,
'time': 7,
'yahoo': 8,
'stablediffusion': 9,
'vectorizer': 10,
'youtube': 11,
'github': 12,
'gaode': 13
}
import os.path
position = {}
class BuiltinToolProviderSort:
@staticmethod
def sort(providers: List[UserToolProvider]) -> List[UserToolProvider]:
global position
if not position:
tmp_position = {}
file_path = os.path.join(os.path.dirname(__file__), '..', '_position.yaml')
with open(file_path, 'r') as f:
for pos, val in enumerate(load(f, Loader=FullLoader)):
tmp_position[val] = pos
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)
sorted_providers = sorted(providers, key=sort_compare)
return sorted_providers
return sorted_providers