From cbb20878a63be4981e1ca159dc77e966d794fbc3 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 28 Mar 2025 22:54:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=B0=D1=88=D0=B5=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/routes/chat.js | 64 ++------------------------------------- backend/services/index.js | 7 ++--- 2 files changed, 5 insertions(+), 66 deletions(-) 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