{"record":{"id":"475f6dda747ed7e9","repo":"zed-industries/zed","slug":"languagemodelcompletionerror-from-provider-respon","errorCode":null,"errorMessage":"LanguageModelCompletionError::from_provider_response(provider_name, None, error.code.or(error.error_type), error.message, None, category)","messagePattern":"LanguageModelCompletionError::from_provider_response\\(provider_name, None, error\\.code\\.or\\(error\\.error_type\\), error\\.message, None, category\\)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/open_ai/src/open_ai.rs","lineNumber":1117,"sourceCode":"    Ok(events\n        .filter_map(move |event| {\n            let provider_name = provider_name.clone();\n            async move {\n                let value = match event {\n                    Ok(ChatCompletionStreamEvent::Data(value)) => value,\n                    Ok(ChatCompletionStreamEvent::Done) => return None,\n                    Err(error) => return Some(Err(anyhow!(error))),\n                };\n                match serde_json::from_str::<ResponseStreamResult>(value.get()) {\n                    Ok(ResponseStreamResult::Ok(response)) => Some(Ok(response)),\n                    Ok(ResponseStreamResult::Err { error }) => {\n                        let category = completion::response_error_category(\n                            error.code.as_deref(),\n                            error.error_type.as_deref(),\n                            None,\n                            &error.message,\n                        );\n                        Some(Err(anyhow!(\n                            language_model_core::LanguageModelCompletionError::from_provider_response(\n                                provider_name,\n                                None,\n                                error.code.or(error.error_type),\n                                error.message,\n                                None,\n                                category,\n                            )\n                        )))\n                    }\n                    Err(error) => {\n                        log::error!(\n                            \"Failed to parse OpenAI response into ResponseStreamResult: `{}`\\n\\\n                            Response: `{}`\",\n                            error,\n                            value,\n                        );\n                        Some(Err(anyhow!(error)))","sourceCodeStart":1099,"sourceCodeEnd":1135,"githubUrl":"https://github.com/zed-industries/zed/blob/5a9b9558db01a6b906cec2fb70a797affdc58cdd/crates/open_ai/src/open_ai.rs#L1099-L1135","documentation":"Error-path mapping inside the OpenAI streaming response handler: the SSE stream produced an error payload (or error frame), and the code converts it into LanguageModelCompletionError::from_provider_response with the provider name, error code/type, message, and a category. This is a translation of a provider-reported stream error into Zed's unified language-model completion error, not a local failure; provider_name and possibly the rate-limit category are attached so callers can display or retry appropriately.","triggerScenarios":"Thrown at crates/open_ai/src/open_ai.rs:1117 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the embedded provider message and error code to determine the cause (auth failure, quota exhaustion, overloaded provider, malformed request)","Map the category: for rate-limit or overloaded categories, retry the request with backoff or offer model fallback","Verify the API key and that the request payload (model name, parameters) is accepted by the OpenAI-compatible endpoint"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5a9b9558db01a6b906cec2fb70a797affdc58cdd","analyzedAt":"2026-09-05T10:33:00.413Z","contentChangedAt":"2026-09-05T10:33:00.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}