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
- Inspect the wrapped error if it ever fires
- 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.