ваше сообщение коммита

This commit is contained in:
2025-03-28 22:54:46 +03:00
parent 37e32de390
commit cbb20878a6
2 changed files with 5 additions and 66 deletions

View File

@@ -7,65 +7,6 @@ const logger = require('../utils/logger');
const crypto = require('crypto'); const crypto = require('crypto');
const { saveGuestMessageToDatabase } = require('../db'); 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) { async function processGuestMessages(userId, guestId) {
try { try {
@@ -279,12 +220,11 @@ router.post('/message', requireAuth, async (req, res) => {
// Добавьте этот маршрут для проверки доступных моделей // Добавьте этот маршрут для проверки доступных моделей
router.get('/models', async (req, res) => { router.get('/models', async (req, res) => {
try { try {
const ollama = new Ollama(); const models = await aiAssistant.getAvailableModels();
const models = await ollama.list();
res.json({ res.json({
success: true, success: true,
models: models.models.map((model) => model.name), models: models,
}); });
} catch (error) { } catch (error) {
console.error('Ошибка при получении списка моделей:', error); console.error('Ошибка при получении списка моделей:', error);

View File

@@ -8,7 +8,6 @@ const {
similaritySearch, similaritySearch,
addDocument, addDocument,
} = require('./vectorStore'); } = require('./vectorStore');
const { processMessage, getUserInfo, getConversationHistory } = require('./ai-assistant');
// ... другие импорты // ... другие импорты
module.exports = { module.exports = {
@@ -27,9 +26,9 @@ module.exports = {
addDocument, addDocument,
// AI Assistant // AI Assistant
processMessage, processMessage: aiAssistant.processMessage,
getUserInfo, getUserInfo: aiAssistant.getUserInfo,
getConversationHistory, getConversationHistory: aiAssistant.getConversationHistory,
telegramBot, telegramBot,
aiAssistant aiAssistant