Fix AI edit mode: strip code fences, stronger prompt
This commit is contained in:
+17
-4
@@ -157,10 +157,11 @@ func (s *Server) handleAIChat(w http.ResponseWriter, r *http.Request) {
|
||||
var userMsg string
|
||||
|
||||
if req.Mode == "edit" {
|
||||
systemPrompt = `You are a document editor. The user will give you a markdown document and an instruction.
|
||||
Apply the instruction to the document and return ONLY the complete updated document.
|
||||
Do not add explanations, comments, or markdown code fences around the output.
|
||||
Preserve the document's existing style and formatting.`
|
||||
systemPrompt = "You are a document editor. The user will give you a markdown document and an instruction. " +
|
||||
"Apply the instruction to the document and return ONLY the complete updated document. " +
|
||||
"Do not add explanations, comments, or wrap the output in code fences. " +
|
||||
"Do not prefix with any markers. Preserve the document's existing style and formatting. " +
|
||||
"Return the raw markdown content only."
|
||||
userMsg = "Document:\n\n" + req.Content + "\n\nInstruction: " + req.Message
|
||||
} else {
|
||||
systemPrompt = `You are a helpful writing assistant. The user has a markdown document open and is asking a question about it.
|
||||
@@ -175,6 +176,18 @@ Answer concisely in markdown. Reference the document content when relevant.`
|
||||
}
|
||||
|
||||
if req.Mode == "edit" {
|
||||
// Strip markdown code fences if AI wrapped the output
|
||||
response = strings.TrimSpace(response)
|
||||
if strings.HasPrefix(response, "```") {
|
||||
lines := strings.Split(response, "\n")
|
||||
if len(lines) > 2 {
|
||||
lines = lines[1:] // remove opening fence
|
||||
if strings.TrimSpace(lines[len(lines)-1]) == "```" {
|
||||
lines = lines[:len(lines)-1] // remove closing fence
|
||||
}
|
||||
response = strings.Join(lines, "\n")
|
||||
}
|
||||
}
|
||||
writeJSON(w, 200, map[string]string{"content": response})
|
||||
} else {
|
||||
writeJSON(w, 200, map[string]string{"result": response})
|
||||
|
||||
Reference in New Issue
Block a user