ваше сообщение коммита
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user