From bd8dfefe082d49b8ca861a1470df2c7f7f5c9ac2 Mon Sep 17 00:00:00 2001 From: sena-labs <218400180+sena-labs@users.noreply.github.com> Date: Thu, 7 May 2026 13:06:08 +0200 Subject: [PATCH] docs: correct two inaccurate FAQ answers verified against official docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Q1 (tool calling): the previous answer implied a single one-shot forward. Open WebUI actually re-invokes the pipe iteratively after each tool execution, appending role:tool messages to the thread each round. Q2 (FREE_ONLY): removed the google/gemma-* and qwen/qwen3-* examples, which are now incorrect — those models carry an explicit :free suffix. The two-pass detection logic (suffix check + pricing fields) is unchanged. Co-Authored-By: Claude Sonnet 4.6 --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d24d96f..cac970f 100644 --- a/README.md +++ b/README.md @@ -296,15 +296,18 @@ Some models may be temporarily unavailable. Try a different model or check **Q: Does this work with Open WebUI's native tool calling?** -A: Tool calling is handled by Open WebUI before the pipe receives the request — the pipe forwards -the composed messages as-is. Whether a given OpenRouter model supports tool use depends on +A: Open WebUI manages tool calling in an iterative loop: when the pipe's response contains +tool calls, Open WebUI executes them, appends the results as `role: "tool"` messages, and +re-invokes the pipe with the updated thread. The pipe forwards the full message list to +OpenRouter on each invocation. Whether a model can generate tool calls depends on OpenRouter's provider support for that model. **Q: Why does `FREE_ONLY` include models without a `:free` suffix?** -A: Some models (e.g. `google/gemma-*`, `qwen/qwen3-*`) are genuinely free but are not suffixed -with `:free`. The pipe checks both the suffix and the actual pricing (`0/0` prompt and completion -cost) to catch these cases. +A: Some models are listed as free on OpenRouter without carrying a `:free` suffix in their +ID. The pipe uses a two-pass check: first it looks for the `:free` suffix, then it falls +back to inspecting the `pricing.prompt` and `pricing.completion` fields returned by the +OpenRouter `/models` endpoint — if both are `0`, the model is treated as free. **Q: Can I use multiple provider filters at once?**