adding
This commit is contained in:
39
server.js
39
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)
|
||||
|
Reference in New Issue
Block a user