forked from open-webui/open-webui
feat: custom interface support
This commit is contained in:
parent
b246c62d2c
commit
4e1b52e91b
3 changed files with 60 additions and 5 deletions
|
@ -11,14 +11,15 @@ from apps.web.routers import (
|
||||||
configs,
|
configs,
|
||||||
utils,
|
utils,
|
||||||
)
|
)
|
||||||
from config import WEBUI_VERSION, WEBUI_AUTH
|
from config import WEBUI_VERSION, WEBUI_AUTH, DEFAULT_MODELS, DEFAULT_PROMPT_SUGGESTIONS
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
origins = ["*"]
|
origins = ["*"]
|
||||||
|
|
||||||
app.state.ENABLE_SIGNUP = True
|
app.state.ENABLE_SIGNUP = True
|
||||||
app.state.DEFAULT_MODELS = None
|
app.state.DEFAULT_MODELS = DEFAULT_MODELS
|
||||||
|
app.state.DEFAULT_PROMPT_SUGGESTIONS = DEFAULT_PROMPT_SUGGESTIONS
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
|
@ -46,4 +47,5 @@ async def get_status():
|
||||||
"version": WEBUI_VERSION,
|
"version": WEBUI_VERSION,
|
||||||
"auth": WEBUI_AUTH,
|
"auth": WEBUI_AUTH,
|
||||||
"default_models": app.state.DEFAULT_MODELS,
|
"default_models": app.state.DEFAULT_MODELS,
|
||||||
|
"default_prompt_suggestions": app.state.DEFAULT_PROMPT_SUGGESTIONS,
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,15 +21,24 @@ class SetDefaultModelsForm(BaseModel):
|
||||||
models: str
|
models: str
|
||||||
|
|
||||||
|
|
||||||
|
class PromptSuggestion(BaseModel):
|
||||||
|
title: List[str]
|
||||||
|
content: str
|
||||||
|
|
||||||
|
|
||||||
|
class SetDefaultSuggestionsForm(BaseModel):
|
||||||
|
suggestions: List[PromptSuggestion]
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
# SetDefaultModels
|
# SetDefaultModels
|
||||||
############################
|
############################
|
||||||
|
|
||||||
|
|
||||||
@router.post("/default/models", response_model=str)
|
@router.post("/default/models", response_model=str)
|
||||||
async def set_global_default_models(request: Request,
|
async def set_global_default_models(
|
||||||
form_data: SetDefaultModelsForm,
|
request: Request, form_data: SetDefaultModelsForm, user=Depends(get_current_user)
|
||||||
user=Depends(get_current_user)):
|
):
|
||||||
if user.role == "admin":
|
if user.role == "admin":
|
||||||
request.app.state.DEFAULT_MODELS = form_data.models
|
request.app.state.DEFAULT_MODELS = form_data.models
|
||||||
return request.app.state.DEFAULT_MODELS
|
return request.app.state.DEFAULT_MODELS
|
||||||
|
@ -38,3 +47,19 @@ async def set_global_default_models(request: Request,
|
||||||
status_code=status.HTTP_403_FORBIDDEN,
|
status_code=status.HTTP_403_FORBIDDEN,
|
||||||
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/default/suggestions", response_model=str)
|
||||||
|
async def set_global_default_suggestions(
|
||||||
|
request: Request,
|
||||||
|
form_data: SetDefaultSuggestionsForm,
|
||||||
|
user=Depends(get_current_user),
|
||||||
|
):
|
||||||
|
if user.role == "admin":
|
||||||
|
request.app.state.DEFAULT_PROMPT_SUGGESTIONS = form_data.suggestions
|
||||||
|
return request.app.state.DEFAULT_PROMPT_SUGGESTIONS
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_403_FORBIDDEN,
|
||||||
|
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
||||||
|
)
|
||||||
|
|
|
@ -54,6 +54,34 @@ OPENAI_API_BASE_URL = os.environ.get("OPENAI_API_BASE_URL", "")
|
||||||
if OPENAI_API_BASE_URL == "":
|
if OPENAI_API_BASE_URL == "":
|
||||||
OPENAI_API_BASE_URL = "https://api.openai.com/v1"
|
OPENAI_API_BASE_URL = "https://api.openai.com/v1"
|
||||||
|
|
||||||
|
|
||||||
|
####################################
|
||||||
|
# WEBUI
|
||||||
|
####################################
|
||||||
|
|
||||||
|
DEFAULT_MODELS = os.environ.get("DEFAULT_MODELS", None)
|
||||||
|
DEFAULT_PROMPT_SUGGESTIONS = os.environ.get(
|
||||||
|
"DEFAULT_PROMPT_SUGGESTIONS",
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"title": ["Help me study", "vocabulary for a college entrance exam"],
|
||||||
|
"content": "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": ["Give me ideas", "for what to do with my kids' art"],
|
||||||
|
"content": "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": ["Tell me a fun fact", "about the Roman Empire"],
|
||||||
|
"content": "Tell me a random fun fact about the Roman Empire",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": ["Show me a code snippet", "of a website's sticky header"],
|
||||||
|
"content": "Show me a code snippet of a website's sticky header in CSS and JavaScript.",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# WEBUI_VERSION
|
# WEBUI_VERSION
|
||||||
####################################
|
####################################
|
||||||
|
|
Loading…
Reference in a new issue