Unverified Commit 61fec52f authored by Yeuoly's avatar Yeuoly

feat: model tool list

parent 20f13014
...@@ -84,6 +84,11 @@ class ToolBuiltinProviderIconApi(Resource): ...@@ -84,6 +84,11 @@ class ToolBuiltinProviderIconApi(Resource):
icon_bytes, minetype = ToolManageService.get_builtin_tool_provider_icon(provider) icon_bytes, minetype = ToolManageService.get_builtin_tool_provider_icon(provider)
return send_file(io.BytesIO(icon_bytes), mimetype=minetype) return send_file(io.BytesIO(icon_bytes), mimetype=minetype)
class ToolModelProviderIconApi(Resource):
@setup_required
def get(self, provider):
icon_bytes, minetype = ToolManageService.get_model_tool_provider_icon(provider)
return send_file(io.BytesIO(icon_bytes), mimetype=minetype)
class ToolApiProviderAddApi(Resource): class ToolApiProviderAddApi(Resource):
@setup_required @setup_required
...@@ -283,6 +288,7 @@ api.add_resource(ToolBuiltinProviderDeleteApi, '/workspaces/current/tool-provide ...@@ -283,6 +288,7 @@ api.add_resource(ToolBuiltinProviderDeleteApi, '/workspaces/current/tool-provide
api.add_resource(ToolBuiltinProviderUpdateApi, '/workspaces/current/tool-provider/builtin/<provider>/update') api.add_resource(ToolBuiltinProviderUpdateApi, '/workspaces/current/tool-provider/builtin/<provider>/update')
api.add_resource(ToolBuiltinProviderCredentialsSchemaApi, '/workspaces/current/tool-provider/builtin/<provider>/credentials_schema') api.add_resource(ToolBuiltinProviderCredentialsSchemaApi, '/workspaces/current/tool-provider/builtin/<provider>/credentials_schema')
api.add_resource(ToolBuiltinProviderIconApi, '/workspaces/current/tool-provider/builtin/<provider>/icon') api.add_resource(ToolBuiltinProviderIconApi, '/workspaces/current/tool-provider/builtin/<provider>/icon')
api.add_resource(ToolModelProviderIconApi, '/workspaces/current/tool-provider/model/<provider>/icon')
api.add_resource(ToolApiProviderAddApi, '/workspaces/current/tool-provider/api/add') api.add_resource(ToolApiProviderAddApi, '/workspaces/current/tool-provider/api/add')
api.add_resource(ToolApiProviderGetRemoteSchemaApi, '/workspaces/current/tool-provider/api/remote') api.add_resource(ToolApiProviderGetRemoteSchemaApi, '/workspaces/current/tool-provider/api/remote')
api.add_resource(ToolApiProviderListToolsApi, '/workspaces/current/tool-provider/api/tools') api.add_resource(ToolApiProviderListToolsApi, '/workspaces/current/tool-provider/api/tools')
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
- dalle - dalle
- webscraper - webscraper
- wolframalpha - wolframalpha
- model_provider.openai
- chart - chart
- time - time
- yahoo - yahoo
......
from core.tools.entities.user_entities import UserToolProvider from core.tools.entities.user_entities import UserToolProvider
from core.tools.entities.tool_entities import ToolProviderType
from typing import List from typing import List
from yaml import load, FullLoader from yaml import load, FullLoader
...@@ -19,6 +20,8 @@ class BuiltinToolProviderSort: ...@@ -19,6 +20,8 @@ class BuiltinToolProviderSort:
position = tmp_position position = tmp_position
def sort_compare(provider: UserToolProvider) -> int: 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) return position.get(provider.name, 10000)
sorted_providers = sorted(providers, key=sort_compare) sorted_providers = sorted(providers, key=sort_compare)
......
...@@ -15,6 +15,8 @@ from core.tools.utils.encoder import serialize_base_model_array, serialize_base_ ...@@ -15,6 +15,8 @@ from core.tools.utils.encoder import serialize_base_model_array, serialize_base_
from core.tools.utils.configration import ToolConfiguration from core.tools.utils.configration import ToolConfiguration
from core.tools.errors import ToolProviderCredentialValidationError, ToolProviderNotFoundError, ToolNotFoundError from core.tools.errors import ToolProviderCredentialValidationError, ToolProviderNotFoundError, ToolNotFoundError
from services.model_provider_service import ModelProviderService
from extensions.ext_database import db from extensions.ext_database import db
from models.tools import BuiltinToolProvider, ApiToolProvider from models.tools import BuiltinToolProvider, ApiToolProvider
...@@ -48,11 +50,13 @@ class ToolManageService: ...@@ -48,11 +50,13 @@ class ToolManageService:
:param provider: the provider dict :param provider: the provider dict
""" """
url_prefix = (current_app.config.get("CONSOLE_API_URL") url_prefix = (current_app.config.get("CONSOLE_API_URL")
+ f"/console/api/workspaces/current/tool-provider/builtin/") + f"/console/api/workspaces/current/tool-provider/")
if 'icon' in provider: if 'icon' in provider:
if provider['type'] == UserToolProvider.ProviderType.BUILTIN.value: if provider['type'] == UserToolProvider.ProviderType.BUILTIN.value:
provider['icon'] = url_prefix + provider['name'] + '/icon' provider['icon'] = url_prefix + 'builtin/' + provider['name'] + '/icon'
elif provider['type'] == UserToolProvider.ProviderType.MODEL.value:
provider['icon'] = url_prefix + 'model/' + provider['name'] + '/icon'
elif provider['type'] == UserToolProvider.ProviderType.API.value: elif provider['type'] == UserToolProvider.ProviderType.API.value:
try: try:
provider['icon'] = json.loads(provider['icon']) provider['icon'] = json.loads(provider['icon'])
...@@ -436,6 +440,22 @@ class ToolManageService: ...@@ -436,6 +440,22 @@ class ToolManageService:
return icon_bytes, mime_type return icon_bytes, mime_type
@staticmethod
def get_model_tool_provider_icon(
provider: str
):
"""
get tool provider icon and it's minetype
"""
service = ModelProviderService()
icon_bytes, mime_type = service.get_model_provider_icon(provider=provider, icon_type='icon_small', lang='en_US')
if icon_bytes is None:
raise ValueError(f'provider {provider} does not exists')
return icon_bytes, mime_type
@staticmethod @staticmethod
def delete_api_tool_provider( def delete_api_tool_provider(
user_id: str, tenant_id: str, provider: str user_id: str, tenant_id: str, provider: str
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment