DBA_agent

0

Описание

Языки

  • Python99,8%
  • Shell0,2%
README.md

🐘 DBA — агент

LangGraph Streamlit Pangolin_DB

Интеллектуальный агент на базе LangGraph, предназначенный для автоматизации задач DBA. Разработан командой R4C.Support.Всадники апокалипсиса.

Возможности

  • Оценка фрагментации таблиц (
    get_table_bloat
    ) — показывает таблицы с мёртвыми строками и даёт рекомендации по VACUUM.
  • Размеры баз данных (
    get_db_sizes
    ) — выводит размер всех БД на хосте.
  • Текущее время (
    get_current_time
    ) — быстрое получение времени.
  • Калькулятор (
    calculate
    ) — безопасные арифметические вычисления.
  • Поиск в таблице решений (
    get_solution_db
    ) — пример работы с пользовательской таблицей.
  • Список инструментов (
    list_available_tools
    ) — показывает все доступные возможности агента.

Агент построен на LangGraph с использованием LLM (GigaChat через OpenAI‑совместимый API) и умеет самостоятельно выбирать, какой инструмент вызвать.

Добавление нового инструмента (общий подход)

Все инструменты находятся в папке

tools/
и автоматически регистрируются в агенте. Чтобы добавить новый инструмент, выполните три шага:

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) и укажите:

  1. Запустите 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 доступен.

Лицензия