Update server.js
Browse files
server.js
CHANGED
|
@@ -1,11 +1,40 @@
|
|
| 1 |
-
const express = require('express');
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
-
const app = express();
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
-
function getSessionFile(sessionId) {
|
|
|
|
|
|
|
| 6 |
|
| 7 |
-
async function gemini(sessionId, prompt) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
-
app.get('/gemini', async (req, res) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
app.listen(7860);
|
|
|
|
| 1 |
+
const express = require('express');
|
| 2 |
+
const { GoogleGenerativeAI } = require('@google/generative-ai');
|
| 3 |
+
const fs = require('fs');
|
| 4 |
+
const path = require('path');
|
| 5 |
|
| 6 |
+
const app = express();
|
| 7 |
+
const apiKey = 'AIzaSyCRpX4SnNQl__BNLcVWqgzKdbIlt06vod0';
|
| 8 |
+
const genAI = new GoogleGenerativeAI(apiKey);
|
| 9 |
+
const tmpDir = path.join(require('os').tmpdir(), 'gemini_sessions');
|
| 10 |
+
if (!fs.existsSync(tmpDir)) fs.mkdirSync(tmpDir);
|
| 11 |
|
| 12 |
+
function getSessionFile(sessionId) {
|
| 13 |
+
return path.join(tmpDir, `${sessionId}.json`);
|
| 14 |
+
}
|
| 15 |
|
| 16 |
+
async function gemini(sessionId, prompt) {
|
| 17 |
+
const sessionFile = getSessionFile(sessionId);
|
| 18 |
+
let session;
|
| 19 |
+
if (fs.existsSync(sessionFile)) {
|
| 20 |
+
session = JSON.parse(fs.readFileSync(sessionFile, 'utf8'));
|
| 21 |
+
} else {
|
| 22 |
+
session = await genAI.getGenerativeModel({ model: 'gemini-2.0-flash' }).startChat();
|
| 23 |
+
}
|
| 24 |
+
const result = await session.sendMessage(prompt);
|
| 25 |
+
fs.writeFileSync(sessionFile, JSON.stringify(session));
|
| 26 |
+
return result.response.text();
|
| 27 |
+
}
|
| 28 |
|
| 29 |
+
app.get('/gemini', async (req, res) => {
|
| 30 |
+
try {
|
| 31 |
+
const { question, sessionId } = req.query;
|
| 32 |
+
if (!question || !sessionId) return res.status(400).json({ error: 'Missing parameters' });
|
| 33 |
+
const reply = await gemini(sessionId, question);
|
| 34 |
+
res.json({ reply });
|
| 35 |
+
} catch (error) {
|
| 36 |
+
res.status(500).json({ error: error.message });
|
| 37 |
+
}
|
| 38 |
+
});
|
| 39 |
|
| 40 |
+
app.listen(7860);
|