diff --git a/backend/routes/chat.js b/backend/routes/chat.js index d6badf4..aa35ef1 100644 --- a/backend/routes/chat.js +++ b/backend/routes/chat.js @@ -7,65 +7,6 @@ const logger = require('../utils/logger'); const crypto = require('crypto'); const { saveGuestMessageToDatabase } = require('../db'); -// Добавьте эту функцию в начало файла chat.js -async function getAIResponse(message, language = 'ru') { - // Определяем язык сообщения, если не указан явно - let detectedLanguage = language; - if (!language || language === 'auto') { - // Простая эвристика для определения языка - const cyrillicPattern = /[а-яА-ЯёЁ]/; - detectedLanguage = cyrillicPattern.test(message) ? 'ru' : 'en'; - } - - // Формируем системный промпт в зависимости от языка - let systemPrompt = ''; - if (detectedLanguage === 'ru') { - systemPrompt = 'Вы - полезный ассистент. Отвечайте на русском языке.'; - } else { - systemPrompt = 'You are a helpful assistant. Respond in English.'; - } - - // Создаем экземпляр ChatOllama - const chat = new ChatOllama({ - baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434', - model: process.env.OLLAMA_MODEL || 'mistral', - system: systemPrompt - }); - - console.log('Отправка запроса к Ollama...'); - - // Получаем ответ от модели - try { - const response = await chat.invoke(message); - return response.content; - } catch (error) { - console.error('Ошибка при вызове ChatOllama:', error); - - // Альтернативный метод запроса через прямой API - try { - console.log('Пробуем альтернативный метод запроса...'); - const response = await fetch(`${process.env.OLLAMA_BASE_URL || 'http://localhost:11434'}/api/generate`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - model: process.env.OLLAMA_MODEL || 'mistral', - prompt: message, - system: systemPrompt, - stream: false - }), - }); - - const data = await response.json(); - return data.response; - } catch (fallbackError) { - console.error('Ошибка при использовании альтернативного метода:', fallbackError); - return "Извините, я не смог обработать ваш запрос. Пожалуйста, попробуйте позже."; - } - } -} - // Функция для обработки гостевых сообщений после аутентификации async function processGuestMessages(userId, guestId) { try { @@ -279,12 +220,11 @@ router.post('/message', requireAuth, async (req, res) => { // Добавьте этот маршрут для проверки доступных моделей router.get('/models', async (req, res) => { try { - const ollama = new Ollama(); - const models = await ollama.list(); + const models = await aiAssistant.getAvailableModels(); res.json({ success: true, - models: models.models.map((model) => model.name), + models: models, }); } catch (error) { console.error('Ошибка при получении списка моделей:', error); diff --git a/backend/services/index.js b/backend/services/index.js index 985a9b9..75e865b 100644 --- a/backend/services/index.js +++ b/backend/services/index.js @@ -8,7 +8,6 @@ const { similaritySearch, addDocument, } = require('./vectorStore'); -const { processMessage, getUserInfo, getConversationHistory } = require('./ai-assistant'); // ... другие импорты module.exports = { @@ -27,9 +26,9 @@ module.exports = { addDocument, // AI Assistant - processMessage, - getUserInfo, - getConversationHistory, + processMessage: aiAssistant.processMessage, + getUserInfo: aiAssistant.getUserInfo, + getConversationHistory: aiAssistant.getConversationHistory, telegramBot, aiAssistant