weaviate/weaviate · error

failed to parse summarization response (status %d): %w

Error message

failed to parse summarization response (status %d): %w

What it means

Returned by the sum-transformers client when the JSON body from the summarization inference container cannot be unmarshaled into the expected sumResponse shape. Like the transformers reranker, parsing occurs before the status check, so non-JSON error bodies (HTML pages, crash tracebacks, empty bodies) at any status produce this message with the status embedded.

Source

Thrown at modules/sum-transformers/client/client.go:85

		bytes.NewReader(body))
	if err != nil {
		return nil, errors.Wrap(err, "create POST request")
	}

	res, err := c.httpClient.Do(req)
	if err != nil {
		return nil, errors.Wrap(err, "send POST request")
	}
	defer res.Body.Close()

	bodyBytes, err := io.ReadAll(res.Body)
	if err != nil {
		return nil, errors.Wrap(err, "read response body")
	}

	var resBody sumResponse
	if err := json.Unmarshal(bodyBytes, &resBody); err != nil {
		return nil, fmt.Errorf("failed to parse summarization response (status %d): %w", res.StatusCode, err)
	}

	if res.StatusCode > 399 {
		return nil, errors.Errorf("fail with status %d: %s", res.StatusCode, resBody.Error)
	}

	out := make([]ent.SummaryResult, len(resBody.Summary))

	for i, elem := range resBody.Summary {
		out[i].Result = elem.Result
		out[i].Property = property
	}

	// format resBody to nerResult
	return out, nil
}

func (c *client) url(path string) string {

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Check the summarization inference container logs for tracebacks or crash messages
  2. Curl the container's summarization endpoint directly to inspect the raw response body
  3. Verify SUM_INFERENCE_API points to the correct host/port and the container is healthy
  4. Upgrade the inference container image to a version compatible with your Weaviate release
Defensive patterns

Strategy: try-catch

Validate before calling

// verify the summarization container is reachable before querying
resp, err := http.Get(sumInferrerURL + "/meta")
if err != nil || resp.StatusCode >= 400 {
	return fmt.Errorf("sum-transformers inference container not ready: %v", err)
}

Type guard

func isSummaryParseFailure(err error) bool {
	return err != nil && strings.Contains(err.Error(), "failed to parse summarization response")
}

Try / catch

out, err := summarizer.GetSummary(ctx, text)
if err != nil {
	if strings.Contains(err.Error(), "failed to parse summarization response") {
		// inspect container logs / raw body, don't hot-retry a schema mismatch
	}
	return fmt.Errorf("summarization failed: %w", err)
}

Prevention

When it happens

Trigger: The summarization inference container returns a body that isn't valid sumResponse JSON — e.g. a gateway HTML error page, an empty body from a crashed worker, a traceback from a Python error, or a schema mismatch in the summary response.

Common situations: The summarization inference container is overloaded, OOM-killed, or not fully started; wrong image version incompatible with Weaviate; a proxy returning HTML 502/504 pages; misconfigured SUM_INFERENCE_API pointing at a wrong service.

Understand the failure class

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/496ac478c84d06b1. Report an issue: GitHub.