You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug: Qwen2.5 tool calling broken in oa-compat provider — tools not properly formatted in toOaCompatibleRequest #11171
Qwen2.5 models fail to perform tool calls when using the oa-compat provider format. The same model works correctly in Open WebUI.
Root Cause
In packages/console/app/src/routes/zen/util/provider/openai-compatible.ts, the toOaCompatibleRequest function has two issues:
Assumes flat tool format only — The tools mapping does tool.name, tool.description, tool.parameters directly, but CommonTool objects arriving from other format converters may already be in the nested OpenAI format { type: "function", function: { name, description, parameters } }. When tools arrive nested, tool.name is undefined and the tool definition sent to the model is empty.
Missing strict field — The CommonTool interface in provider.ts defines strict?: boolean, but toOaCompatibleRequest drops it during tool mapping. Some models (including Qwen2.5) rely on this field.
These issues all relate to tool calling failures with Qwen and OpenAI-compatible providers. Your detailed analysis of the root cause (nested tool format handling and missing strict field) might help resolve these related issues as well.
Feel free to ignore if none of these address your specific case.
Activity
github-actions commentedon Jan 29, 2026
This issue might be a duplicate of existing issues. Please check:
These issues all relate to tool calling failures with Qwen and OpenAI-compatible providers. Your detailed analysis of the root cause (nested tool format handling and missing strict field) might help resolve these related issues as well.
Feel free to ignore if none of these address your specific case.
Almoosawi commentedon Jan 29, 2026
can you check this fix and implement if it's correct please:
const tools = Array.isArray(body.tools)
? body.tools.map((tool: any) => {
const t = tool.function ? tool.function : tool // <-- KEY FIX #1
return {
type: "function",
function: {
name: t.name,
description: t.description,
parameters: t.parameters,
strict: t.strict, // <-- KEY FIX #2
},
}
})
: undefined
fix(cli): support nested tools and strict flag for openai-compatible …
github-actions commentedon Apr 1, 2026
To stay organized issues are automatically closed after 90 days of no activity. If the issue is still relevant please open a new one.