Replies: 2 comments 1 reply
|
We verified and published a standalone fix for this error classification issue: Implementation
(Cross-reference: also addresses related reports in #3158 and #3407). |
|
Complementary gap for the same When an openai-completions stream is truncated mid-SSE-frame, the OpenAI SDK can throw:
That still maps to Proposed patch (PRs disabled here — compare link): master...AnhLead:fix/pi-ai-truncated-json-transport
Happy to rebase onto |
Uh oh!
There was an error while loading. Please reload this page.
OpenAI 兼容网关中途断流时,
finish_reason: network_error被误判为PI_AI_ERROR,默认重试策略不重试。复现、预期与验收
复现步骤:
@deepseek-ai/dsh-llm-pi-ai对接 OpenAI 兼容网关(如 OpenCode Go 的ox-alpha-free免费路由);finish_reason: "network_error";本轮运行失败 Provider finish_reason: network_error/PI_AI_ERROR。实际结果:
packages/llm/llm-pi-ai/src/stream.ts::classifyPiAiError的正则/\b(?:network|connection|socket|fetch)\b/匹配不到network_error(_是单词字符,k与_之间无词边界),落到stream.ts:64返回PI_AI_ERROR;而默认重试码packages/llm/llm/src/retry-policy.ts:18-24(EMPTY_RESPONSE/RATE_LIMIT/SERVER/TIMEOUT/TRANSPORT)不含PI_AI_ERROR,故不会自动重试。已实测classifyPiAiError('Provider finish_reason: network_error')返回PI_AI_ERROR。预期结果:
将非标准的 provider
finish_reason: network_* / connection_* / socket_*归类为TRANSPORT,使其进入默认重试策略自动重试。环境:
packages/llm/llm-pi-ai,@earendil-works/pi-ai@^0.82.1opencode-go-free(OpenCode Go),模型ox-alpha-free,https://opencode.ai/zen/go/v1/chat/completions验收条件:
classifyPiAiError('Provider finish_reason: network_error') === 'TRANSPORT'(含connection_error/socket_error);content_filter仍为PI_AI_ERROR(不发生误伤);packages/llm/llm-pi-ai/tests/convert.spec.ts的 transportit.each(约 827 行)增补对应用例;All reactions