Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
61fec52f
Unverified
Commit
61fec52f
authored
Jan 26, 2024
by
Yeuoly
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: model tool list
parent
20f13014
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
2 deletions
+32
-2
tool_providers.py
api/controllers/console/workspace/tool_providers.py
+6
-0
_position.yaml
api/core/tools/provider/_position.yaml
+1
-0
_positions.py
api/core/tools/provider/builtin/_positions.py
+3
-0
tools_manage_service.py
api/services/tools_manage_service.py
+22
-2
No files found.
api/controllers/console/workspace/tool_providers.py
View file @
61fec52f
...
...
@@ -84,6 +84,11 @@ class ToolBuiltinProviderIconApi(Resource):
icon_bytes
,
minetype
=
ToolManageService
.
get_builtin_tool_provider_icon
(
provider
)
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
):
@
setup_required
...
...
@@ -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
(
ToolBuiltinProviderCredentialsSchemaApi
,
'/workspaces/current/tool-provider/builtin/<provider>/credentials_schema'
)
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
(
ToolApiProviderGetRemoteSchemaApi
,
'/workspaces/current/tool-provider/api/remote'
)
api
.
add_resource
(
ToolApiProviderListToolsApi
,
'/workspaces/current/tool-provider/api/tools'
)
...
...
api/core/tools/provider/_position.yaml
View file @
61fec52f
...
...
@@ -3,6 +3,7 @@
-
dalle
-
webscraper
-
wolframalpha
-
model_provider.openai
-
chart
-
time
-
yahoo
...
...
api/core/tools/provider/builtin/_positions.py
View file @
61fec52f
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
...
...
@@ -19,6 +20,8 @@ class BuiltinToolProviderSort:
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
)
...
...
api/services/tools_manage_service.py
View file @
61fec52f
...
...
@@ -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.errors
import
ToolProviderCredentialValidationError
,
ToolProviderNotFoundError
,
ToolNotFoundError
from
services.model_provider_service
import
ModelProviderService
from
extensions.ext_database
import
db
from
models.tools
import
BuiltinToolProvider
,
ApiToolProvider
...
...
@@ -48,11 +50,13 @@ class ToolManageService:
:param provider: the provider dict
"""
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
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
:
try
:
provider
[
'icon'
]
=
json
.
loads
(
provider
[
'icon'
])
...
...
@@ -436,6 +440,22 @@ class ToolManageService:
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
def
delete_api_tool_provider
(
user_id
:
str
,
tenant_id
:
str
,
provider
:
str
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment