Spaces:
Configuration error
Configuration error
Merci pour l’intégration de l’interface Espace Codage. Tout fonctionne bien côté frontend, cependant l’IA Rosalinda retourne encore une erreur : "Désolé, une erreur s’est produite."
a0ae92e verified | require('dotenv').config(); | |
| const express = require('express'); | |
| const { OpenAI } = require('openai'); | |
| const multer = require('multer'); | |
| const path = require('path'); | |
| const fs = require('fs'); | |
| const app = express(); | |
| const port = process.env.PORT || 3000; | |
| // Configuration OpenAI | |
| const openai = new OpenAI({ | |
| apiKey: process.env.OPENAI_API_KEY | |
| }); | |
| // Middleware | |
| app.use(express.json()); | |
| app.use(express.static('public')); | |
| // Middleware CORS (pour développement) | |
| app.use((req, res, next) => { | |
| res.header('Access-Control-Allow-Origin', '*'); | |
| res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); | |
| next(); | |
| }); | |
| // Routes API | |
| app.post('/api/chat', async (req, res) => { | |
| try { | |
| const completion = await openai.chat.completions.create({ | |
| model: "gpt-4", | |
| messages: [ | |
| { | |
| role: "system", | |
| content: "Tu es Rosalinda, une assistante IA spécialisée en développement logiciel. Sois concise, technique et utile." | |
| }, | |
| { role: "user", content: req.body.message } | |
| ], | |
| temperature: 0.7 | |
| }); | |
| res.json({ reply: completion.choices[0].message.content }); | |
| } catch (error) { | |
| console.error('OpenAI Error:', error); | |
| res.status(500).json({ error: error.message }); | |
| } | |
| }); | |
| app.post('/api/image', async (req, res) => { | |
| try { | |
| const response = await openai.images.generate({ | |
| prompt: req.body.prompt, | |
| n: 1, | |
| size: "1024x1024" | |
| }); | |
| res.json({ imageUrl: response.data[0].url }); | |
| } catch (error) { | |
| console.error('DALL-E Error:', error); | |
| res.status(500).json({ error: error.message }); | |
| } | |
| }); | |
| // Configuration pour l'audio | |
| const upload = multer({ dest: 'uploads/' }); | |
| app.post('/api/whisper', upload.single('audio'), async (req, res) => { | |
| try { | |
| const transcription = await openai.audio.transcriptions.create({ | |
| file: fs.createReadStream(req.file.path), | |
| model: "whisper-1" | |
| }); | |
| fs.unlinkSync(req.file.path); // Nettoyage | |
| res.json({ text: transcription.text }); | |
| } catch (error) { | |
| console.error('Whisper Error:', error); | |
| res.status(500).json({ error: error.message }); | |
| } | |
| }); | |
| // Démarrer le serveur | |
| // Gestion des erreurs 404 | |
| app.use((req, res) => { | |
| res.status(404).json({ error: 'Endpoint non trouvé' }); | |
| }); | |
| // Gestion des erreurs globales | |
| app.use((err, req, res, next) => { | |
| console.error(err.stack); | |
| res.status(500).json({ error: 'Erreur interne du serveur' }); | |
| }); | |
| app.listen(port, () => { | |
| console.log(`Serveur backend démarré sur http://localhost:${port}`); | |
| console.log(`Endpoints disponibles:`); | |
| console.log(`- POST /api/chat`); | |
| console.log(`- POST /api/image`); | |
| console.log(`- POST /api/whisper`); | |
| }); | |