Tencent/WeKnora · error

failed to marshal request body: %w

Error message

failed to marshal request body: %w

What it means

Returned by buildRequest when json.Marshal of the baiduSearchRequest body fails. The struct holds only strings, ints, and slices, so this is effectively unreachable unless the struct gains unmarshalable fields; it guards the request-construction path.

Source

Thrown at internal/infrastructure/web_search/baidu.go:107

	}
	logger.Infof(ctx, "[WebSearch][Baidu] returned %d results", len(results))
	return results, nil
}

func (p *BaiduProvider) buildRequest(ctx context.Context, query string, maxResults int) (*http.Request, error) {
	requestBody := baiduSearchRequest{
		Messages: []baiduMessage{
			{Role: "user", Content: query},
		},
		SearchSource: "baidu_search_v2",
		ResourceTypeFilter: []baiduResourceTypeFilter{
			{Type: "web", TopK: maxResults},
		},
	}

	bodyBytes, err := json.Marshal(requestBody)
	if err != nil {
		return nil, fmt.Errorf("failed to marshal request body: %w", err)
	}

	req, err := http.NewRequestWithContext(ctx, "POST", p.baseURL, bytes.NewReader(bodyBytes))
	if err != nil {
		return nil, fmt.Errorf("failed to create request: %w", err)
	}

	req.Header.Set("Authorization", "Bearer "+p.apiKey)
	req.Header.Set("Content-Type", "application/json")

	return req, nil
}

func (p *BaiduProvider) doSearch(ctx context.Context, req *http.Request, includeDate bool) ([]*types.WebSearchResult, error) {
	resp, err := p.client.Do(req)
	if err != nil {
		return nil, err
	}

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Inspect the wrapped error if it ever fires
  2. Review recent changes to baiduSearchRequest for unmarshalable fields (channels, funcs, invalid UTF-8 in content)
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at internal/infrastructure/web_search/baidu.go:107 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/bb40b0266bcc81b5. Report an issue: GitHub.