Skip to content

Commit b9ab3f5

Browse files
whtiehackzavertiaev
andcommitted
providers/compatible: gate tool_stream on requires_tool_stream() in streaming paths
- stream_chat_with_tools 两个分支无条件发 tool_stream: Some(true),非 Z.AI provider 报 400 - 两处都改成 tool_stream_for_tools() 门控,与非流式路径一致 - 加 non_zai_provider_omits_tool_stream 回归测试 Ports upstream 1da35db (zeroclaw-labs#5806) to master_wecom's pre-workspace-split layout. Co-authored-by: Eugene Zavertiaev <152089142+zavertiaev@users.noreply.github.com>
1 parent a44274f commit b9ab3f5

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

src/providers/compatible.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2067,7 +2067,11 @@ impl Provider for OpenAiCompatibleProvider {
20672067
),
20682068
temperature,
20692069
reasoning_effort: self.reasoning_effort.clone(),
2070-
tool_stream: if options.enabled { Some(true) } else { None },
2070+
tool_stream: if options.enabled {
2071+
self.tool_stream_for_tools(true)
2072+
} else {
2073+
None
2074+
},
20712075
stream: Some(options.enabled),
20722076
tools: tools.clone(),
20732077
tool_choice: tools.as_ref().map(|_| "auto".to_string()),
@@ -2091,7 +2095,11 @@ impl Provider for OpenAiCompatibleProvider {
20912095
messages,
20922096
temperature,
20932097
reasoning_effort: self.reasoning_effort.clone(),
2094-
tool_stream: if options.enabled { Some(true) } else { None },
2098+
tool_stream: if options.enabled {
2099+
self.tool_stream_for_tools(false)
2100+
} else {
2101+
None
2102+
},
20952103
stream: Some(options.enabled),
20962104
tools: None,
20972105
tool_choice: None,

src/providers/compatible/tests.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,6 +1039,13 @@ fn z_ai_host_enables_tool_stream_for_custom_profiles() {
10391039
assert_eq!(provider.tool_stream_for_tools(true), Some(true));
10401040
}
10411041

1042+
#[test]
1043+
fn non_zai_provider_omits_tool_stream_regardless_of_streaming() {
1044+
let provider = make_provider("custom", "https://proxy.example.com/v1", None);
1045+
assert_eq!(provider.tool_stream_for_tools(true), None);
1046+
assert_eq!(provider.tool_stream_for_tools(false), None);
1047+
}
1048+
10421049
#[test]
10431050
fn response_with_tool_calls_deserializes() {
10441051
let json = r#"{

0 commit comments

Comments
 (0)