# Task Models Source: https://docs.openwebui.com/features/administration/task-models Open WebUI makes small model calls in the background, separately from the answer a user is waiting for. They write chat titles, generate tags, suggest follow-up questions, produce autocomplete ghost text, rewrite a message into a retrieval or web search query, rewrite a message into an image prompt and summarize older messages when [context compaction](/troubleshooting/context-window#the-built-in-option-context-compaction) is on. By default all of that runs on the model the user is chatting with. On an expensive flagship model it is a bill nobody planned for, and on a slow local model it makes the whole interface feel sluggish. Pointing background work at a small, fast model is the highest-value change an administrator can make here. The settings below are in **Settings > Admin > Interface**. --- ## Choosing the task model The **Tasks** section holds two pickers. Open WebUI picks between them based on the connection the chat model came from: | Field | Environment variable | Used when the chat model comes from | | --- | --- | --- | | Local Task Model | TASK_MODEL | a connection typed Local (Ollama and anything else you marked local) | | External Task Model | TASK_MODEL_EXTERNAL | a connection typed External (OpenAI-compatible providers) | Both default to **Current Model**, which means background work runs on the chat's own model. If you name a model that is no longer available, background work falls back to the chat's model rather than failing. > **What to pick** > > Small, fast and **non-reasoning**. A reasoning model spends seconds thinking before producing a three-word title, and you pay for those thinking tokens. > > > - **External Task Model**: `gpt-5.4-nano`, `gemini-3.5-flash-lite`, `claude-haiku-4-5-20251001`. > - **Local Task Model**: `qwen3.5:2b`, `gemma4:e2b`, `llama3.2:3b`. > > > > The main chat experience does not change. The background work just stops dragging. --- ## Task model parameters **Task Model Parameters > Configure**, in the same **Tasks** section, opens the advanced parameter controls you already know from a model and applies them to every background request. The equivalent environment variable is [`TASK_MODEL_PARAMS`](/reference/env-configuration#task_model_params), which takes a JSON object such as `{"max_tokens":4000,"temperature":0.3}`. Leave it empty and background requests behave as they always have: title generation and context compaction summaries stop at 1000 output tokens, and every other background task sends no parameters at all. Reach for it when: - **A title or a compaction summary comes back cut off.** This is the usual symptom of a reasoning task model. Thinking counts against the same 1000 tokens, so the budget can be gone before any answer is written. Raise `max_tokens` or turn `reasoning_effort` down. - **Background calls cost more than you expected.** Tag, follow-up, query and autocomplete requests carry no output limit of their own. Setting `max_tokens` puts a ceiling on all of them at once. - **Background output is too loose.** Lower `temperature` for steadier titles and tags. > **Setting anything replaces the built-in limit** > > As soon as you set a single parameter, the built-in 1000-token limit on titles and compaction summaries is no longer applied. If you still want a limit, include `max_tokens` in what you set. Emoji generation is the one exception: it always asks for 4 tokens and ignores this setting. Five of the controls in the panel have no effect on background requests: **Stream Chat Response**, **Stream Delta Chunk Size**, **Function Calling**, **Reasoning Tags** and **Context Compaction Threshold**. Setting them here changes nothing. This is the only place background requests get parameters from. A user's per-chat and per-account [chat parameters](/features/chat-conversations/chat-features/chat-params) never reach them, and neither do the global [model defaults](/features/workspace/models#global-model-defaults-admin). --- ## Turning individual tasks off Each background task has a switch under **Generation** in the same panel, and an environment variable: | Task | Admin toggle | Environment variable | | --- | --- | --- | | Chat title generation | Title Generation | ENABLE_TITLE_GENERATION | | Tag generation | Tags Generation | ENABLE_TAGS_GENERATION | | Follow-up suggestions | Follow Up Generation | ENABLE_FOLLOW_UP_GENERATION | | Autocomplete (fires as users type) | Autocomplete Generation | ENABLE_AUTOCOMPLETE_GENERATION | | Query rewriting for knowledge retrieval | Retrieval Query Generation | ENABLE_RETRIEVAL_QUERY_GENERATION | | Query rewriting for web search | Web Search Query Generation | ENABLE_SEARCH_QUERY_GENERATION | Image prompt generation is switched off in **Settings > Admin > Images** instead ([`ENABLE_IMAGE_PROMPT_GENERATION`](/reference/env-configuration#enable_image_prompt_generation)). > **Weak hardware** > > Autocomplete is the first thing to turn off. It fires as users type, so a slow task model turns the prompt box to molasses. --- ## Changing the prompts Every task's prompt sits next to its toggle under **Generation**, and each one is empty by default, meaning the built-in prompt is used. The [Tasks section of the environment configuration reference](/reference/env-configuration#tasks) has the full text of each built-in prompt and the placeholders it accepts. [Prompt modifiers](/features/workspace/prompts) are worth knowing about here, since task prompts often have to cope with pasted documents and long code blocks.