Skip to content

VitalikDen0/AI-Orchestrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

188 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python License Platform Status FastAPI PyTorch ChromaDB

🇷🇺 Русский | 🇬🇧 English

AI Orchestrator

Интеллектуальный мультимодальный AI-помощник с системной интеграцией

Комплексное решение для автоматизации задач, объединяющее возможности больших языковых моделей, computer vision, распознавание речи, генерацию изображений и системное управление через единый интерфейс.

✅ Реализованные функции

Мультимодальный ИИ

Текстовая модель-мозг через LM Studio API

📂 Файл: llm_services.py

  • Автоматическая загрузка моделей с передачей пути к .gguf файлам
  • Идентификация через короткий ID модели (опрос /v1/models)
  • Динамический контекст-менеджмент: отслеживание реального размера контекста через usage.total_tokens, три уровня обрезки истории (агрессивная при переполнении, средняя при 100% safe-зоны, мягкая при 80%), адаптивная пересборка сообщений
  • Альтернативный запуск через llama-cpp-python с поддержкой KV-cache Q8 квантизации
  • Конфигурация параметров генерации (температура, max_tokens, system prompt)

Computer Vision

📂 Файл: media_processing.py (обработка изображений), orchestrator_core.py (интеграция)

  • Анализ изображений через moondream2-llamafile
  • Передача изображений в формате base64
  • Детальное описание сцен с извлечением всех видимых элементов
  • Интеграция с системными скриншотами для анализа экрана

Распознавание речи

📂 Файл: media_processing.py (утилиты), orchestrator_core.py (логика)

  • Транскрипция через Whisper CLI (whisper.cpp) с поддержкой Q8 квантизации
  • Опциональное выделение вокала через Demucs (audio-separator) перед распознаванием
  • Автоконвертация входных форматов в WAV (16 кГц, моно, PCM s16le) через ffmpeg
  • Определение языка транскрипции (ru/en) с fallback-логикой
  • Безопасное логирование с фильтрацией чувствительной информации

Генерация изображений

📂 Файл: image_generation.py

  • Stable Diffusion через diffusers (загрузка из .safetensors через from_single_file)
  • Поддержка SD 1.5 и SDXL архитектур с автоопределением типа checkpoint
  • DPMSolverMultistepScheduler для оптимизации скорости
  • Автовыбор устройства (CUDA/CPU) и управление VRAM
  • Конфигурируемые параметры: seed, steps, размер (width/height), CFG scale
  • Система LoRA: автосканирование папок sd/sdxl, анализ метаданных из safetensors, JSON-конфигурация с triggers/strength/базовая модель
  • Автогенерация промптов: вспомогательный запрос к "мозгу" для англоязычного промпта, валидация языка, дефолтные негативные промпты
  • Сохранение результатов в PNG с возвратом base64, опциональный автопоказ

Генерация видео (бета)

📂 Файл: image_generation.py

  • Ключевые кадры с разными seed (keyframes параметр)
  • Линейная интерполяция между кадрами через numpy
  • Сборка MP4 через imageio.mimsave
  • Настройка количества кадров, FPS, шага интерполяции
  • Сохранение промежуточных PNG и финального видео

Системная интеграция

Выполнение PowerShell команд

📂 Файл: automation.py

  • Автокоррекция синтаксиса: замена "&&" на совместимый PowerShell синтаксис (; или -and)
  • Тайм-аут выполнения (60 секунд по умолчанию)
  • CP1251-декодирование вывода для корректной работы с кириллицей
  • Подробный лог с stdout/stderr/код возврата
  • Санитизация команд для безопасности

Управление мышью и клавиатурой

📂 Файл: automation.py

  • Перемещение курсора по координатам (pyautogui)
  • Клики ЛКМ/ПКМ с опциональными координатами
  • Прокрутка (scroll up/down) с настраиваемым пикселем
  • Drag & drop операции (mouse down → move → mouse up)
  • Ввод текста с поддержкой Unicode

Скриншоты и анализ экрана

📂 Файл: automation.py (захват), media_processing.py (обработка)

  • Захват через mss с даунскейлом до 1280×720 (оптимизация размера)
  • Возврат в формате PNG base64
  • Fallback на pyautogui при недоступности mss
  • Интеграция с vision-моделью для описания содержимого экрана

UI Автоматизация

📂 Файл: ui_automation_utils.py, orchestrator_core.py

  • Инспекция иерархии UI элементов Windows приложений (дерево элементов)
  • Поиск окон по заголовку, классу или ID процесса
  • Получение свойств элементов: имя, тип, значение, координаты
  • Возможность "видеть" интерфейс приложений для принятия решений
  • Интеграция с uiautomation библиотекой

Проверки окружения

📂 Файл: resource_manager.py, orchestrator_core.py

  • Детектирование ffmpeg в системе
  • Автозапуск модели в LM Studio с передачей пути к .gguf
  • Проверка наличия whisper-cli.exe и моделей
  • Автоскачивание whisper-модели с Hugging Face (fallback)

Интернет и коммуникации

Google Search API

📂 Файл: orchestrator_core.py

  • Программируемый поиск через Custom Search Engine
  • Сбор сниппетов и извлечение контента страниц (до ~2000 символов)
  • Парсинг HTML с удалением скриптов/стилей
  • Агрегация результатов в единый текстовый контекст

YouTube интеграция

📂 Файл: media_processing.py

  • Проверка VPN-статуса через ifconfig.me перед загрузкой
  • Валидация cookies для обхода ограничений
  • Каскады параметров yt-dlp: force-ipv4, user-agent подмена, player_client=android, geo-bypass
  • Скачивание видео (best quality) и аудио (WAV для Whisper)
  • Извлечение метаданных: заголовок, описание, длительность
  • Покадровый анализ видео: экстракция кадров через ffmpeg (настраиваемый FPS), описание каждого кадра vision-моделью, группировка в диапазоны "[start-end]" или списки "[t1, t2, ...]"
  • Синхронизация аудио/видео: объединение транскрипции и покадрового описания в общий "brain_input"

Telegram-бот

📂 Файл: communications.py

  • Обработка текстовых сообщений, фото, аудио, видео, документов
  • Автотранскрипция голосовых сообщений и аудиофайлов
  • Описание присланных изображений через vision-модель
  • Возврат сгенерированных изображений в чат
  • Фильтрация по allowed_user_id для безопасности
  • Асимметричное логирование: минимум в консоль, детализация в файл при --web

Работа с почтой

📂 Файл: communications.py

  • IMAP: получение писем по папкам, поиск по query, извлечение вложений, парсинг тела (text/plain и multipart)
  • SMTP: отправка с вложениями, HTML-форматирование, reply-to цепочки
  • Поддержка Gmail, Yandex, Mail.ru, Outlook
  • Конфигурация через .env (SMTP/IMAP credentials)

Веб-интерфейс

📂 Файл: web_server_launcher.py, webui/server.py

  • FastAPI-сервер (uvicorn) через флаг --web
  • Маршруты: статичная раздача (HTML/CSS/JS), API-эндпоинты для чата
  • Отключение локального показа изображений в режиме --web
  • Базовый UI (HTML с inline стилями, websocket для real-time)

Управление ресурсами

Smart Resource Management

📂 Файл: resource_manager.py, orchestrator_core.py

  • Автовключение инструментов по требованию (vision/audio/image generation)
  • Автовыключение через 5 минут простоя для каждого инструмента (раздельные таймеры)
  • Флаги состояния: useVision, useAudio, useImageGeneration, useOCR

Динамический контекст-менеджмент

📂 Файл: llm_services.py, orchestrator_core.py

  • Отслеживание usage.total_tokens из ответа LM Studio
  • Три уровня обрезки истории:
  • Агрессивная: обрезка до последних 2 сообщений при превышении max_context
  • Средняя: обрезка до последних 5 при достижении safe_context
  • Мягкая: обрезка до последних 10 при 80% от safe_context
  • Оценка safe_context (80% от max_context) и адаптивная пересборка
  • Логирование состояния контекста на каждом шаге

Нормальная выгрузка моделей

📂 Файл: resource_manager.py, llm_services.py

  • Команда unload для очистки VRAM/RAM
  • Перевод pipeline и моделей на CPU перед удалением
  • Удаление атрибутов vision/audio/TTS моделей
  • torch.cuda.empty_cache() и gc.collect() для полной очистки
  • Сброс флагов использования инструментов

Продвинутые возможности

Умный JSON-парсер

📂 Файл: orchestrator_core.py

  • Извлечение JSON из свободного текста и think-блоков
  • Коррекция: отсутствующие скобки, незакрытые кавычки, лишние запятые
  • Очистка неASCII управляющих символов
  • Итеративные цепочки попыток парсинга (без рекурсии)
  • Fallback на пустой объект при критической ошибке

Автоустановка зависимостей

📂 Файл: resource_manager.py

  • On-demand установка diffusers, transformers, torch, accelerate, safetensors
  • Проверка доступности библиотек через try/import перед использованием
  • Флаги готовности: DIFFUSERS_AVAILABLE, TORCH_AVAILABLE, DOCX_AVAILABLE, etc.
  • subprocess.run для pip install с capture_output

Фоновая инициализация

📂 Файл: resource_manager.py

  • BackgroundInitializer с ThreadPoolExecutor (4 потока)
  • Асинхронная загрузка ChromaDB, EasyOCR, PyTorch
  • Таймауты на получение компонентов (30 секунд default)
  • Fallback на синхронную загрузку при неудаче фона

Система мониторинга и логирования

Подробное логирование

📂 Файл: logging_setup.py

  • Двухуровневое: файл (aiorchestrator.log) и консоль
  • Фильтр телеметрии ChromaDB для консоли (файл сохраняет всё)
  • UTF-8 encoding для корректной работы с кириллицей
  • Уровни: DEBUG для файла, INFO/WARNING для консоли (конфигурируемо)
  • Раздельное логирование для телеграм-бота (подавление шума в консоли)

Метрики производительности

📂 Файл: orchestrator_core.py

  • Словарь performanceMetrics: action → [время выполнения]
  • Вычисление средних, последних операций
  • Метод addPerformanceMetric(action, time)
  • Экспорт статистики в JSON по команде "export"

Экспорт состояния

📂 Файл: orchestrator_core.py

  • Команда "export": полная статистика в JSON-файл
  • Включает: метрики производительности, состояние контекста, использование инструментов
  • Сохранение в output/export_{timestamp}.json

AI-генерация контента

Автогенерация промптов для SD

📂 Файл: image_generation.py

  • Вспомогательный запрос к "мозгу" с system-инструкцией
  • Требование англоязычного JSON: {"prompt": "...", "negativeprompt": "..."}
  • Валидация языка промпта (проверка английских букв)
  • Дефолтные негативные промпты при пустом ответе: "worst quality, low quality, normal quality, deformed, distorted, disfigured, poorly drawn, bad anatomy, text, watermark"

Параметризация генерации

📂 Файл: image_generation.py

  • SD: seed, steps, width, height, CFG scale, LoRA strength
  • Video: numframes, fps, keyframes, interpolation step
  • Валидация границ (steps: 1-100, size: 64-2048, etc.)
  • Fallback на дефолтные значения при невалидных параметрах

Голос ИИ (бета)

📂 Файл: media_processing.py (TTS)

  • Text-to-Speech через gTTS (Google TTS)
  • Автовоспроизведение через pygame.mixer
  • Fallback на системный медиаплеер (os.startfile)
  • Действие "speak" с правилом "озвучивать только самое важное"
  • Сохранение в Audio/ai_speech_{timestamp}.mp3

Документы и RAG

Чтение документов

📂 Файл: orchestrator_core.py

  • DOCX: извлечение параграфов через python-docx
  • Excel: чтение всех листов через pandas/openpyxl, конвертация в markdown-таблицы
  • PDF: текст через PyPDF2 с посторонней обработкой ошибок
  • CSV: парсинг через pandas с автоопределением разделителя

RAG для больших файлов

📂 Файл: orchestrator_core.py

  • Разбиение по предложениям с сохранением контекста
  • Возврат первых N фрагментов с указанием общего числа частей
  • Флаг fullOutput для полного вывода без ограничений
  • Оценка размера фрагментов для укладки в контекст

Генерация файлов

📂 Файл: orchestrator_core.py

  • DOCX: создание через python-docx, параграфы с разметкой
  • Excel: запись через pandas в .xlsx
  • Markdown: прямая генерация .md файлов
  • PDF: через reportlab (SimpleDocTemplate, Paragraph, Spacer)
  • Единый интерфейс generateFile(content, outputPath, fileType)
  • Сохранение в output/ с возвратом пути

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

Векторная память (ChromaDB)

📂 Файл: chromadb_manager.py

  • Добавление диалогов и предпочтений через addConversationMemory и addUserPreference
  • Эмбеддинги через SentenceTransformer (all-MiniLM-L6-v2, 384-мерные векторы)
  • Поиск похожих диалогов с адаптивным порогом сходства (default: 0.7)
  • Извлечение релевантного контекста для текущего запроса (до 2000 символов)
  • Метаданные: timestamp, тип записи (conversation/preference), категория
  • Для очистки памяти вызывайте команду cleanup или метод cleanup_old_memory(days) (по умолчанию 30 дней, настраивается через CHROMADB_CLEANUP_DEFAULT_DAYS в config.py).
  • Если не нужно запоминать диалоги совсем, отключите флаг CHROMADB_ENABLE_MEMORY в config.py и инструмент больше не будет сохранять контекст.

Работа с предпочтениями

📂 Файл: chromadb_manager.py

  • Автоматическое извлечение из сообщений пользователя и ответов ИИ (regex-паттерны)
  • Подтверждения из ответов ИИ: "Да, я ...", "Конечно, я ..."
  • Краткое резюме предпочтений через getUserPreferencesSummary
  • Очистка старых записей (30 дней default) через cleanupOldMemory
  • Статистика базы: getDatabaseStats (total records, conversations, preferences)

Экспорт и управление памятью

📂 Файл: chromadb_manager.py

  • Команда "search": поиск по диалогам с выводом топ-3 результатов
  • Команда "preferences": вывод всех предпочтений пользователя
  • Команда "cleanup": удаление записей старше N дней
  • GPU info для ChromaDB: определение доступности CUDA, имя GPU, объем VRAM

📋 Требования

Аппаратные требования

  • Минимум: 16GB RAM для комфортной работы со всеми инструментами, дискретная видеокарта с 8GB VRAM если не требуется запускать несколько инструментов
  • Рекомендуется: 32GB RAM, RTX 4070/4080 или аналогичная с 12-16GB VRAM

Программное обеспечение

  • Python 3.10+ (Использовалась 3.10.11)
  • LM Studio 0.3.23+ (с моделями) (указана последняя версия LM Studio, скорее всего не обязательно последняя)
  • ffmpeg (для работы с аудио/видео)
  • yt-dlp (для YouTube)
  • PowerShell (Windows)

Библиотеки Python

# Создание виртуальной среды
python -m venv venv

# Активация (Windows)
venv\Scripts\activate

# Установка зависимостей
pip install -r requirements.txt

🚀 Установка и настройка

1. Установка моделей

Основная модель (мозг)

  • huihui-qwen3-4b-thinking-2507-abliterated (использовалась Q4_K_S)

  • Скачайте через LM Studio или на Hugging Face

  • Требования: ~4GB VRAM p.s. abliterated по причине того, что она будет меньше отказывать в действиях

  • Так же мною в тестирование взята случайно найденная новинка ввиде Orchestrator-8B от Nvidia, должна быть гораздо лучше обычной модели.

  • Orchestrator-8B

  • GGUF версию найдете на: тык (Использовал Q4_K_M)

  • Требования: ~6GB VRAM

Audio модель

Vision модель

  • moondream2-050824
  • Требования: ~2GB VRAM
  • Так же для любителей NSFW изображений или просто более четкого определения изображений, рекомендую к использованию:
  • llama-joycaption-beta-one-hf-llava-mmproj
  • Требования: При Q8 - ~10GB VRAM, при Q4_K - ~6GB VRAM

Stable Diffusion модель (аниме модели)

  • novaAnime_v20: CivitAI (~4GB VRAM) (проблема с пальцами, SD 1.5)
  • Альтернативная улучшенная: CivitAI (~8GB VRAM) (мой личный фаворит, очень нравится, IL модель)
  • LoRA для улучшения: Hands XL + SD 1.5 + FLUX.1-dev + Pony + Illustrious (настройки: strength=1)

Это примеры генерации novaAnime_v20 без явного указания деталей (нейросеть сама поставит нужное)

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

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

# Google Search API
GOOGLE_API_KEY=your_google_api_key_here
GOOGLE_CSE_ID=your_custom_search_engine_id_here

# Telegram Bot (опционально)
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
TELEGRAM_ALLOWED_USER_ID=your_telegram_user_id_here

# Пути к программам
LMSTUDIO_EXE=C:\Program Files\LM Studio\LM Studio.exe
STABLE_DIFFUSION_MODEL_PATH=J:\ComfyUI\models\checkpoints\novaAnime_v20.safetensors

3. Настройка путей в коде

Обновите пути к моделям в файле config.py

Создайте структуру папок:

проект/
├── Photos/          # Для загружаемых изображений
├── Audio/           # Для аудиофайлов
├── Video/           # Для видеофайлов
├── Images/          # Для сгенерированных изображений
├── Videos/          # Для сгенерированных видео
├── Release/         # Для whisper-cli.exe 
├── models/          # Для whisper-модели
├── Docx/            # Для работы с DOCX файлами
├── Excel/           # Для работы с EXCEL файлами
├── PDF/             # Для работы с PDF файлами
├── output/          # Для выходных файлов после генерации
├── prompt/          # Для промтов
├── plugins/         # Для работы с плагинами
├── webui/static/    # Для веб-интерфейса
└── stable_diff/     # Основная папка с моделями для генерации
    ├── checkpoints  # Модели для генерации изображений
    └── lora         # Модели LoRA
        ├── sd       # LoRA для SD checkpoints
        └── sdxl     # LoRA для SDXL checkpoints

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

Консольный режим

python main.py

Веб-интерфейс

python main.py --web

Затем откройте http://127.0.0.1:8001/

Тест на инициализацию

python main.py --test-startup

Telegram бот

После настройки токена в .env, бот запустится автоматически при запуске основного скрипта. (не спамит в консоль о своей работе, только при --web)

В разработке

  • Аналог Comet с возможностью (для этого и создаю) подключения локальных моделей
  • Следом за тем, что выше - обновление Web интерфейса (или вовсе полный отказ в угоду перехода на Chromium, консольный режим останется)

Новые функции (бета-тест, мало тестировались/не тестировались)

  • Телеграмм бот реализован (уже был давно, но забыл обновить документацию)
  • .bat скрипт: Для упрощенной установки и начала работы
  • UI Автоматизация: Реализована инспекция UI элементов Windows приложений через uiautomation. Теперь ИИ может "видеть" структуру окон и элементов управления.
  • Реализовал Google Colab, но я скорее всего вы не сможете скачать модель без авторизации на hugging face. Можете посмотреть как все там работает, я дал почву, вы веселитесь, может я допишу плагин, но пока не хочу. Upd: Возможно я сделаю кое что лучше...
  • Добавил работу с почтой, выделил под нее специальный ознакомительный файл settings.md, там можете ознакомится что нужно сделать
  • Реализовал способ запуска модели через llama-cpp-python, как альтернатива LM Studio
  • Web теперь на Node.js

🗺️ Планы развития (чем выше, тем больше приоритет)

  • Система триггеров на события: И планировщик задач
  • Cloud storage: Работа с Google Drive и другими облачными хранилищами
  • Ролевая система доступа: Если будут использовать нейросеть несколько человек (идеал переходить на vLLM)
  • Музыка/аудио генерация: Будет эксперимент наряду с Видео
  • Расширенная генерация видео: Полное тестирование и оптимизация
  • Улучшенное распознавание видео: Стабилизация функций анализа
  • Predictive analytics: Теоретически для ускорения работы, на практике все зависит от моей реализации
  • Интеграция с GitHub: Пока заметка
  • Управление браузером: Есть мысли об интеграции с BrowserOS, мне не нужно будет создавать Управление браузером, я буду использовать уже готовое. Возможно я передумаю, но создавать нечто такое с нуля будет для меня неподъемной задачей.
  • Улучшение в области математики: Дать возможность использовать скрипты для выполнения математических примеров, так как нейросети по своей сути не считают напрямую, это должно очень хорошо поднять ее уровень в математике
  • Enterprise функции: Для коммерческих решений, это будет, но не сейчас и не в таком виде.
  • IoT устройства: Интеграция с умным домом (возможна при появлении запроса)

⚠️ Известные ограничения

В разработке и текущие проблемы

  • Docker: Перехода на Docker пока не будет, так как я не вижу в этом смысла, так как проект сильно завязан на Windows и прямым запуском на системе. Возможно в будущем я сделаю, но не скоро.
  • Генерация видео: Я нашел способ генерации, но пока что требует дополнительных тестов и очень вероятно будет привязка к ComfyUI. Хотя если получится так, там будет недалеко до отказа от него.
  • Распознавание видео: Экспериментальная функция, тестов мало.
  • Возможны проблемы с Cookie: для скачивания YouTube видео использовались cookie; в некоторых случаях они могут быть не нужны. При необходимости позже добавлю автоматическое извлечение.
  • Возможны проблемы с первым запуском: На холодном старте библиотек возможны сбои; при повторном запуске обычно устраняется. Сталкивался с этим на своей машине.
  • Плагины: Пока вообще не в приоритете, так как есть более важные задачи.

Возможные вопросы - ответы:

  • Почему LM Studio?
  • Под капотом есть все нужное, не нужно мучаться с библиотеками, настройками и тп. UPD: теперь можно, я добавил llama-cpp-python

🤝 Вклад в разработку

Проект создан российским разработчиком с использованием современных AI-технологий. Приветствуются вопросы, предложения и помощь в развитии на любых языках. Характеристики ПК:

  • 5060 TI Palit Infinity 16GB VRAM
  • Ryzen 7 7800X3D
  • 64GB RAM DDR5 5000MHz

📝 Лицензия

Dual License модель:

  • Open Source версия: GPL-3.0 для персонального использования
  • Commercial License: Свяжитесь для коммерческого использования

🎯 AI-Assisted Development

Этот проект был создан с использованием современных AI-инструментов (Claude, GPT) для:

  • Генерации и оптимизации кода
  • Архитектурных решений
  • Документации и тестирования

Все AI-сгенерированный код был тщательно проверен, протестирован и адаптирован разработчиком-человеком.


Поддержать проект:

About

🤖 Интеллектуальный мультимодальный AI-помощник с системной интеграцией

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors