refactor tools
parent
50a5cfe56a
commit
1fa3b9cfd8
@ -0,0 +1,30 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class CommonParameterType(Enum):
|
||||||
|
SECRET_INPUT = "secret-input"
|
||||||
|
TEXT_INPUT = "text-input"
|
||||||
|
SELECT = "select"
|
||||||
|
STRING = "string"
|
||||||
|
NUMBER = "number"
|
||||||
|
FILE = "file"
|
||||||
|
BOOLEAN = "boolean"
|
||||||
|
APP_SELECTOR = "app-selector"
|
||||||
|
MODEL_CONFIG = "model-config"
|
||||||
|
|
||||||
|
|
||||||
|
class AppSelectorScope(Enum):
|
||||||
|
ALL = "all"
|
||||||
|
CHAT = "chat"
|
||||||
|
WORKFLOW = "workflow"
|
||||||
|
COMPLETION = "completion"
|
||||||
|
|
||||||
|
|
||||||
|
class ModelConfigScope(Enum):
|
||||||
|
LLM = "llm"
|
||||||
|
TEXT_EMBEDDING = "text-embedding"
|
||||||
|
RERANK = "rerank"
|
||||||
|
TTS = "tts"
|
||||||
|
SPEECH2TEXT = "speech2text"
|
||||||
|
MODERATION = "moderation"
|
||||||
|
VISION = "vision"
|
||||||
@ -1,115 +0,0 @@
|
|||||||
import logging
|
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from core.tools.entities.common_entities import I18nObject
|
|
||||||
from core.tools.entities.tool_entities import ToolParameter, ToolParameterOption, ToolProviderType
|
|
||||||
from core.tools.provider.tool_provider import ToolProviderController
|
|
||||||
from core.tools.tool.tool import Tool
|
|
||||||
from extensions.ext_database import db
|
|
||||||
from models.model import App, AppModelConfig
|
|
||||||
from models.tools import PublishedAppTool
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
class AppToolProviderEntity(ToolProviderController):
|
|
||||||
@property
|
|
||||||
def provider_type(self) -> ToolProviderType:
|
|
||||||
return ToolProviderType.APP
|
|
||||||
|
|
||||||
def _validate_credentials(self, tool_name: str, credentials: dict[str, Any]) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def validate_parameters(self, tool_name: str, tool_parameters: dict[str, Any]) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def get_tools(self, user_id: str) -> list[Tool]:
|
|
||||||
db_tools: list[PublishedAppTool] = db.session.query(PublishedAppTool).filter(
|
|
||||||
PublishedAppTool.user_id == user_id,
|
|
||||||
).all()
|
|
||||||
|
|
||||||
if not db_tools or len(db_tools) == 0:
|
|
||||||
return []
|
|
||||||
|
|
||||||
tools: list[Tool] = []
|
|
||||||
|
|
||||||
for db_tool in db_tools:
|
|
||||||
tool = {
|
|
||||||
'identity': {
|
|
||||||
'author': db_tool.author,
|
|
||||||
'name': db_tool.tool_name,
|
|
||||||
'label': {
|
|
||||||
'en_US': db_tool.tool_name,
|
|
||||||
'zh_Hans': db_tool.tool_name
|
|
||||||
},
|
|
||||||
'icon': ''
|
|
||||||
},
|
|
||||||
'description': {
|
|
||||||
'human': {
|
|
||||||
'en_US': db_tool.description_i18n.en_US,
|
|
||||||
'zh_Hans': db_tool.description_i18n.zh_Hans
|
|
||||||
},
|
|
||||||
'llm': db_tool.llm_description
|
|
||||||
},
|
|
||||||
'parameters': []
|
|
||||||
}
|
|
||||||
# get app from db
|
|
||||||
app: App = db_tool.app
|
|
||||||
|
|
||||||
if not app:
|
|
||||||
logger.error(f"app {db_tool.app_id} not found")
|
|
||||||
continue
|
|
||||||
|
|
||||||
app_model_config: AppModelConfig = app.app_model_config
|
|
||||||
user_input_form_list = app_model_config.user_input_form_list
|
|
||||||
for input_form in user_input_form_list:
|
|
||||||
# get type
|
|
||||||
form_type = input_form.keys()[0]
|
|
||||||
default = input_form[form_type]['default']
|
|
||||||
required = input_form[form_type]['required']
|
|
||||||
label = input_form[form_type]['label']
|
|
||||||
variable_name = input_form[form_type]['variable_name']
|
|
||||||
options = input_form[form_type].get('options', [])
|
|
||||||
if form_type == 'paragraph' or form_type == 'text-input':
|
|
||||||
tool['parameters'].append(ToolParameter(
|
|
||||||
name=variable_name,
|
|
||||||
label=I18nObject(
|
|
||||||
en_US=label,
|
|
||||||
zh_Hans=label
|
|
||||||
),
|
|
||||||
human_description=I18nObject(
|
|
||||||
en_US=label,
|
|
||||||
zh_Hans=label
|
|
||||||
),
|
|
||||||
llm_description=label,
|
|
||||||
form=ToolParameter.ToolParameterForm.FORM,
|
|
||||||
type=ToolParameter.ToolParameterType.STRING,
|
|
||||||
required=required,
|
|
||||||
default=default
|
|
||||||
))
|
|
||||||
elif form_type == 'select':
|
|
||||||
tool['parameters'].append(ToolParameter(
|
|
||||||
name=variable_name,
|
|
||||||
label=I18nObject(
|
|
||||||
en_US=label,
|
|
||||||
zh_Hans=label
|
|
||||||
),
|
|
||||||
human_description=I18nObject(
|
|
||||||
en_US=label,
|
|
||||||
zh_Hans=label
|
|
||||||
),
|
|
||||||
llm_description=label,
|
|
||||||
form=ToolParameter.ToolParameterForm.FORM,
|
|
||||||
type=ToolParameter.ToolParameterType.SELECT,
|
|
||||||
required=required,
|
|
||||||
default=default,
|
|
||||||
options=[ToolParameterOption(
|
|
||||||
value=option,
|
|
||||||
label=I18nObject(
|
|
||||||
en_US=option,
|
|
||||||
zh_Hans=option
|
|
||||||
)
|
|
||||||
) for option in options]
|
|
||||||
))
|
|
||||||
|
|
||||||
tools.append(Tool(**tool))
|
|
||||||
return tools
|
|
||||||
Loading…
Reference in New Issue