mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-22 09:31:58 -05:00
[GH-ISSUE #17522] issue: /api/v1/tools/ call is very slow #56984
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @jojo2357 on GitHub (Sep 17, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/17522
Check Existing Issues
Installation Method
Docker
Open WebUI Version
0.6.28
Ollama Version (if applicable)
No response
Operating System
Debian 12
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
Loading the root url is fast. Adding tools is also fast.
Actual Behavior
When navigating to the root url, the chat prompt is dealyed by a spinner. When trying to add a tool, those are also delayed by a spinner.
This is because the call to
/api/v1/tools/takes about 10s and is called both when navigating to the root and when opening the+menu to add tools to the chat.Steps to Reproduce
Install and run via docker. if it matters the host is debian 12. Potentially relevant I have
WEBUI_AUTH=Falseset.(Probably) Connect some AI provider, in my case ollama just to make sure that the tools get called
Add an external tool via Admin Panel > Settings > External Tools . I added GitLab with these settings:
https://gitlab.com/gitlab-org/gitlab/-/raw/master/doc/api/openapi/openapi_v2.yamlSave that and then in a new tab go to the root openwebui view.
Observe undesired behavior. Also open devtools and observe the very slow tools endpoint
Go back to tools and disable the gitlab tool
Problem disappears
Logs & Screenshots
No relevant browser errors were found
For Docker logs, they are far too large, but what I can see in them is that EVERY time the tools endpoint is hit, openwebui is converting the YAML to JSON and dumping it to the logs. Considering the YAML is ~2MB this is not a cheap operation.
Additional Information
I suspect the problem can be solved by asynchronously updating the tool definition, and perhaps not updating it on every call. GitLab has a
cache-controlheader and responds to theIf-None-Matchheader.Perhaps also a feature request is in order to selectively provide endpoints because, well, 2MB of external tool is probably too much for local LLMs and it has so many endpoints that I don't want to access, but for now the buggos!