DBA_agent
🐘 DBA — агент
Интеллектуальный агент на базе LangGraph, предназначенный для автоматизации задач DBA. Разработан командой R4C.Support.Всадники апокалипсиса.
Возможности
- Оценка фрагментации таблиц (
) — показывает таблицы с мёртвыми строками и даёт рекомендации по VACUUM.get_table_bloat - Размеры баз данных (
) — выводит размер всех БД на хосте.get_db_sizes - Текущее время (
) — быстрое получение времени.get_current_time - Калькулятор (
) — безопасные арифметические вычисления.calculate - Поиск в таблице решений (
) — пример работы с пользовательской таблицей.get_solution_db - Список инструментов (
) — показывает все доступные возможности агента.list_available_tools
Агент построен на LangGraph с использованием LLM (GigaChat через OpenAI‑совместимый API) и умеет самостоятельно выбирать, какой инструмент вызвать.
Добавление нового инструмента (общий подход)
Все инструменты находятся в папке и автоматически регистрируются в агенте. Чтобы добавить новый инструмент, выполните три шага:
1. Создайте новый файл в tools/ (например, my_tool.py)
2. Добавьте импорт в tools/init.py
3. Обновите системное сообщение в dba_agent.py
В узле llm_node добавьте строчку в описание инструментов:
Принципы разработки инструментов
- Документация — docstring обязательно, LLM будет его читать для выбора инструмента.
- Типизация — используйте аннотации типов (str, int, bool и т.д.) для ясности.
- Логирование — вызывайте logger.info при вызове инструмента для отладки.*
- Обработка ошибок — перехватывайте исключения и возвращайте понятный текст ошибки.
- Безопасность — избегайте прямого выполнения пользовательского кода без валидации; для SQL используйте параметризованные запросы.
- После добавления инструмента он автоматически станет доступен для вызова LLM. Агент сам решит, когда его использовать, на основе описания.
Установка и настройка
1. Клонируйте репозиторий
2. Создайте виртуальное окружение и установите зависимости
Файл requirements.txt должен содержать:
3. Настройте подключение к базе данных и LLM
Создайте файл .env (скопируйте .env.example) и укажите:
- Запустите LangGraph‑сервер
Сервер будет доступен по адресу http://127.0.0.1:2024.
Структура проекта
Использование
Запуск веб‑интерфейса (Streamlit)
В отдельном терминале:
Откройте http://localhost:8501 и общайтесь с агентом. Примеры запросов:
-
"Покажи фрагментацию таблиц на хосте vm-"
-
"Размеры баз данных на хосте vm-"
-
"Сколько времени?"
-
"Что ты умеешь?"
Запуск Gradio (альтернатива)
Интерфейс появится по адресу http://127.0.0.1:7860.
Тестирование через curl
Инструменты (Tools)
- Инструмент Описание
- get_current_time() Возвращает текущее время.
- calculate(expression) Выполняет арифметические выражения.
- get_solution_db(query) Ищет данные в таблице django.listdb_solution.
- get_table_bloat(host, databases) Анализирует фрагментацию таблиц на указанном хосте.
- get_db_sizes(host) Показывает размеры всех баз данных.
- list_available_tools() Выводит список всех доступных инструментов.
Требования
Python 3.13+
Возможные проблемы
- Ошибка подключения к БД: убедитесь, что хост, порт и учётные данные верны.
- LLM не отвечает: проверьте токен и интернет‑соединение.
- WebUI не показывает ответ: убедитесь, что LangGraph‑сервер запущен и эндпоинт /runs/stream доступен.