evo-foundation-models-outline-chat-bot-lab
Описание
Демонстрационный интеллектуальный корпоративный wiki-ассистент, который сочетает поиск документов Outline с возможностями AI для ответов на вопросы. Система предоставляет как REST API сервер, так и интерфейс Telegram-бота для доступа к корпоративным базам знаний через естественный язык. Основной ассистент • Умный поиск документов:
Языки
- Python71,6%
- Shell28,4%
evo-foundation-models-outline-chat-bot-lab
Демонстрационный интеллектуальный корпоративный wiki-ассистент, который сочетает поиск документов Outline с возможностями AI для ответов на вопросы. Система предоставляет как REST API сервер, так и интерфейс Telegram-бота для доступа к корпоративным базам знаний через естественный язык.
🚀 Возможности
Основной ассистент
- Умный поиск документов: Использует извлечение ключевых слов и семантический поиск для нахождения релевантных документов
- Ответы на базе ИИ: Использует Cloud.ru Foundation Models для интеллектуальных ответов
- Многоязычная поддержка: Отвечает на вопросы на том же языке, что и запрос
- Управление токенами: Автоматическое обновление токена для Cloud.ru Foundation Models
- Контекстуальность: Сохраняет историю чата и предоставляет контекстные ответы
- Безопасность: Проверяет токены API Outline и корректно обрабатывает ошибки аутентификации
Интерфейс Telegram-бота
- Индивидуальная аутентификация: Каждый пользователь предоставляет свой собственный токен API Outline
- Общение на естественном языке: Задавайте вопросы простым языком
- Мобильная оптимизация: Оптимизирован для мобильного приложения Telegram
- Управление сессиями: Сохраняет сессии пользователей и историю чата
- Безопасность: Токены хранятся только в памяти во время сессии
A2A Сервер
- REST API: Предоставляет функционал ассистента через протокол A2A
- Готов к интеграции: Легко интегрируется с другими приложениями
- Масштабируемость: Поддерживает несколько одновременных пользователей
🏗️ Архитектура
Проект организован в два основных пакета:
Пакет ассистента (assistant/)
— основной класс ассистента с поиском документов и AI-обработкойoutline_assistant.py— шаблоны Langchain для извлечения ключевых слов и Q&Aprompts.py— улучшенный поиск документов с предобработкой ключевых словretrievers.py— сервер A2A, предоставляющий ассистента через REST APIserver.py
Пакет бота (bot/)
— реализация Telegram-бота с аутентификацией пользователейtelegram_bot.py— подробная документация по Telegram-ботуREADME_telegram.md
📋 Необходимые компоненты
- Python 3.8+
- Экземпляр Outline с доступом к API
- Аккаунт Cloud.ru Foundation Models
- Токен Telegram-бота (для интерфейса бота)
🛠️ Установка
1. Создание виртуального окружения
3. Установка зависимостей
4. Конфигурация окружения
Создайте файл в корне проекта:
🚀 Использование
Режим разработки
Запуск сервера ассистента
Запустите сервер A2A для предоставления ассистента через REST API:
Сервер запустится на порту 8000 (можно изменить через ).
Запуск Telegram-бота
Запустите Telegram-бота для чата:
Тестирование установки
Запустите отладочный скрипт для проверки ассистента:
Режим продакшн
Для продакшн-развертывания используйте предоставленные скрипты:
Быстрое развертывание
🔧 Детали конфигурации
Настройка Outline
- Перейдите в ваш Outline → Settings → API Tokens
- Создайте новый API токен с нужными правами
- Установите
на URL вашего экземпляра OutlineOUTLINE_BASE_URL
Настройка Cloud.ru Foundation Models
- Зарегистрируйтесь на Cloud.ru
- Сгенерируйте API-ключи (Key ID и Secret)
- Укажите свой Project ID и имя модели
- Установите базовый URL для Foundation Models API
Настройка Telegram-бота
- Напишите @BotFather в Telegram
- Отправьте команду
и следуйте инструкциям/newbot - Сохраните токен бота и укажите TELEGRAM_BOT_TOKEN
📖 Использование API
Эндпоинты A2A сервера
Ассистент доступен через протокол A2A. Отправляйте POST-запросы на с JSON:
Прямое использование в Python
🔍 Как это работает
Процесс поиска документов
- Извлечение ключевых слов: Вопрос пользователя обрабатывается цепочкой извлечения ключевых слов
- Семантический поиск: Извлечённые ключевые слова используются для поиска документов Outline
- Подготовка контекста: Релевантные документы форматируются с контекстом
- AI-обработка: Cloud.ru Foundation Models генерируют ответы на основе контекста
- Формирование ответа: Ответ возвращается на языке пользователя
Безопасность
- Проверка токенов: Все токены API Outline проверяются перед использованием
- Изоляция сессий: Каждая пользовательская сессия изолирована
- Обработка ошибок: Корректная обработка ошибок аутентификации и сетевых ошибок
- Без постоянного хранения: Токены пользователей не сохраняются на диск
🐛 Решение проблем
Частые проблемы
-
"Invalid Outline API token"
- Проверьте правильность и актуальность токена Outline
- Убедитесь, что у токена есть необходимые права
- Проверьте доступность OUTLINE_BASE_URL
-
"Failed to refresh LLM token"
- Проверьте правильность учётных данных Cloud.ru
- Убедитесь, что задан FM_MODEL_NAME
- Проверьте правильность
для Foundation ModelsFM_BASE_URL
-
Telegram-бот не отвечает
- Проверьте правильность TELEGRAM_BOT_TOKEN
- Убедитесь, что бот запущен
- Проверьте логи на наличие ошибок
- Проверьте правильность
Режим отладки
Включите подробное логирование, установив в :
📚 Зависимости
— основной фреймворк Langchainlangchain>=0.3.26— интеграция с OpenAIlangchain-openai>=0.3.28— интеграции сообществаlangchain-community==0.3.27— фреймворк Telegram-ботаpython-telegram-bot==22.2— реализация протокола A2Apython-a2a==0.5.9— валидация данныхpydantic==2.11.7— управление переменными окруженияpython-dotenv>=1.0.0
📄 Лицензия
Проект распространяется под лицензией MIT — см. файл LICENSE для подробностей.
🆘 Поддержка
По вопросам и проблемам:
- Проверьте раздел решения проблем
- Изучите логи на наличие ошибок
- Проверьте вашу конфигурацию