Skip to content

ad/llm-docs-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM Docs Bot

Telegram-бот для работы с документами с использованием локальных языковых моделей. Бот позволяет загружать текстовые документы (.txt, .docx) и задавать вопросы по их содержимому.

🚀 Возможности

  • Поддержка форматов: .txt и .docx файлы
  • Локальная LLM: Использует Ollama для обработки запросов
  • Безопасность: Проверка на prompt injection атаки
  • Многопользовательский режим: Каждый пользователь работает с собственными документами
  • Простой интерфейс: Интуитивно понятные команды и кнопки

📋 Требования

  • Go 1.21+
  • Ollama с установленной моделью gemma3:1b
  • Telegram Bot Token

🛠 Установка

1. Установка Ollama

# macOS/Linux
curl -fsSL https://ollama.ai/install.sh | sh

# Или скачайте с официального сайта: https://ollama.ai

2. Установка модели

ollama pull gemma3:1b

3. Клонирование репозитория

git clone https://github.com/ad/llm-docs-bot.git
cd llm-docs-bot

4. Установка зависимостей

go mod tidy

5. Настройка переменных окружения

Создайте файл .env в корне проекта:

TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here

Для получения токена бота:

  1. Напишите @BotFather в Telegram
  2. Создайте нового бота командой /newbot
  3. Следуйте инструкциям и получите токен

🚀 Запуск

go run .

Или соберите и запустите:

go build -o llm-docs-bot
./llm-docs-bot

📖 Использование

Базовые команды

  • /start - Начать работу с ботом
  • Загрузка документа - Отправьте .txt или .docx файл
  • Задать вопрос - Напишите любой вопрос после загрузки документа

Пример использования

  1. Запустите бота: Отправьте /start
  2. Загрузите документ: Прикрепите .txt или .docx файл
  3. Задайте вопросы: Напишите вопросы по содержимому документа
  4. Удалите документ: Нажмите кнопку "🗑 Удалить" когда закончите

Поддерживаемые форматы

  • 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"

Документы с подобными фразами отклоняются.

🔧 Настройка

Изменение модели LLM

В файле main.go измените модель:

llm, err = ollama.New(
    ollama.WithModel("your-model-name"),
)

Добавление новых форматов файлов

  1. Добавьте функцию извлечения текста в telegramfile.go
  2. Обновите проверку расширений в handleDocument

📝 Логирование

Бот ведет подробные логи:

  • [INFO] - Информационные сообщения
  • [ERROR] - Ошибки
  • [WARN] - Предупреждения
  • [Q] - Вопросы пользователей
  • [A] - Ответы бота

🤝 Участие в разработке

  1. Сделайте форк репозитория
  2. Создайте ветку для новой функции: git checkout -b feature/amazing-feature
  3. Зафиксируйте изменения: git commit -m 'Add amazing feature'
  4. Отправьте в ветку: git push origin feature/amazing-feature
  5. Откройте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.

🐛 Известные проблемы

  • Большие документы (>1MB) могут обрабатываться медленно
  • Сложное форматирование в DOCX может быть потеряно при извлечении текста

💡 Планы развития

  • Поддержка PDF файлов
  • Сохранение истории вопросов-ответов
  • Поддержка нескольких документов одновременно
  • Веб-интерфейс
  • Индексирование документов для быстрого поиска

📞 Поддержка

При возникновении проблем создайте Issue в репозитории.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages