Inconsistent AI behavior: local model test passes but chat returns 400 (v3.7.16)

Operating system

Windows

Joplin version

3.7.16

Desktop version info

Joplin 3.7.16 (prod, win32)

Device: win32, Intel(R) Core(TM) Ultra 9 285H
Client ID: f16e86dec56e4fecb8ff99b77a612246
Sync Version: 3
Profile Version: 53
Keychain Supported: Yes
Alternative instance ID: -
Sync target: Joplin Server
Editor: Markdown

Revision: e3f38c6

Backup: 1.5.1
Freehand Drawing: 4.3.0
Inline TODO: 2.1.1
joplin-excalidraw-v2: 2.0.0

Sync target

Joplin Server

Editor

Markdown Editor

What issue do you have?

What issue do you have?
Inconsistent AI behavior: cloud model test fails but chat works; local model test passes but chat returns 400

After upgrading to v3.7.16 with the new AI feature, I found inconsistent results between the "Test AI configuration" button and the actual AI chat function, for both cloud and local OpenAI-compatible providers:

  1. Cloud provider: Kimi (Moonshot AI, OpenAI-compatible API)
  • When clicking Test AI configuration, it returns this error:

    Error. The AI provider test failed: The provider returned an empty response. Check that the base URL ends with /v1 and that a model is loaded.

  • However, the AI chat window works perfectly — all chat functions work normally with no error.
  • I have confirmed that the base URL correctly ends with /v1 and the model name is properly filled in.
  1. Local provider: LM Studio (local OpenAI-compatible endpoint)
  • When clicking Test AI configuration, it succeeds with:

    Success! The AI provider responded: OK

  • But when sending messages in the AI chat dialog, it returns:

    AI provider returned 400

It seems the test function and the actual chat function use different request logic, leading to opposite results for both provider types.

Screenshots

(Following.)
I have a similar issue. I added log output and screenshot to the issue.