fix(dashscope): avoid 400 for non-streaming qwen3.5 multimodal requests#1003
fix(dashscope): avoid 400 for non-streaming qwen3.5 multimodal requests#1003rrrjqy66 wants to merge 2 commits intoagentscope-ai:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Fixes DashScope HTTP 400 errors for non-streaming qwen3.5-* requests by explicitly disabling the model’s default “thinking mode” when streaming is off, and adds regression tests to ensure the correct endpoint and request parameters are used.
Changes:
- In
DashScopeChatModel, auto-disableenable_thinkingfor non-streaming requests when usingqwen3.5-*models (unless explicitly configured). - Add unit/integration-style tests to verify thinking is opted out and the multimodal endpoint is selected for
qwen3.5-plusnon-streaming calls.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| agentscope-core/src/main/java/io/agentscope/core/model/DashScopeChatModel.java | Adds model-name detection and forces enableThinking=false for non-streaming qwen3.5-* defaults. |
| agentscope-core/src/test/java/io/agentscope/core/model/DashScopeChatModelTest.java | Adds regression tests covering non-stream qwen3.5 thinking opt-out and multimodal endpoint selection. |
| private boolean isThinkingEnabledByDefaultModel(String modelName) { | ||
| if (modelName == null) { | ||
| return false; | ||
| } | ||
| return modelName.toLowerCase(Locale.ROOT).startsWith("qwen3.5"); | ||
| } |
There was a problem hiding this comment.
isThinkingEnabledByDefaultModel duplicates the same model-name pattern check (startsWith("qwen3.5")) that already exists in DashScopeHttpClient.isMultimodalModel(...). To reduce drift when DashScope adds/renames models, consider centralizing the “qwen3.5*” detection in a shared utility (or reusing an existing helper) so endpoint selection and default-thinking behavior stay consistent.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Fixes #984
AgentScope-Java Version
1.0.11
Description
Background
When
DashScopeChatModelis used withqwen3.5-plusin non-streaming mode, DashScope may return HTTP 400.At first glance this can look like an endpoint routing issue, but the multimodal endpoint is actually correct here. According to DashScope's Qwen 3.5 model behavior,
qwen3.5-plusshould still be treated as a multimodal model. The real problem is that Qwen 3.5 enables thinking by default, while thinking mode requires streaming. In the previous implementation, whenstream=falseandenableThinkingwas not explicitly set, the request did not explicitly disable thinking, which could cause DashScope to reject the request.Checklist
Please check the following items before code is ready to be reviewed.
mvn spotless:applymvn test)