This commit is contained in:
Carlos
2025-04-10 01:26:05 -04:00
parent 7547a69969
commit f55c365e39

View File

@ -35,9 +35,9 @@ const validateApiKey = (req, res, next) => {
// Forward request to localhost:11434 (ollama)
app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => {
app.post("/api/chat", validateApiKey, async (req, res) => {
try {
const { model, messages } = req.body;
const { model, messages, system } = req.body;
const prompt = messages
.map(
@ -46,7 +46,7 @@ app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => {
)
.join("\n");
console.log("Generated prompt for Ollama:\n", prompt);
console.log("🧠 Prompt for Ollama:\n", prompt);
const response = await axios.post(
"http://localhost:11434/api/generate",
@ -58,7 +58,9 @@ app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => {
{ responseType: "stream" },
);
let finalAnswer = "";
res.setHeader("Content-Type", "application/json");
res.setHeader("Transfer-Encoding", "chunked");
let insideThink = false;
response.data.on("data", (chunk) => {
@ -80,7 +82,14 @@ app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => {
}
if (!insideThink && text) {
finalAnswer += text;
const responseLine = JSON.stringify({
message: {
role: "assistant",
content: text,
},
done: false,
});
res.write(responseLine + "\n");
}
} catch (err) {
console.warn("Chunk parse failed:", err);
@ -89,20 +98,20 @@ app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => {
});
response.data.on("end", () => {
const cleaned = finalAnswer.trim();
console.log("🎯 Final (excluding think block):\n", cleaned);
res.json({ response: cleaned });
res.write(JSON.stringify({ done: true }) + "\n");
res.end();
});
response.data.on("error", (err) => {
console.error("Ollama stream error:", err);
res
.status(500)
.json({ error: "Ollama stream error", message: err.message });
res.write(
JSON.stringify({ error: "Stream error", message: err.message }) + "\n",
);
res.end();
});
} catch (error) {
console.error(
"Error communicating with Ollama:",
"Error communicating with Ollama:",
error.response?.data || error.message,
);
res
@ -110,7 +119,6 @@ app.post("/api/generate/chat/completions", validateApiKey, async (req, res) => {
.json({ error: "Internal Server Error", message: error.message });
}
});
// Forward request to localhost:11434 (ollama)
app.post("/api/generate", validateApiKey, async (req, res) => {
try {