Telegram-бот для работы с документами с использованием локальных языковых моделей. Бот позволяет загружать текстовые документы (.txt, .docx) и задавать вопросы по их содержимому.
- Поддержка форматов: .txt и .docx файлы
- Локальная LLM: Использует Ollama для обработки запросов
- Безопасность: Проверка на prompt injection атаки
- Многопользовательский режим: Каждый пользователь работает с собственными документами
- Простой интерфейс: Интуитивно понятные команды и кнопки
- Go 1.21+
- Ollama с установленной моделью
gemma3:1b - Telegram Bot Token
# macOS/Linux
curl -fsSL https://ollama.ai/install.sh | sh
# Или скачайте с официального сайта: https://ollama.aiollama pull gemma3:1bgit clone https://github.com/ad/llm-docs-bot.git
cd llm-docs-botgo mod tidyСоздайте файл .env в корне проекта:
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_hereДля получения токена бота:
- Напишите @BotFather в Telegram
- Создайте нового бота командой
/newbot - Следуйте инструкциям и получите токен
go run .Или соберите и запустите:
go build -o llm-docs-bot
./llm-docs-bot/start- Начать работу с ботом- Загрузка документа - Отправьте .txt или .docx файл
- Задать вопрос - Напишите любой вопрос после загрузки документа
- Запустите бота: Отправьте
/start - Загрузите документ: Прикрепите .txt или .docx файл
- Задайте вопросы: Напишите вопросы по содержимому документа
- Удалите документ: Нажмите кнопку "🗑 Удалить" когда закончите
- TXT: Обычные текстовые файлы в любой кодировке
- DOCX: Microsoft Word документы (извлекается только текст)
├── main.go # Основная логика бота и обработчики
├── telegramfile.go # Функции работы с файлами
├── .env # Переменные окружения
├── go.mod # Зависимости Go
└── README.md # Документация
- Session Management: Каждый пользователь имеет свою сессию с загруженным документом
- File Processing: Скачивание и извлечение текста из документов
- LLM Integration: Интеграция с Ollama для генерации ответов
- Security: Защита от prompt injection атак
Бот включает проверку на потенциально опасные фразы в документах:
- "забудь все инструкции"
- "ты больше не ассистент"
- "отныне ты"
- "ignore previous"
- "disregard previous"
Документы с подобными фразами отклоняются.
В файле main.go измените модель:
llm, err = ollama.New(
ollama.WithModel("your-model-name"),
)- Добавьте функцию извлечения текста в
telegramfile.go - Обновите проверку расширений в
handleDocument
Бот ведет подробные логи:
[INFO]- Информационные сообщения[ERROR]- Ошибки[WARN]- Предупреждения[Q]- Вопросы пользователей[A]- Ответы бота
- Сделайте форк репозитория
- Создайте ветку для новой функции:
git checkout -b feature/amazing-feature - Зафиксируйте изменения:
git commit -m 'Add amazing feature' - Отправьте в ветку:
git push origin feature/amazing-feature - Откройте Pull Request
Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.
- Большие документы (>1MB) могут обрабатываться медленно
- Сложное форматирование в DOCX может быть потеряно при извлечении текста
- Поддержка PDF файлов
- Сохранение истории вопросов-ответов
- Поддержка нескольких документов одновременно
- Веб-интерфейс
- Индексирование документов для быстрого поиска
При возникновении проблем создайте Issue в репозитории.