const express = require('express'); const axios = require('axios'); const cors = require('cors'); const path = require('path'); require('dotenv').config(); const app = express(); const PORT = process.env.PORT || 3000; const OLLAMA_API = process.env.OLLAMA_API || 'http://localhost:11434'; app.use(cors()); app.use(express.json()); app.use(express.static(path.join(__dirname, 'public'))); app.post('/api/generate', async (req, res) => { try { const { prompt, systemPrompt, temperature = 0.7, maxTokens = 2048 } = req.body; if (!prompt) { return res.status(400).json({ error: 'Prompt is required' }); } const response = await axios.post(`${OLLAMA_API}/api/generate`, { model: 'deepseek-coder:instruct', prompt: systemPrompt ? `${systemPrompt}\n\n${prompt}` : prompt, options: { temperature, num_predict: maxTokens, }, stream: false, }); res.json({ response: response.data.response, model: 'deepseek-coder:instruct', done: response.data.done, }); } catch (error) { console.error('Error generating response:', error.message); res.status(500).json({ error: 'Failed to generate response', details: error.response?.data || error.message }); } }); app.get('/api/status', async (req, res) => { try { const response = await axios.get(`${OLLAMA_API}/api/tags`); const models = response.data.models; const deepseekCoder = models.find(m => m.name.includes('deepseek-coder')); res.json({ status: deepseekCoder ? 'available' : 'unavailable', models: models.map(m => m.name), deepseekCoderAvailable: !!deepseekCoder, }); } catch (error) { res.status(500).json({ status: 'error', error: 'Could not connect to Ollama server', details: error.message }); } }); app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'public', 'index.html')); }); app.listen(PORT, () => { console.log(`🚀 DeepSeek CodeCraft server running on http://localhost:${PORT}`); console.log(`📡 Connecting to Ollama at: ${OLLAMA_API}`); });