mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 10:17:00 +00:00
refac: autocomplete settings
This commit is contained in:
parent
dbf6ec71fe
commit
81a8ad2762
@ -1004,6 +1004,17 @@ Strictly return in JSON format:
|
|||||||
</chat_history>
|
</chat_history>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
ENABLE_AUTOCOMPLETE_GENERATION = PersistentConfig(
|
||||||
|
"ENABLE_AUTOCOMPLETE_GENERATION",
|
||||||
|
"task.autocomplete.enable",
|
||||||
|
os.environ.get("ENABLE_AUTOCOMPLETE_GENERATION", "True").lower() == "true",
|
||||||
|
)
|
||||||
|
|
||||||
|
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH = PersistentConfig(
|
||||||
|
"AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH",
|
||||||
|
"task.autocomplete.input_max_length",
|
||||||
|
int(os.environ.get("AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH", "-1")),
|
||||||
|
)
|
||||||
|
|
||||||
AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE = PersistentConfig(
|
AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE = PersistentConfig(
|
||||||
"AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE",
|
"AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE",
|
||||||
|
@ -89,6 +89,8 @@ from open_webui.config import (
|
|||||||
DEFAULT_QUERY_GENERATION_PROMPT_TEMPLATE,
|
DEFAULT_QUERY_GENERATION_PROMPT_TEMPLATE,
|
||||||
TITLE_GENERATION_PROMPT_TEMPLATE,
|
TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||||
TAGS_GENERATION_PROMPT_TEMPLATE,
|
TAGS_GENERATION_PROMPT_TEMPLATE,
|
||||||
|
ENABLE_AUTOCOMPLETE_GENERATION,
|
||||||
|
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH,
|
||||||
AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE,
|
AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE,
|
||||||
DEFAULT_AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE,
|
DEFAULT_AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE,
|
||||||
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE,
|
||||||
@ -210,6 +212,11 @@ app.state.config.TASK_MODEL_EXTERNAL = TASK_MODEL_EXTERNAL
|
|||||||
|
|
||||||
app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE = TITLE_GENERATION_PROMPT_TEMPLATE
|
app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE = TITLE_GENERATION_PROMPT_TEMPLATE
|
||||||
|
|
||||||
|
app.state.config.ENABLE_AUTOCOMPLETE_GENERATION = ENABLE_AUTOCOMPLETE_GENERATION
|
||||||
|
app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH = (
|
||||||
|
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH
|
||||||
|
)
|
||||||
|
|
||||||
app.state.config.ENABLE_TAGS_GENERATION = ENABLE_TAGS_GENERATION
|
app.state.config.ENABLE_TAGS_GENERATION = ENABLE_TAGS_GENERATION
|
||||||
app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE = TAGS_GENERATION_PROMPT_TEMPLATE
|
app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE = TAGS_GENERATION_PROMPT_TEMPLATE
|
||||||
|
|
||||||
@ -1672,6 +1679,8 @@ async def get_task_config(user=Depends(get_verified_user)):
|
|||||||
"TASK_MODEL": app.state.config.TASK_MODEL,
|
"TASK_MODEL": app.state.config.TASK_MODEL,
|
||||||
"TASK_MODEL_EXTERNAL": app.state.config.TASK_MODEL_EXTERNAL,
|
"TASK_MODEL_EXTERNAL": app.state.config.TASK_MODEL_EXTERNAL,
|
||||||
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||||
|
"ENABLE_AUTOCOMPLETE_GENERATION": app.state.config.ENABLE_AUTOCOMPLETE_GENERATION,
|
||||||
|
"AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH": app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH,
|
||||||
"TAGS_GENERATION_PROMPT_TEMPLATE": app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE,
|
"TAGS_GENERATION_PROMPT_TEMPLATE": app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE,
|
||||||
"ENABLE_TAGS_GENERATION": app.state.config.ENABLE_TAGS_GENERATION,
|
"ENABLE_TAGS_GENERATION": app.state.config.ENABLE_TAGS_GENERATION,
|
||||||
"ENABLE_SEARCH_QUERY_GENERATION": app.state.config.ENABLE_SEARCH_QUERY_GENERATION,
|
"ENABLE_SEARCH_QUERY_GENERATION": app.state.config.ENABLE_SEARCH_QUERY_GENERATION,
|
||||||
@ -1685,6 +1694,8 @@ class TaskConfigForm(BaseModel):
|
|||||||
TASK_MODEL: Optional[str]
|
TASK_MODEL: Optional[str]
|
||||||
TASK_MODEL_EXTERNAL: Optional[str]
|
TASK_MODEL_EXTERNAL: Optional[str]
|
||||||
TITLE_GENERATION_PROMPT_TEMPLATE: str
|
TITLE_GENERATION_PROMPT_TEMPLATE: str
|
||||||
|
ENABLE_AUTOCOMPLETE_GENERATION: bool
|
||||||
|
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH: int
|
||||||
TAGS_GENERATION_PROMPT_TEMPLATE: str
|
TAGS_GENERATION_PROMPT_TEMPLATE: str
|
||||||
ENABLE_TAGS_GENERATION: bool
|
ENABLE_TAGS_GENERATION: bool
|
||||||
ENABLE_SEARCH_QUERY_GENERATION: bool
|
ENABLE_SEARCH_QUERY_GENERATION: bool
|
||||||
@ -1700,6 +1711,14 @@ async def update_task_config(form_data: TaskConfigForm, user=Depends(get_admin_u
|
|||||||
app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE = (
|
app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE = (
|
||||||
form_data.TITLE_GENERATION_PROMPT_TEMPLATE
|
form_data.TITLE_GENERATION_PROMPT_TEMPLATE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
app.state.config.ENABLE_AUTOCOMPLETE_GENERATION = (
|
||||||
|
form_data.ENABLE_AUTOCOMPLETE_GENERATION
|
||||||
|
)
|
||||||
|
app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH = (
|
||||||
|
form_data.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH
|
||||||
|
)
|
||||||
|
|
||||||
app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE = (
|
app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE = (
|
||||||
form_data.TAGS_GENERATION_PROMPT_TEMPLATE
|
form_data.TAGS_GENERATION_PROMPT_TEMPLATE
|
||||||
)
|
)
|
||||||
@ -1722,6 +1741,8 @@ async def update_task_config(form_data: TaskConfigForm, user=Depends(get_admin_u
|
|||||||
"TASK_MODEL": app.state.config.TASK_MODEL,
|
"TASK_MODEL": app.state.config.TASK_MODEL,
|
||||||
"TASK_MODEL_EXTERNAL": app.state.config.TASK_MODEL_EXTERNAL,
|
"TASK_MODEL_EXTERNAL": app.state.config.TASK_MODEL_EXTERNAL,
|
||||||
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
"TITLE_GENERATION_PROMPT_TEMPLATE": app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
|
||||||
|
"ENABLE_AUTOCOMPLETE_GENERATION": app.state.config.ENABLE_AUTOCOMPLETE_GENERATION,
|
||||||
|
"AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH": app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH,
|
||||||
"TAGS_GENERATION_PROMPT_TEMPLATE": app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE,
|
"TAGS_GENERATION_PROMPT_TEMPLATE": app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE,
|
||||||
"ENABLE_TAGS_GENERATION": app.state.config.ENABLE_TAGS_GENERATION,
|
"ENABLE_TAGS_GENERATION": app.state.config.ENABLE_TAGS_GENERATION,
|
||||||
"ENABLE_SEARCH_QUERY_GENERATION": app.state.config.ENABLE_SEARCH_QUERY_GENERATION,
|
"ENABLE_SEARCH_QUERY_GENERATION": app.state.config.ENABLE_SEARCH_QUERY_GENERATION,
|
||||||
@ -1991,6 +2012,23 @@ async def generate_queries(form_data: dict, user=Depends(get_verified_user)):
|
|||||||
|
|
||||||
@app.post("/api/task/auto/completions")
|
@app.post("/api/task/auto/completions")
|
||||||
async def generate_autocompletion(form_data: dict, user=Depends(get_verified_user)):
|
async def generate_autocompletion(form_data: dict, user=Depends(get_verified_user)):
|
||||||
|
if not app.state.config.ENABLE_AUTOCOMPLETE_GENERATION:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=f"Autocompletion generation is disabled",
|
||||||
|
)
|
||||||
|
|
||||||
|
type = form_data.get("type")
|
||||||
|
prompt = form_data.get("prompt")
|
||||||
|
messages = form_data.get("messages")
|
||||||
|
|
||||||
|
if app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH > 0:
|
||||||
|
if len(prompt) > app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=f"Input prompt exceeds maximum length of {app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH}",
|
||||||
|
)
|
||||||
|
|
||||||
model_list = await get_all_models()
|
model_list = await get_all_models()
|
||||||
models = {model["id"]: model for model in model_list}
|
models = {model["id"]: model for model in model_list}
|
||||||
|
|
||||||
@ -2019,10 +2057,6 @@ async def generate_autocompletion(form_data: dict, user=Depends(get_verified_use
|
|||||||
else:
|
else:
|
||||||
template = DEFAULT_AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE
|
template = DEFAULT_AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE
|
||||||
|
|
||||||
type = form_data.get("type")
|
|
||||||
prompt = form_data.get("prompt")
|
|
||||||
messages = form_data.get("messages")
|
|
||||||
|
|
||||||
content = autocomplete_generation_template(
|
content = autocomplete_generation_template(
|
||||||
template, prompt, messages, type, {"name": user.name}
|
template, prompt, messages, type, {"name": user.name}
|
||||||
)
|
)
|
||||||
|
@ -24,6 +24,8 @@
|
|||||||
TASK_MODEL: '',
|
TASK_MODEL: '',
|
||||||
TASK_MODEL_EXTERNAL: '',
|
TASK_MODEL_EXTERNAL: '',
|
||||||
TITLE_GENERATION_PROMPT_TEMPLATE: '',
|
TITLE_GENERATION_PROMPT_TEMPLATE: '',
|
||||||
|
ENABLE_AUTOCOMPLETE_GENERATION: true,
|
||||||
|
AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH: -1,
|
||||||
TAGS_GENERATION_PROMPT_TEMPLATE: '',
|
TAGS_GENERATION_PROMPT_TEMPLATE: '',
|
||||||
ENABLE_TAGS_GENERATION: true,
|
ENABLE_TAGS_GENERATION: true,
|
||||||
ENABLE_SEARCH_QUERY_GENERATION: true,
|
ENABLE_SEARCH_QUERY_GENERATION: true,
|
||||||
@ -138,11 +140,42 @@
|
|||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-3" />
|
<hr class=" border-gray-50 dark:border-gray-850 my-3" />
|
||||||
|
|
||||||
<div class="my-3 flex w-full items-center justify-between">
|
<div class="my-3 flex w-full items-center justify-between">
|
||||||
<div class=" self-center text-xs font-medium">
|
<div class=" self-center text-xs font-medium">
|
||||||
{$i18n.t('Enable Tags Generation')}
|
{$i18n.t('Autocomplete Generation')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Tooltip content={$i18n.t('Enable autocomplete generation for chat messages')}>
|
||||||
|
<Switch bind:state={taskConfig.ENABLE_AUTOCOMPLETE_GENERATION} />
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if taskConfig.ENABLE_AUTOCOMPLETE_GENERATION}
|
||||||
|
<div class="mt-3">
|
||||||
|
<div class=" mb-2.5 text-xs font-medium">
|
||||||
|
{$i18n.t('Autocomplete Generation Input Max Length')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Tooltip
|
||||||
|
content={$i18n.t('Character limit for autocomplete generation input')}
|
||||||
|
placement="top-start"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
class="w-full outline-none"
|
||||||
|
bind:value={taskConfig.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH}
|
||||||
|
placeholder={$i18n.t('-1 for no limit, or a positive integer for a specific limit')}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<hr class=" border-gray-50 dark:border-gray-850 my-3" />
|
||||||
|
|
||||||
|
<div class="my-3 flex w-full items-center justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">
|
||||||
|
{$i18n.t('Tags Generation')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Switch bind:state={taskConfig.ENABLE_TAGS_GENERATION} />
|
<Switch bind:state={taskConfig.ENABLE_TAGS_GENERATION} />
|
||||||
@ -166,11 +199,11 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-3" />
|
<hr class=" border-gray-50 dark:border-gray-850 my-3" />
|
||||||
|
|
||||||
<div class="my-3 flex w-full items-center justify-between">
|
<div class="my-3 flex w-full items-center justify-between">
|
||||||
<div class=" self-center text-xs font-medium">
|
<div class=" self-center text-xs font-medium">
|
||||||
{$i18n.t('Enable Retrieval Query Generation')}
|
{$i18n.t('Retrieval Query Generation')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Switch bind:state={taskConfig.ENABLE_RETRIEVAL_QUERY_GENERATION} />
|
<Switch bind:state={taskConfig.ENABLE_RETRIEVAL_QUERY_GENERATION} />
|
||||||
@ -178,7 +211,7 @@
|
|||||||
|
|
||||||
<div class="my-3 flex w-full items-center justify-between">
|
<div class="my-3 flex w-full items-center justify-between">
|
||||||
<div class=" self-center text-xs font-medium">
|
<div class=" self-center text-xs font-medium">
|
||||||
{$i18n.t('Enable Web Search Query Generation')}
|
{$i18n.t('Web Search Query Generation')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Switch bind:state={taskConfig.ENABLE_SEARCH_QUERY_GENERATION} />
|
<Switch bind:state={taskConfig.ENABLE_SEARCH_QUERY_GENERATION} />
|
||||||
@ -201,7 +234,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr class=" dark:border-gray-850 my-3" />
|
<hr class=" border-gray-50 dark:border-gray-850 my-3" />
|
||||||
|
|
||||||
<div class=" space-y-3 {banners.length > 0 ? ' mb-3' : ''}">
|
<div class=" space-y-3 {banners.length > 0 ? ' mb-3' : ''}">
|
||||||
<div class="flex w-full justify-between">
|
<div class="flex w-full justify-between">
|
||||||
|
@ -612,12 +612,11 @@
|
|||||||
: null
|
: null
|
||||||
).catch((error) => {
|
).catch((error) => {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
toast.error(error);
|
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(res);
|
console.log(res);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}}
|
}}
|
||||||
on:keydown={async (e) => {
|
on:keydown={async (e) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user