Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
ba7091c2
Commit
ba7091c2
authored
Jun 18, 2024
by
Timothy J. Baek
Browse files
refac
parent
e076803f
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
145 additions
and
1 deletion
+145
-1
backend/apps/webui/models/functions.py
backend/apps/webui/models/functions.py
+140
-0
src/lib/components/workspace/Models/ModelMenu.svelte
src/lib/components/workspace/Models/ModelMenu.svelte
+5
-1
No files found.
backend/apps/webui/models/functions.py
0 → 100644
View file @
ba7091c2
from
pydantic
import
BaseModel
from
peewee
import
*
from
playhouse.shortcuts
import
model_to_dict
from
typing
import
List
,
Union
,
Optional
import
time
import
logging
from
apps.webui.internal.db
import
DB
,
JSONField
import
json
from
config
import
SRC_LOG_LEVELS
log
=
logging
.
getLogger
(
__name__
)
log
.
setLevel
(
SRC_LOG_LEVELS
[
"MODELS"
])
####################
# Functions DB Schema
####################
class
Function
(
Model
):
id
=
CharField
(
unique
=
True
)
user_id
=
CharField
()
name
=
TextField
()
type
=
TextField
()
content
=
TextField
()
meta
=
JSONField
()
updated_at
=
BigIntegerField
()
created_at
=
BigIntegerField
()
class
Meta
:
database
=
DB
class
FunctionMeta
(
BaseModel
):
description
:
Optional
[
str
]
=
None
class
FunctionModel
(
BaseModel
):
id
:
str
user_id
:
str
name
:
str
type
:
str
content
:
str
meta
:
FunctionMeta
updated_at
:
int
# timestamp in epoch
created_at
:
int
# timestamp in epoch
####################
# Forms
####################
class
FunctionResponse
(
BaseModel
):
id
:
str
user_id
:
str
name
:
str
meta
:
FunctionMeta
updated_at
:
int
# timestamp in epoch
created_at
:
int
# timestamp in epoch
class
FunctionForm
(
BaseModel
):
id
:
str
name
:
str
type
:
str
content
:
str
meta
:
FunctionMeta
class
ToolsTable
:
def
__init__
(
self
,
db
):
self
.
db
=
db
self
.
db
.
create_tables
([
Function
])
def
insert_new_function
(
self
,
user_id
:
str
,
form_data
:
FunctionForm
)
->
Optional
[
FunctionModel
]:
function
=
FunctionModel
(
**
{
**
form_data
.
model_dump
(),
"user_id"
:
user_id
,
"updated_at"
:
int
(
time
.
time
()),
"created_at"
:
int
(
time
.
time
()),
}
)
try
:
result
=
Function
.
create
(
**
function
.
model_dump
())
if
result
:
return
function
else
:
return
None
except
Exception
as
e
:
print
(
f
"Error creating tool:
{
e
}
"
)
return
None
def
get_function_by_id
(
self
,
id
:
str
)
->
Optional
[
FunctionModel
]:
try
:
function
=
Function
.
get
(
Function
.
id
==
id
)
return
FunctionModel
(
**
model_to_dict
(
function
))
except
:
return
None
def
get_functions
(
self
)
->
List
[
FunctionModel
]:
return
[
FunctionModel
(
**
model_to_dict
(
function
))
for
function
in
Function
.
select
()
]
def
get_functions_by_type
(
self
,
type
:
str
)
->
List
[
FunctionModel
]:
return
[
FunctionModel
(
**
model_to_dict
(
function
))
for
function
in
Function
.
select
().
where
(
Function
.
type
==
type
)
]
def
update_function_by_id
(
self
,
id
:
str
,
updated
:
dict
)
->
Optional
[
FunctionModel
]:
try
:
query
=
Function
.
update
(
**
updated
,
updated_at
=
int
(
time
.
time
()),
).
where
(
Function
.
id
==
id
)
query
.
execute
()
function
=
Function
.
get
(
Function
.
id
==
id
)
return
FunctionModel
(
**
model_to_dict
(
function
))
except
:
return
None
def
delete_function_by_id
(
self
,
id
:
str
)
->
bool
:
try
:
query
=
Function
.
delete
().
where
((
Function
.
id
==
id
))
query
.
execute
()
# Remove the rows, return number of rows removed.
return
True
except
:
return
False
Tools
=
ToolsTable
(
DB
)
src/lib/components/workspace/Models/ModelMenu.svelte
View file @
ba7091c2
...
...
@@ -124,7 +124,11 @@
{/if}
<div class="flex items-center">
{$i18n.t(model?.info?.meta?.hidden ?? false ? 'Show Model' : 'Hide Model')}
{#if model?.info?.meta?.hidden ?? false}
{$i18n.t('Show Model')}
{:else}
{$i18n.t('Hide Model')}
{/if}
</div>
</DropdownMenu.Item>
...
...
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