☰
Joplin AI chat 连接本地 Ollama 时提示 “No choices in response“ 怎么排查?
2026/10/12 6:17:08 网站建设 项目流程

Joplin AI chat 连接本地 Ollama 时提示 "No choices in response" 怎么排查?

【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplin

在 Joplin 桌面应用里配置 AI chat 功能、把 Chat provider 指向本地 Ollama 之后,点击Test AI configuration时按钮下方报错"No choices in response — check that the base URL includes /v1"。这条错误只出现在 Joplin 桌面应用(AI 功能仅在桌面端可用),绝大多数情况下指向同一个原因:OpenAI-compatible 的 Base URL 少了/v1后缀。下面的排查与修复步骤全部依据 Joplin 仓库内的文档。

先看懂这个错误是怎么产生的

Joplin 的 AI 配置里,Chat provider选择OpenAI-compatible后需要填三项:Base URL、API key 和 model name(readme/apps/ai_chat.md)。Ollama 对应的 Base URL 是http://localhost:11434/v1,注意结尾的/v1。

Test AI configuration按钮会向当前 provider 发送一条单消息 chat("Reply with the single word OK.")并把结果直接显示在按钮下方,测试失败时错误信息也显示在按钮下方(readme/apps/ai_chat.md)。测试按钮与插件调用走同一条代码路径,所以它是最快的端到端验证手段。

出错的机制在文档中有明确说明(readme/dev/spec/ai_chat.md 的 "Failure cases worth knowing" 一节):

  • 大多数本地服务器(Ollama、LM Studio)在POST /chat/completions请求缺少/v1前缀时返回200且响应体为空,而不是返回 404;
  • Joplin 的 adapter 检测到"2xx 响应但没有choices数组"后,就抛出这条"No choices in response"类错误,提示你去修 URL。

对应源码逻辑见 OpenAiCompatible.ts:2xx 响应若choices不是数组,即判定 base URL 可能有误,并给出"OpenAI、Ollama、LM Studio 的 URL 必须以/v1结尾(got <你填的 URL>)"的提示。

修复:把 Base URL 改成带/v1的地址

  1. 打开 Joplin 桌面应用的配置界面:Windows / Linux 下点菜单Tools > Options(或按Ctrl+,),macOS 下点Joplin > Preferences(或按Cmd+,)(readme/apps/config_screen.md)。
  2. 进入AI分区,确认Enable AI features已勾选、Chat provider为OpenAI-compatible。
  3. 把 Base URL 从http://localhost:11434改为http://localhost:11434/v1(readme/apps/ai_chat.md 给出的 Ollama 示例值)。设置元数据也明确ai.chat.baseUrl的约束是 "Must include/v1suffix"(readme/dev/spec/ai_chat.md)。
  4. 确认Model一栏已填写你要使用的模型名(文档示例为gpt-4o-mini这类 model identifier;Ollama 场景填你本机部署的模型名)。API key 一栏按文档同样要填写;若留空,请求不会附带 Authorization 头(OpenAiCompatible.ts)。

验证:重新跑一次 Test AI configuration

改完 URL 后再点一次Test AI configuration。按文档描述,成功时按钮下方会直接显示模型对 "Reply with the single word OK." 的回复(readme/dev/spec/ai_chat.md 的 "Test button" 一节);失败则显示完整错误,完整错误同时会记录到 dev tools 控制台,可用于进一步调试。

如果错误信息变了,说明是另一个开关的问题

排查时要区分错误文案,Joplin 文档列出的每条错误对应不同的修复动作(readme/apps/ai_chat.md 的 "Testing your setup" 一节):

  • 仍然提示"No choices in response — check that the base URL includes /v1":Base URL 还是没带/v1,回到上一步逐项核对,包括多余的斜杠——源码里会对 URL 做 rtrimSlashes 处理,但请以文档给出的http://localhost:11434/v1形式为准。
  • 变成"Remote AI providers are not allowed":你的 Base URL 不是localhost/127.0.0.1。Ollama 直接跑在本机时不受Allow remote AI providers开关限制(默认关闭即可工作);但只要地址是局域网 IP 或远程服务,Joplin 一律按 remote 处理,需要打开Allow remote AI providers开关后重试。
  • 提示"Joplin Cloud AI requires Joplin Cloud sync":provider 被设成了 Joplin Cloud AI,与本场景无关,改回 OpenAI-compatible 即可。

相关限制

  • AI 功能只在桌面应用可用(readme/apps/ai_chat.md),移动端上不存在这组设置。
  • 较老版本的 Ollama 会在响应里省略usage字段;Joplin 的 adapter 会把缺失的 token 计数默认为 0,不会因此报错(readme/dev/spec/ai_chat.md)。所以看到 token 计数为 0 时不必怀疑修复是否生效,以测试按钮下方的模型回复为准。
  • 测试按钮验证的是"当前表单里刚填的值":点测试时,未保存的表单修改会先写入设置再发起测试(readme/dev/spec/ai_chat.md),所以可以先改 URL 直接点测试,不必先保存。

【免费下载链接】joplinJoplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.项目地址: https://gitcode.com/GitHub_Trending/jo/joplin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询