快速结论:该报错出现在模型调用 Open WebUI 内置工具 ask_user 时,把 questions 参数发成了 JSON 字符串而非数组;normalize_ask_user_request 只检查 list,于是字符串被误报为“requires 1-3 questions”,小模型无法理解错误并持续重试同一调用。优先确认模型实际传入的 questions 类型,并修正错误信息或改用工具调用更可靠的大模型。
适用环境:Open WebUI v0.12.3(Pip 安装);dev 分支 079fb19e75 代码路径相同但未运行;macOS 26.7.1(Apple Silicon);Ollama v0.34.0,模型 Qwen3.5 9B(native function calling);后端参数校验,与浏览器无关。
最快修复方案:暂无确认的一步修复方案(Issue 被关闭且维护者表示当前拒绝字符串形式符合预期)。可优先尝试:让模型重新生成符合 schema 的数组参数,或换用工具调用更可靠的新版/更大模型(评论中建议 Qwen 3.6 / 3.8 27B)。
注意事项:Issue 中用于接受字符串的补丁只是报告者的本地修改,并未合并,不能视为官方方案;仅改错误文案的 PR 提议也未获明确接受。若自行打补丁,属于本地定制,升级后可能被覆盖或与上游实现冲突。
问题场景
在 Open WebUI 中启用 user_input 内置工具(即 ask_user),使用支持原生函数调用的小模型(Issue 中为 Ollama 上的 Qwen3.5 9B),提示模型“在开始前用 ask_user 带选项地提问”。当模型把 questions 作为 JSON 编码字符串传入(形如 {"questions": "[{\"id\": \"topic\", ...}]"})时,工具返回错误,模型反复重试同一调用:一次运行 4 次后第 5 次改用真实数组成功,另一次 13 次全部失败直至 6 分钟超时。
报错原文
Error: ask_user requires 1-3 questions.
原因分析
最可能的原因是参数校验逻辑对类型与数量的判断顺序不当。backend/open_webui/utils/ask_user.py 中的判断为:
questions = arguments.get('questions')
if not isinstance(questions, list) or not 1 <= len(questions) <= 3:
raise ValueError('ask_user requires 1-3 questions.')
当 questions 是字符串时,isinstance(questions, list) 为假,但错误信息只提到数量。模型自知发送了 1–3 个问题,因此把错误理解为“选项太长”之类,继续重试。工具 schema 本身正确声明了数组类型,模型未遵守 schema 是触发前提;误导性错误文案是导致循环的原因。对比之下,另一轮模型收到 Each question requires 2-3 options.(明确指向问题)后,下一次调用即自行修正。
环境排查
- 确认 Open WebUI 版本(Issue 为 v0.12.3 pip 安装;dev 分支 079fb19e75 为相同代码路径,但仅为代码审查,未实际运行)。
- 确认是否启用
user_input内置工具。 - 确认 Ollama 版本(Issue 为 v0.34.0)及所用模型是否支持 native function calling。
- 确认模型返回的工具调用参数中
questions的实际 JSON 类型是字符串还是数组,可结合工具结果日志判断。 - 操作系统为 macOS 26.7.1(Apple Silicon);问题为后端校验,与浏览器无关。
解决步骤
- 先用日志或工具调用记录确认模型传入的
questions是 JSON 字符串,而非数组。 - 可优先尝试换用工具调用更可靠的新版或更大模型(评论中建议 Qwen 3.6 / 3.8 27B),或重新提问以促使模型按 schema 发送数组;Issue 记录同一模型有时首次即发送正确列表。
- 如确需在本实例接受字符串形式,可参考报告者的本地补丁思路:字符串先尝试 JSON 解码,字典包装为单元素列表,非列表时报明确错误,再校验 1–3 个问题。注意这是本地改动,非官方合并方案。
- 如只改善错误可读性,可采用报告者提出的最小改动:先判断是否为 list,不是则抛出类似
ask_user questions must be a JSON array of question objects, not a string.的明确错误,再判断数量;是否被上游接受需另行确认。 - 修改后重启 Open WebUI 使后端改动生效。
验证方法
再次发送同样的“先提问再开始”提示,观察工具结果:模型不应再收到“requires 1-3 questions”这一误导信息。若采用错误文案改动,字符串调用应返回明确的类型错误,并检查模型是否在下一轮修正为数组调用;若换用更可靠模型,应能在首次或少数几次调用内成功返回问题列表。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Roadmap] vLLM Roadmap Q3 2026](https://www.chat-gpts.plus/wp-content/uploads/2026/10/48168-07ca8ed3-768x403.jpg)
