diff --git a/server.js b/server.js index e00e9cd..7297dd3 100644 --- a/server.js +++ b/server.js @@ -34,17 +34,17 @@ const validateApiKey = (req, res, next) => { }; // Forward request to localhost:11434 (ollama) + app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => { try { const { model, messages } = req.body; - const prompt = - messages - .map((msg) => { - if (msg.role === "system") return `${msg.content}\n`; - return `${msg.role === "user" ? "User" : "Assistant"}: ${msg.content}`; - }) - .join("\n") + "\nAssistant:"; + const prompt = messages + .map( + (msg) => + `${msg.role === "system" ? "" : msg.role + ": "}${msg.content}`, + ) + .join("\n"); console.log("Generated prompt for Ollama:\n", prompt); @@ -58,37 +58,40 @@ app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => { { responseType: "stream" }, ); - // 🔥 Manual stream reading for logging - let fullResponse = ""; + let finalAnswer = ""; + let lastChunk = ""; response.data.on("data", (chunk) => { - const lines = chunk.toString("utf8").split("\n").filter(Boolean); // Remove empty lines + const lines = chunk.toString("utf8").split("\n").filter(Boolean); for (const line of lines) { try { const json = JSON.parse(line); - fullResponse += json.response || ""; + lastChunk = json.response || lastChunk; + if (json.done) { + finalAnswer = lastChunk; + } } catch (err) { - console.warn("Error parsing chunk:", err); + console.warn("Chunk parsing failed:", err); } } }); response.data.on("end", () => { - console.log("\n✅ Full Response:\n", fullResponse); - res.json({ response: fullResponse }); + console.log("\n🎯 Final Answer Only:\n", finalAnswer); + res.json({ response: finalAnswer.trim() }); }); response.data.on("error", (err) => { - console.error("Stream error from Ollama:", err); + console.error("Ollama stream error:", err); res .status(500) - .json({ error: "Stream error from Ollama", message: err.message }); + .json({ error: "Ollama stream error", message: err.message }); }); } catch (error) { console.error( - "Error forwarding request to Ollama:", - error.response ? error.response.data : error.message, + "Error communicating with Ollama:", + error.response?.data || error.message, ); res .status(500)