telegram-cli-bot/AI_AGENT_TOOLS.md

8.4 KiB
Raw Blame History

🤖 AI-Агент с Автономными Инструментами

Реализовано

Интеграция завершена успешно! Теперь твой бот умеет самостоятельно решать, когда использовать инструменты — без прямых команд!


📋 Что реализовано

1. Улучшенный AI-агент (bot/ai_agent.py)

Добавлено:

  • Расширенные триггеры для всех инструментов
  • Приоритет инструментов: SSH > Cron > Поиск > RSS
  • Контекстная чувствительность (оценка уверенности)
  • Логирование использования инструментов
  • Поддержка пользовательских предпочтений

2. SSH-инструмент (bot/tools/ssh_tool.py)

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

  • Подключение к серверам по SSH (asyncssh)
  • Выполнение команд с таймаутом
  • Красивое форматирование вывода
  • Конфигурация серверов (по умолчанию: 192.168.1.54)

Пример:

Ты: Проверь нагрузку на сервере
Бот: 🖥️ SSH: home
     Команда: uptime
     Вывод: 14:30:00 up 10 days, load average: 0.15
     ✅ Успешно

3. Cron-инструмент (bot/tools/cron_tool.py)

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

  • Создание задач по расписанию
  • Поддержка форматов: */5 * * * *, @hourly, @daily, @weekly
  • Просмотр, удаление, включение/выключение задач
  • Немедленный запуск задач

Пример:

Ты: Напомни каждый день делать бэкап
Бот: ⏰ Ваши задачи:
     ✅ Daily Backup
        Команда: /home/user/backup.sh
        Расписание: @daily
        Следующий запуск: 2024-03-11 00:00:00

4. Обновлённый format_tool_result в bot.py

Добавлено:

  • Форматирование для SSH-команд
  • Форматирование для Cron-задач
  • Обработка ошибок с красивым выводом

🎯 Как это работает

Автономное использование инструментов

Бот сам понимает, когда нужен инструмент:

Твоя фраза Бот использует Почему
"Найди информацию про Python" 🔍 DDGS Search Триггер "найди"
"Почитай новости IT" 📰 RSS Reader Триггер "новости"
"Проверь сервер" 🖥️ SSH Executor Триггер "проверь сервер"
"Напомни каждый день" Cron Manager Триггер "каждый день"

Приоритеты

Если сообщение подходит под несколько инструментов:

  1. SSH (системные задачи) — высший приоритет
  2. Cron (планирование)
  3. Поиск (информация)
  4. RSS (новости)

📦 Доступные инструменты

Инструмент Назначение Триггеры
ddgs_tool Поиск в интернете "найди", "поиск", "узнай", "как сделать"
rss_tool Чтение RSS лент "новости", "почитай", "лента", "IT новости"
ssh_tool SSH-команды "проверь сервер", "выполни команду", "uptime"
cron_tool Задачи по расписанию "напомни", "запланируй", "каждый день"

🔧 Настройка

Добавление сервера в SSH

Открой bot/tools/ssh_tool.py и добавь:

self.servers['myserver'] = ServerConfig(
    host='192.168.1.100',
    port=22,
    username='user',
    password='pass'  # или client_keys=['/path/to/key']
)

Добавление триггеров

Открой bot/ai_agent.py и добавь в соответствующий список:

SEARCH_TRIGGERS = [
    # ... существующие ...
    # ВАЖНО: только явные запросы поиска, избегай одиночных слов!
    ой_триггер'  # новый триггер
]

🧪 Тестирование

Проверка работы AI-агента:

cd ~/git/telegram-cli-bot
python3 -c "
import asyncio
from bot.ai_agent import ai_agent

async def test():
    tests = [
        'Найди информацию про Python',
        'Почитай новости',
        'Проверь нагрузку на сервере',
        'Напомни каждый день',
        'Привет!'
    ]
    
    for msg in tests:
        decision = await ai_agent.decide(msg)
        print(f'{msg}: {decision.tool_name or \"нет инструмента\"} (conf={decision.confidence})')

asyncio.run(test())
"

Ожидаемый результат:

Найди информацию про Python: ddgs_search (conf=0.9)
Почитай новости: rss_reader (conf=0.9)
Проверь нагрузку на сервере: ssh_executor (conf=0.9)
Напомни каждый день: cron_manager (conf=0.85)
Привет!: нет инструмента (conf=0.0)

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

🔍 Поиск в интернете

Ты: Найди руководство по async/await в Python
Бот: 🔍 Результаты поиска:
     1. **Python Async/Await Documentation**
        https://docs.python.org/3/library/asyncio.html
        asyncio is a library to write concurrent code ...

📰 Чтение новостей

Ты: Почитай новости Linux
Бот: 📰 Последние новости:
     1. Linux Kernel 6.8 Released
        📅 2024-03-10 14:30:00
        🔗 https://...

🖥️ SSH-команды

Ты: Сколько места на диске?
Бот: 🖥️ SSH: home
     Команда: df -h
     Вывод:
     Filesystem      Size  Used Avail
     /dev/sda1       100G   50G   50G
     ✅ Успешно

Cron-задачи

Ты: Запланируй бэкап каждый день в 3 ночи
Бот: ✅ Задача добавлена:
     • ID: 1
     • Название: Daily Backup
     • Расписание: 0 3 * * *
     • Следующий запуск: 2024-03-11 03:00:00

🚀 Запуск бота

cd ~/git/telegram-cli-bot
./run.sh

Или вручную:

python3 bot.py

📊 Статистика

Файлы изменены/созданы:

  • bot/ai_agent.py — улучшенный AI-агент
  • bot/tools/ssh_tool.py — SSH-инструмент (новый)
  • bot/tools/cron_tool.py — Cron-инструмент (новый)
  • bot/tools/__init__.py — реестр (обновлён)
  • bot.py — форматирование результатов (обновлён)
  • TOOLS.md — документация (обновлена)

Строк кода добавлено: ~600+

Инструментов доступно: 4


🎯 Следующие шаги

Можно добавить:

  1. Веб-скрапинг — парсинг конкретных сайтов
  2. Мониторинг — авто-проверка метрик сервера
  3. Уведомления — отправка уведомлений по расписанию
  4. Интеграции — GitHub API, Docker API, etc.

⚠️ Важно

  • Бот персональный — нет ролевой модели и ограничений
  • Инструменты доступны всегда в AI-режиме
  • Бот сам решает когда использовать инструмент
  • Логи пишутся в bot.log

Приятного использования! 🚀