
Оглавление
Введение
Этот проект представляет собой Telegram-бота, который взаимодействует с AnythingLLM — инструментом для работы с языковыми моделями (LLM), в нашем случае используется как инструмент для загрузки документов и создания RAG архива. AnythingLLM имеет интеграцию и взаимодействует с LM Studio, инструментом для локальной загрузки файлов для обучения модели. В моем MVP бот предоставляет доступ к ИИ-модели только авторизованным пользователям, простая защита паролем, самое главное что все отрабатывается локально без передачи файлов сторонним сервисам, что делает его удобным решением для команд, которые хотят использовать ИИ в своих рабочих процессах.
Архитектура проекта
Проект состоит из следующих компонентов:
Telegram-бот: Обрабатывает команды и сообщения от пользователей.
AnythingLLM: Создание RAG архива, обработка запросов к языковой модели.
LM Studio: Backend для обработки запросов ИИ моделью.
Python-скрипт: Связывает Telegram-бота и AnythingLLM, обрабатывает авторизацию и запросы.
Схема взаимодействия
Пользователь --> Telegram-бот --> Python-скрипт --> AnythingLLM --> LM Studio --> Ответ --> Пользователь
Настройка окружения
1. Установка зависимостей
Убедитесь, что у вас установлен Python 3.8 или выше. Затем установите необходимые зависимости:
Copy
pip install python-telegram-bot requests
2. Настройка Telegram-бота
Откройте Telegram и найдите бота BotFather.
Создайте нового бота с помощью команды
/newbot
.Сохраните токен, который BotFather предоставит вам.
731334xxxx:AAFKLc947b-b26Qnkpiv5ysz-jxxxxx_X_X
3. Настройка AnythingLLM
Убедитесь, что AnythingLLM запущен и доступен по API. В нашем примере мы используем эндпоинт для доступа к чату:
http://localhost:3001/api/v1/workspace/mit_rag/chat
При создании workspace в AnythingLLM, использовали название MIT_RAG (для API используется нижний регистр: mit_rag)
Есть много примеров по настройке и связке LM Studio и AnythingLLM в Youtube. Подробно на этом останавливаться не буду.
Проверить доступность API AnythingLLM можно двумя способами, в первом через обычный браузер, смотрим доступность документации
http://localhost:3001/api/docs/
второй способ через терминал, стоит обратить внимание на тип авторизации Bearer, без его прямого указания API присылает ответы Not found, либо No valid api key found.
curl -H 'Authorization: Bearer 0T6J029-6EP49KR-N5E0PDJ-BC351R6' http://localhost:3001/api/v1/workspaces
4. Настройка переменных окружения
Создайте файл .env
и добавьте в него следующие переменные:
TELEGRAM_TOKEN=YOUR_TELEGRAM_BOT_TOKEN
ANYTHINGLLM_API_URL=http://localhost:3001/api/v1/workspace/mit_rag/chat
ANYTHINGLLM_API_TOKEN=YOUR_ANYTHINGLLM_API_TOKEN
AUTH_PASSWORD=7777
API
1. Telegram-бот
Команда
/start
: Запускает бота и запрашивает пароль для авторизации.Команда
/cancel
: Отменяет текущую сессию авторизации.Обработка текстовых сообщений: После авторизации пользователь может отправлять сообщения, которые будут обрабатываться AnythingLLM.
2. AnythingLLM
Эндпоинт
POST /api/v1/workspace/{slug}/chat
: Принимает JSON-запрос с полями:message
: Текст сообщения.mode
: Режим работы (query
илиchat
).sessionId
: Идентификатор сессии (опционально).attachments
: Вложения (опционально).
Примеры использования
1. Запуск бота
Запустите бота с помощью команды:
python mitbot_v1.py
2. Авторизация
Пользователь запускает бота командой
/start
.Бот попросит ввести пароль:
Привет! Я бот-помощник аналитической команды MIT. Чтобы получить доступ к общению со мной, введи пароль, который ты наверняка знаешь :)
Пользователь вводит пароль:
7777
Бот подтверждает авторизацию:
Авторизация успешна! Теперь ты можешь задавать вопросы.
3. Взаимодействие с ИИ
Пользователь задаёт вопрос:
Привет, как дела?
Бот отвечает:
Привет! У меня всё отлично, а у тебя?
Заключение
Документация демонстрирует, как создать Telegram-бота с интеграцией AnythingLLM+LM Studio. Такой бот может быть полезен для команд, которые хотят использовать ИИ в своих рабочих процессах, обеспечивая при этом безопасность и контроль доступа.
Проект на гите: https://github.com/KonstantinovK/telegrambot_rag.git
Ссылки
2025 Moscow. TG @clockber