[GH-ISSUE #13905] issue: Native Tool Calling Does not Work for OpenAI API #17070

Closed
opened 2026-04-19 22:50:11 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @alexaytov on GitHub (May 15, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/13905

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Pip Install

Open WebUI Version

v0.6.9

Ollama Version (if applicable)

No response

Operating System

macOS

Browser (if applicable)

Chrome

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have listed steps to reproduce the bug in detail.

Expected Behavior

When the openAI backend is calling a tool, I expected the openweb-ui to execute the tool and send the response from the tool to the AI backend and return the AI response.

Actual Behavior

When the backend requests a tool usage e.g.:

{
...
    "choices": [
        {
            "content_filter_results": {},
            "finish_reason": "tool_calls",
            "index": 0,
            "logprobs": null,
            "message": {
                "annotations": [],
                "content": null,
                "refusal": null,
                "role": "assistant",
                "tool_calls": [
                    {
                        "function": {
                            "arguments": "{\"query\":\"today's date\"}",
                            "name": "search_web"
                        },
                        "id": "call_DC01QJGwYbQPppOaIYoaj6th",
                        "type": "function"
                    }
                ]
            }
        }
    ],
...
}

The response is stuck in loading and is never loaded.

Steps to Reproduce

  1. Add OpenAI token for the backend
  2. Add a tool in the workspace
  3. Start a new chat
  4. Enable the tool and select an OpenAI model (e.g. gpt-4o)
  5. Ask a question that requires the tool to be executed
  6. Observe the UI does not return a response but it justs stuck on loading the response animation

Logs & Screenshots

Terminal Logs during the chat execution:

2025-05-15 10:17:24.974 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50468 - "GET /static/favicon.png HTTP/1.1" 304 - {}
2025-05-15 10:17:24.978 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50470 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {}
2025-05-15 10:17:25.029 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50470 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {}
2025-05-15 10:17:25.029 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50468 - "GET /static/favicon.png HTTP/1.1" 304 - {}
2025-05-15 10:17:48.752 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50660 - "GET /static/favicon.png HTTP/1.1" 304 - {}
2025-05-15 10:17:48.754 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "POST /api/v1/chats/new HTTP/1.1" 200 - {}
2025-05-15 10:17:48.765 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-05-15 10:17:48.793 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "POST /api/v1/chats/015a9a94-4911-49f8-a7c7-4280b99111d3 HTTP/1.1" 200 - {}
2025-05-15 10:17:48.823 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}
2025-05-15 10:17:48.853 | INFO     | open_webui.routers.openai:get_all_models:390 - get_all_models() - {}
2025-05-15 10:17:48.960 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50660 - "GET /static/favicon.png HTTP/1.1" 304 - {}
2025-05-15 10:17:53.401 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "POST /api/chat/completions HTTP/1.1" 200 - {}
2025-05-15 10:17:53.424 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {}

Browser console logs:

submitPrompt Use google search to find out today’s date 
Chat.svelte:190 saveSessionSelectedModels ['gpt-4o'] ["gpt-4o"]
MessageInput.svelte:344 destroy
ResponseMessage.svelte:562 <div class=​"flex justify-start overflow-x-auto buttons text-gray-600 dark:​text-gray-500 mt-0.5 svelte-1u5gq5j">​</div>​
RichTextInput.svelte:185 content 
RichTextInput.svelte:187 [tiptap warn]: Duplicate extension names found: ['codeBlock']. This can lead to issues.
resolve @ index.js:1183
tn @ index.js:1169
createExtensionManager @ index.js:4580
BE @ index.js:4412
(anonymous) @ RichTextInput.svelte:187
await in (anonymous)
J @ utils.js:41
(anonymous) @ Component.js:47
_t @ scheduler.js:99
Promise.then
ut @ scheduler.js:20
ht @ Component.js:81
(anonymous) @ Component.js:139
me @ Chat.svelte:1318
sr @ Chat.svelte:2137
await in sr
(anonymous) @ lifecycle.js:105
(anonymous) @ lifecycle.js:104
x @ Placeholder.svelte:215
(anonymous) @ lifecycle.js:105
(anonymous) @ lifecycle.js:104
Tt @ MessageInput.svelte:764
(anonymous) @ lifecycle.js:105
(anonymous) @ lifecycle.js:104
keydown @ RichTextInput.svelte:330
(anonymous) @ index.js:3108
someProp @ index.js:5502
ji @ index.js:3106
Pu.t.dom.addEventListener.t.input.eventHandlers.<computed> @ index.js:3075Understand this warning
ResponseMessage.svelte:562 <div class=​"flex justify-start overflow-x-auto buttons text-gray-600 dark:​text-gray-500 mt-0.5 svelte-1u5gq5j">​</div>​flex
Chat.svelte:1440 modelId gpt-4o
+layout.svelte:103 usage {models: Array(1)}models: ['gpt-4o'][[Prototype]]: Object
+layout.svelte:103 usage {models: Array(1)}
+layout.svelte:103 usage {models: Array(1)}
+layout.svelte:103 usage {models: Array(0)}models: [][[Prototype]]: Object
Image Image Image

Additional Information

No response

Originally created by @alexaytov on GitHub (May 15, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/13905 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Pip Install ### Open WebUI Version v0.6.9 ### Ollama Version (if applicable) _No response_ ### Operating System macOS ### Browser (if applicable) Chrome ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have listed steps to reproduce the bug in detail. ### Expected Behavior When the openAI backend is calling a tool, I expected the openweb-ui to execute the tool and send the response from the tool to the AI backend and return the AI response. ### Actual Behavior When the backend requests a tool usage e.g.: ```json { ... "choices": [ { "content_filter_results": {}, "finish_reason": "tool_calls", "index": 0, "logprobs": null, "message": { "annotations": [], "content": null, "refusal": null, "role": "assistant", "tool_calls": [ { "function": { "arguments": "{\"query\":\"today's date\"}", "name": "search_web" }, "id": "call_DC01QJGwYbQPppOaIYoaj6th", "type": "function" } ] } } ], ... } ``` The response is stuck in loading and is never loaded. ### Steps to Reproduce 1. Add OpenAI token for the backend 2. Add a tool in the workspace 3. Start a new chat 4. Enable the tool and select an OpenAI model (e.g. gpt-4o) 5. Ask a question that requires the tool to be executed 6. Observe the UI does not return a response but it justs stuck on loading the response animation ### Logs & Screenshots Terminal Logs during the chat execution: ``` 2025-05-15 10:17:24.974 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50468 - "GET /static/favicon.png HTTP/1.1" 304 - {} 2025-05-15 10:17:24.978 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50470 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {} 2025-05-15 10:17:25.029 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50470 - "GET /api/v1/users/user/settings HTTP/1.1" 200 - {} 2025-05-15 10:17:25.029 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50468 - "GET /static/favicon.png HTTP/1.1" 304 - {} 2025-05-15 10:17:48.752 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50660 - "GET /static/favicon.png HTTP/1.1" 304 - {} 2025-05-15 10:17:48.754 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "POST /api/v1/chats/new HTTP/1.1" 200 - {} 2025-05-15 10:17:48.765 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {} 2025-05-15 10:17:48.793 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "POST /api/v1/chats/015a9a94-4911-49f8-a7c7-4280b99111d3 HTTP/1.1" 200 - {} 2025-05-15 10:17:48.823 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {} 2025-05-15 10:17:48.853 | INFO | open_webui.routers.openai:get_all_models:390 - get_all_models() - {} 2025-05-15 10:17:48.960 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50660 - "GET /static/favicon.png HTTP/1.1" 304 - {} 2025-05-15 10:17:53.401 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "POST /api/chat/completions HTTP/1.1" 200 - {} 2025-05-15 10:17:53.424 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 127.0.0.1:50654 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200 - {} ``` Browser console logs: ``` submitPrompt Use google search to find out today’s date Chat.svelte:190 saveSessionSelectedModels ['gpt-4o'] ["gpt-4o"] MessageInput.svelte:344 destroy ResponseMessage.svelte:562 <div class=​"flex justify-start overflow-x-auto buttons text-gray-600 dark:​text-gray-500 mt-0.5 svelte-1u5gq5j">​</div>​ RichTextInput.svelte:185 content RichTextInput.svelte:187 [tiptap warn]: Duplicate extension names found: ['codeBlock']. This can lead to issues. resolve @ index.js:1183 tn @ index.js:1169 createExtensionManager @ index.js:4580 BE @ index.js:4412 (anonymous) @ RichTextInput.svelte:187 await in (anonymous) J @ utils.js:41 (anonymous) @ Component.js:47 _t @ scheduler.js:99 Promise.then ut @ scheduler.js:20 ht @ Component.js:81 (anonymous) @ Component.js:139 me @ Chat.svelte:1318 sr @ Chat.svelte:2137 await in sr (anonymous) @ lifecycle.js:105 (anonymous) @ lifecycle.js:104 x @ Placeholder.svelte:215 (anonymous) @ lifecycle.js:105 (anonymous) @ lifecycle.js:104 Tt @ MessageInput.svelte:764 (anonymous) @ lifecycle.js:105 (anonymous) @ lifecycle.js:104 keydown @ RichTextInput.svelte:330 (anonymous) @ index.js:3108 someProp @ index.js:5502 ji @ index.js:3106 Pu.t.dom.addEventListener.t.input.eventHandlers.<computed> @ index.js:3075Understand this warning ResponseMessage.svelte:562 <div class=​"flex justify-start overflow-x-auto buttons text-gray-600 dark:​text-gray-500 mt-0.5 svelte-1u5gq5j">​</div>​flex Chat.svelte:1440 modelId gpt-4o +layout.svelte:103 usage {models: Array(1)}models: ['gpt-4o'][[Prototype]]: Object +layout.svelte:103 usage {models: Array(1)} +layout.svelte:103 usage {models: Array(1)} +layout.svelte:103 usage {models: Array(0)}models: [][[Prototype]]: Object ``` <img width="1126" alt="Image" src="https://github.com/user-attachments/assets/93d88b7a-0401-483b-8221-e3b17bb715d6" /> <img width="341" alt="Image" src="https://github.com/user-attachments/assets/f86d70e4-930a-440e-999a-0e0f44aa3994" /> <img width="1163" alt="Image" src="https://github.com/user-attachments/assets/ba599fae-4faf-4f60-ae09-8bcef9b2591e" /> ### Additional Information _No response_
GiteaMirror added the bug label 2026-04-19 22:50:11 -05:00
Author
Owner

@tjbck commented on GitHub (May 15, 2025):

Image

Unable to reproduce, keep us updated!

<!-- gh-comment-id:2883036661 --> @tjbck commented on GitHub (May 15, 2025): <img width="1465" alt="Image" src="https://github.com/user-attachments/assets/466bb2b3-3799-4827-8f7b-84284e7d73e8" /> Unable to reproduce, keep us updated!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#17070