diff --git a/llm/llama.go b/llm/llama.go index 0b460e9a..ab491291 100644 --- a/llm/llama.go +++ b/llm/llama.go @@ -544,11 +544,18 @@ func (llm *llama) Predict(ctx context.Context, prevContext []int, prompt string, Stop: llm.Stop, } - data, err := json.Marshal(predReq) - if err != nil { - return fmt.Errorf("error marshaling data: %v", err) + // Handling JSON marshaling with special characters unescaped. + buf := &bytes.Buffer{} + enc := json.NewEncoder(buf) + enc.SetEscapeHTML(false) + + if err := enc.Encode(predReq); err != nil { + return fmt.Errorf("failed to marshal data: %v", err) } + // Remove trailing newline added by Encode. + data := buf.Bytes()[:buf.Len()-1] + req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, bytes.NewBuffer(data)) if err != nil { return fmt.Errorf("error creating POST request: %v", err)