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