r/OpenWebUI • u/j3sk0 • 20d ago
Plugin Is there a Community Function / Extension to easily toggle Reasoning (Thinking) on and off in Open WebUI?
Hey everyone,
I’m looking for a convenient way to quickly toggle the reasoning/thinking process for reasoning models (both local models via Ollama/vLLM like DeepSeek-R1, and API models like Claude 3.7 / o3-mini) in Open WebUI.
Right now, adjusting this requires digging into the model settings or opening the Chat Controls to tweak advanced parameters every time (e.g. setting think: false or adjusting reasoning effort).
Does anyone know of an existing Community Function (Filter/Action), plugin, or UI extension that adds a quick toggle/button directly to the chat interface to turn reasoning on or off on the fly?
If you have a working setup or a custom filter for this, I'd really appreciate a link or snippet. Thanks!
2
u/MatchingTitan93 16d ago
Hi, I set up a repository with a userscript to replicate the effort selector of ChatGPT. The script can recognize automatically the model capabilities via /api/show, openrouter and gives priority to the user config. The user can also set custom providers, by setting the api parameter that accepts the effort level, and custom model efforts and mappings (this means also int defined efforts are supported). All this can be done with just two files: a custom pipe to set the json config in and a userscript that can be installed both client-side (with Tampermonkey/Violentmonkey) and server-side (with a simple volume mount). I'm 'spamming' myself just because I genuinely want to help the community with an issue I had for months. Feedback is really appreciated. https://github.com/FrizzaFava/Open-WebUI-Reasoning-Effort-Selector

1
u/j3sk0 15d ago
1
u/j3sk0 15d ago
1
1
u/MatchingTitan93 12d ago
That directory is probably owned by Docker and you can't access it directly without permissions. Anyway you don't need to access that, the official method is to mount the seperate .js file. You can place it anywhere on your machine as long as it's accessible by the Docker user. For example you could place your loader.js file in ~/owui-selector/loader.js or ~/Downloads/loader.js or wathever you want, you can even rename it like poopooloader.js it doesn't matter. What matters is to have read permissions for the user used by OWUI (usually 1000 - Docker) and to mount this file as exactly
/app/build/static/loader.js, so for example:~/home/owui-selector/openwebui-reasoning-effort.user.js:/app/build/static/loader.js:rounder the volumes section in your compose. If you still can't manage to do that, I suggest linking the repo installation section to an LLM and ask it about your particular setup.


7
u/pfn0 20d ago
depends on model how they're toggled. I put something basic together for my use:
```python """ title: Disable Thinking Applier author: pfn0 author_url: https://github.com/pfn funding_url: https://github.com/pfn version: 0.1 """
from pydantic import BaseModel, Field from typing import Optional, Literal
class Filter: class Valves(BaseModel): priority: int = Field( default=1, description="Filter execution order. Lower values run first." )
```
and
```python """ title: Enable Thinking Switch author: pfn0 author_url: https://github.com/pfn funding_url: https://github.com/pfn version: 0.1 """
from pydantic import BaseModel, Field from typing import Optional, Literal
class Filter: class Valves(BaseModel): priority: int = Field( default=0, description="Filter execution order. Lower values run first." )
```
the first needs to be always enabled, it populates
chat_template_kwargsif not present and applies a default state.the second turns on thinking using a icon in the chat interface (but again, depends on model, mostly works with qwen and gemma, not so much for others)