From 8316571efe25fcbb3796d9db7fca3f673fe3379d Mon Sep 17 00:00:00 2001 From: Shuai-DaiDai <134567396+Shuai-DaiDai@users.noreply.github.com> Date: Sat, 14 Feb 2026 09:23:35 +0800 Subject: [PATCH] fix(venice): disable streaming to prevent SDK crash (#15878) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(venice): disable streaming to prevent SDK crash with usage-only chunks (#15819) Venice.ai API returns SSE chunks containing only usage metadata without a choices array. The SDK crashes trying to access choices[0] on these chunks with: Cannot read properties of undefined (reading '0') Changes: - Disable streaming by default for all Venice models - Apply to both static catalog and dynamically discovered models - Users can explicitly enable streaming in config if needed This is a workaround until the SDK handles Venice's streaming format. Fixes #15819 * fix(venice): avoid usage streaming chunks for Venice models (openclaw#15878) thanks @Shuai-DaiDai --------- Co-authored-by: 帅小呆1号 Co-authored-by: Peter Steinberger --- src/agents/venice-models.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/agents/venice-models.ts b/src/agents/venice-models.ts index 32bd2f93b9..cff2e9d51c 100644 --- a/src/agents/venice-models.ts +++ b/src/agents/venice-models.ts @@ -300,6 +300,11 @@ export function buildVeniceModelDefinition(entry: VeniceCatalogEntry): ModelDefi cost: VENICE_DEFAULT_COST, contextWindow: entry.contextWindow, maxTokens: entry.maxTokens, + // Avoid usage-only streaming chunks that can break OpenAI-compatible parsers. + // See: https://github.com/openclaw/openclaw/issues/15819 + compat: { + supportsUsageInStreaming: false, + }, }; } @@ -381,6 +386,10 @@ export async function discoverVeniceModels(): Promise { cost: VENICE_DEFAULT_COST, contextWindow: apiModel.model_spec.availableContextTokens || 128000, maxTokens: 8192, + // Avoid usage-only streaming chunks that can break OpenAI-compatible parsers. + compat: { + supportsUsageInStreaming: false, + }, }); } }