agentscope-ai / agentscope-ai/agentscope-java

[Feature]: DashScopeChatModel 在开启思考时强制 stream=true,与 Python SDK 行为不一致,建议解耦

Đang mở
#3,067 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
area/core/model enhancement
Ngôn ngữ chính
Java
Star
5.6k
Fork
1.3k
Merge trung bình
4 ngày 12 giờ
Pull request đã merge (30 ngày)
77

Mô tả

### 标题
`DashScopeChatModel` 在开启思考时强制 `stream=true`,与 Python SDK 行为不一致,建议解耦

---

**环境**
- agentscope-java: `2.0.3-SNAPSHOT` (commit `d20ebbe`)

**问题描述**
Java 版 `DashScopeChatModel` 构造时,只要 `enableThinking=true` 就无条件把 `stream` 改写为 `true`,用户显式设置的 `stream=false` 被忽略。而 Python SDK 中 `stream` 与 `thinking` 是完全独立的,两者行为不一致。

**证据**

1)Java 强制改写 `stream` —— `DashScopeChatModel.java` L154-161:
```java
// Thinking mode requires streaming; override stream setting if needed
if (enableThinking != null && enableThinking && !stream) {
log.info("...Forcing stream=true as thinking mode requires streaming.");
}
this.stream = enableThinking != null && enableThinking ? true : stream;
```

2)Python 版无此约束 —— Python 的 `DashScopeChatModel` 是 OpenAI 兼容实现(用 `openai` SDK 打 `compatible-mode/v1`),`stream` 忠实透传、`enable_thinking` 独立设置,二者解耦。

3)Java 自己的 `OpenAIChatModel` 也无此约束 —— 同仓库 `OpenAIChatModel.java` 完全没有 thinking→强制 stream 的逻辑,`stream` 由 `GenerateOptions.getStream()` 独立决定(默认 `false`)。可见强制流式是 `DashScopeChatModel` 独有的,并非框架统一约定。

**服务端真实约束(以阿里云百炼文档为例)**
"非流式 + 思考"的约束是**按模型区分**的:
- 商业版(`qwen-plus` / `qwen3-max` / `qwen-flash` / `qwen3.7-plus`):**支持**非流式 + 思考;
- 开源版思考模型(`qwen3-235b-a22b` / `qwen3-32b`):非流式 + 思考才报 `400 parameter.enable_thinking only support stream call`。

即使"thinking 必须 stream"只对部分模型成立,各家也有不同的报错兜底,不应无差别套用到所有模型。

**影响**
1. 需要"非流式 + 思考"的场景(流式返回不稳定)被无差别剥夺;
2. 与 Python SDK 行为不一致,跨语言用户困惑。

**建议方案(择一)**
- **方案 A(推荐,opt-out)**:`Builder.stream` 改用 `Boolean`,区分"用户显式设置"与"未设置"。仅当未显式设置时才默认强制 `true`;用户显式 `stream(false)` 则尊重。改动小、向后兼容。
- **方案 B(模型感知)**:仅对已知"非流式+思考会报错"的开源思考模型强制流式,商业版不强制。

**疑问**
Java 版是否有计划与 Python 版对齐,将 `stream` 与 `thinking` 解耦?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.