AIDA TA представляет собой UI/GUI интерфейс для работы с языковыми моделями Hugging Face, специально разработанными для задач программирования. Система позволяет через конфигурационный файл адаптировать работу под любую модель, настроить параметры генерации и оптимизировать использование аппаратных ресурсов. Проект решает проблему сложности настройки и интеграции AI-моделей для программирования.
Для изменения узкой специализации на программировании потребуется модификация системных промптов, специализированных методов и пользовательского интерфейса.
- Обратите внимание
- Проблема и Решение
- Ключевые функции
- Технологический стек
- Конфигурация
- Системные требования
- Установка
- Скачивание модели ИИ
- Установка зависимостей Python
- Запуск приложения
- Работа с GGUF-моделями
- Дополнительные возможности
- Обзор возможностей интерфейса
- Как использовать шаблоны чата
При работе с компактными языковыми моделями рекомендуется ограничивать количество одновременно активируемых функций для достижения оптимального качества результатов. Небольшие модели испытывают затруднения при обработке комплексных многозадачных инструкций с высокой степенью детализации.
Функции, связанные с программированием (Сгенерировать код, Проанализировать код, Исправить и улучшить код и Объяснить код), используют объемные промпты и могут дополняться различными опциями через графический интерфейс. Такая комбинация способна негативно отразиться на производительности компактных моделей.
Рекомендация: Для эффективной работы с небольшими моделями используйте свободный режим.
Локальное развертывание и управление LLM для генерации кода сопряжено с рядом серьезных трудностей:
Высокие требования к ресурсам: Современные языковые модели требуют значительных вычислительных мощностей и дорогостоящего оборудования для эффективной работы.
Сложность настройки: Процесс загрузки моделей, их квантизации и тонкой настройки параметров генерации требует глубоких технических знаний и опыта работы с машинным обучением.
Отсутствие унификации: Различные модели имеют разные требования к интеграции, форматы данных и методы взаимодействия, что усложняет создание универсальных решений.
Нет удобного интерфейса: Взаимодействие с моделями часто ограничивается работой в консоли, что создает неудобства при анализе результатов и итеративной работе с кодом.
AIDA решает перечисленные проблемы, предоставляя комплексное решение:
Унифицированный интерфейс: Интуитивно понятный веб-интерфейс на базе Streamlit для всех основных задач программирования: генерации нового кода, анализа существующего, исправления ошибок и подробного объяснения алгоритмов.
Гибкая конфигурация: Единый файл config.json предоставляет полный контроль над всеми аспектами работы системы: от выбора модели и устройства (CPU/GPU) до тонкой настройки параметров генерации (temperature, top_p) и различных оптимизаций.
Оптимизация ресурсов: Встроенные механизмы квантизации (4-битная и 8-битная), интеллектуальное управление кэшем и памятью позволяют запускать даже крупные модели (например, параметром 6.7B) на потребительском оборудовании среднего уровня.
Локальность и безопасность: Весь процесс обработки происходит исключительно на вашей локальной машине, что гарантирует полный контроль над данными и обеспечивает их конфиденциальность.
| Функция | Описание |
|---|---|
| Динамическая загрузка моделей | Поддержка любых совместимых моделей из Hugging Face Hub. Возможность использования как локально сохраненных весов, так и прямой загрузки из репозитория с автоматическим кэшированием. |
| Полная конфигурация | Централизованное управление всеми аспектами работы системы через единый config.json: от выбора конкретной модели до настройки порогов мониторинга производительности. |
| Многозадачность | Специализированные режимы работы для генерации кода, его анализа, исправления ошибок и детального объяснения с поддержкой кастомизируемых системных промптов. |
| Интерактивный UI | Современный пользовательский интерфейс на Streamlit с организованными вкладками, функциональностью чата, мониторингом ресурсов в реальном времени и сохранением истории сессий. |
| Оптимизация производительности | Поддержка передовых техник ускорения: bfloat16 точность, 4-битное квантование, flash-attention и других методов оптимизации инференса для максимальной производительности. |
| Комплексное логирование | Подробные логи всех сессий для эффективной отладки, анализа производительности и мониторинга работы ассистента. |
| Персонализация | Ассистент запоминает имя пользователя, адаптируется к стилю работы и ведет детальную статистику по выполненным задачам и типам запросов. |
Основные Python-библиотеки: torch для работы с тензорами, transformers для загрузки и управления моделями, streamlit для веб-интерфейса, psutil для мониторинга системных ресурсов, plotly для визуализации данных, bitsandbytes для квантизации.
Streamlit-компоненты: st.tabs для организации интерфейса, st.metric для отображения метрик производительности, st.file_uploader для работы с файлами.
Инфраструктура: Полностью локальное развертывание с поддержкой как CPU, так и GPU вычислений, опциональная интеграция с Hugging Face Hub для загрузки моделей.
Подробная документация по всем параметрам конфигурации и их влиянию на работу системы доступна по адресу:
https://alexandrd7.github.io/AIDA-TA-Terminal-Assistant/Этот ресурс содержит исчерпывающие объяснения каждого параметра, примеры конфигураций для различных сценариев использования и рекомендации по оптимизации.
Требования к системе напрямую зависят от выбранной модели и настроек квантизации. Ниже приведены примеры для популярных моделей семейства Deepseek, которые хорошо подходят для программирования.
- VRAM:
- При использовании
bfloat16/float16точности: 4–6 GB видеопамяти - При включении 4-битной квантизации: примерно 2–3 GB видеопамяти
- При использовании
- Подходящие видеокарты:
- NVIDIA GeForce GTX 1660 / RTX 2060 / RTX 3050 и более мощные модели
- RAM: 8–12 GB свободной оперативной памяти
⚠️ Важное предупреждение: Производительность будет значительно ниже по сравнению с GPU-ускорением
- VRAM:
- При использовании
bfloat16/float16точности: 14–16 GB видеопамяти - При включении 4-битной квантизации: примерно 5–7 GB видеопамяти
- При использовании
- Рекомендуемые видеокарты:
- NVIDIA GeForce RTX 3060 (12 GB), RTX 3080 / RTX 3090 / RTX 4070 / RTX 4080 / RTX 4090
- RAM: 16–24 GB свободной оперативной памяти
⚠️ Критическое предупреждение: Запуск технически возможен, но будет крайне медленным и непригодным для практического использования
Для эффективной работы с крупными моделями на оборудовании с ограниченными ресурсами настоятельно рекомендуется использовать 4-битную квантизацию:
"quantization_type": "4bit"Эта опция позволяет существенно снизить требования к видеопамяти при незначительном снижении качества генерации.
-
Скачайте и установите приложение Windows Terminal из Microsoft Store для удобной работы с командной строкой.
-
В терминале введите команду для установки подсистемы Windows для Linux:
wsl --install
-
После перезагрузки скачайте в Microsoft Store любой дистрибутив Linux (рекомендуется Ubuntu 22.04.5 LTS для стабильной работы).
Далее следуйте инструкциям для установки на Linux, описанным в следующем разделе.
-
Обновите список пакетов и установите
gitдля клонирования репозитория:sudo apt update sudo apt install git
-
Клонируйте репозиторий AIDA-TA-Terminal-Assistant в текущую директорию:
git clone https://github.com/AlexandrD7/-AIDA-TA-Terminal-Assistant/
Этот метод предоставляет полный контроль над процессом загрузки и размещения модели.
- Перейдите на сайт Hugging Face и найдите нужную модель.
- Скачайте все файлы модели и поместите их в папку, путь к которой будет указан в конфигурации.
- Укажите путь к папке с моделью в параметре
local_pathфайлаconfig.json.
Пример настройки в config.json:
"model": {
"clocal_path": "./model_cache"
}Важное замечание: Файлы
Aida.py,config.jsonиStreamlit.pyдолжны находиться в одной директории для корректной работы всех компонентов приложения.
Если в системе не установлены Python или pip, сначала выполните инструкции из раздела Установка зависимостей Python.
Установите пакет huggingface_hub через pip:
pip install huggingface_hubПроверьте корректность установки:
huggingface-cli --helpЕсли команда распознается и выводит справочную информацию — установка прошла успешно.
Скачивание стандартных HuggingFace моделей:
huggingface-cli download codellama/CodeLlama-7b-Instruct-hf \
--local-dir ./models/CodeLlama-7b-Instruct-hfЭта команда загрузит все файлы модели codellama/CodeLlama-7b-Instruct-hf в указанную локальную папку ./models/CodeLlama-7b-Instruct-hf.
Скачивание GGUF-моделей (оптимизированный формат):
huggingface-cli download TheBloke/deepseek-coder-1.3B-instruct-GGUF \
--include "deepseek-coder-1.3b-instruct.Q4_K_M.gguf"По умолчанию huggingface-cli download сохраняет загруженные файлы в кэш Hugging Face:
~/.cache/huggingface/hub/Этот метод позволяет системе автоматически загружать модели при первом запуске.
-
Откройте файл
config.jsonв текстовом редакторе. -
Настройте параметры желаемой модели, указав:
name— точное имя модели в репозитории Hugging Facedescription— человекочитаемое описание для логов и интерфейсаsize— размер модели для корректной оценки требований к ресурсамlocal_path— директория для сохранения моделиcache_dir— фактическая директория загрузки- Дополнительные параметры:
context_size,use_local,fallback_to_remote,integrity_check
-
Примеры конфигураций для различных типов моделей:
Установка стандартной HuggingFace модели:
"model": {
"name": "deepseek-ai/deepseek-coder-6.7b-instruct",
"description": "DeepSeek Coder 6.7B Instruct",
"size": "6.7B",
"context_size": 4096,
"format": "hf",
"gguf_path": null,
"gguf_filename": null,
"gguf_download_url": null,
"fallback_to_hf": true,
"local_path": "./models/",
"use_local": false,
"fallback_to_remote": true,
"integrity_check": true
}Обязательная настройка директории загрузки:
"settings": {
"cache_dir": "/home/<ВАШ_ПОЛЬЗОВАТЕЛЬ>/models/"
}Установка GGUF модели с автоматическим поиском:
"model": {
"name": null,
"description": "TheBloke/deepseek-coder-1.3B-instruct-GGUF",
"size": "1.3B",
"context_size": 4096,
"format": "gguf",
"gguf_path": null,
"gguf_filename": "deepseek-coder-1.3B-instruct-GGUF",
"gguf_download_url": null,
"local_path": null,
"fallback_to_hf": true,
"use_local": false,
"fallback_to_remote": true,
"integrity_check": true
}Установка GGUF модели по прямой URL-ссылке:
"model": {
"name": null,
"description": "TheBloke/deepseek-coder-1.3B-instruct-GGUF",
"size": "1.3B",
"context_size": 4096,
"format": "gguf",
"gguf_path": null,
"gguf_filename": "deepseek-coder-1.3B-instruct-GGUF",
"gguf_download_url": "https://example.com/path/to/model.gguf",
"local_path": null,
"fallback_to_hf": false,
"use_local": false,
"fallback_to_remote": true,
"integrity_check": true
}💡 Практический совет:
При первом запуске система автоматически загрузит и сохранит модель в папке, указанной в параметреcache_dir, что может занять значительное время в зависимости от размера модели и скорости интернет-соединения.
Если у вас уже есть загруженные модели, можно настроить систему для их использования без повторной загрузки.
Для локальных GGUF моделей:
"model": {
"name": null,
"description": "TheBloke/deepseek-coder-1.3B-instruct-GGUF",
"size": "1.3B",
"context_size": 4096,
"format": "gguf",
"gguf_path": "/home/user/models/deepseek-coder-1.3b-instruct.Q4_K_M.gguf",
"gguf_filename": null,
"gguf_download_url": null,
"local_path": null,
"fallback_to_hf": false,
"use_local": false,
"fallback_to_remote": false,
"integrity_check": true
}Для локальных HuggingFace моделей:
"model": {
"name": "deepseek-ai/deepseek-coder-1.3b-instruct",
"description": "Локальная HF модель DeepSeek Coder 1.3B",
"size": "1.3B",
"context_size": 4096,
"format": "hf",
"gguf_path": null,
"gguf_filename": null,
"gguf_download_url": null,
"local_path": "./models/deepseek-coder-1.3b/",
"fallback_to_hf": false,
"use_local": true,
"fallback_to_remote": true,
"integrity_check": true
}- Установите все необходимые библиотеки из файла требований:
pip install -r requirements.txt❗ Если Python не установлен в системе:
Выполните установку Python вместе с пакетным менеджером pip:
sudo apt update
sudo apt install python3 python3-pipAIDA предоставляет два режима работы: консольный интерфейс для быстрого взаимодействия и веб-интерфейс для комфортной работы в браузере.
python3 Aida.pystreamlit run Streamlit.py📁 Важное требование к структуре файлов:
Убедитесь, что файлыAida.py,config.jsonиStreamlit.pyнаходятся в одной директории. Это обеспечивает корректную работу всех компонентов системы и правильную загрузку конфигурации.
Система логирования: AIDA автоматически создает директорию aida_logs в рабочей папке, где сохраняются подробные логи всех сессий для последующего анализа и отладки.
GGUF (GPT-Generated Unified Format) представляет собой оптимизированный формат хранения моделей, который обеспечивает более быструю загрузку и эффективное использование памяти.
Если вы планируете использовать видеокарту NVIDIA для ускорения вычислений, необходимо установить CUDA Toolkit. Для работы только на CPU этот шаг можно пропустить.
Загрузите CUDA Toolkit для вашей операционной системы с официального сайта:
https://developer.nvidia.com/cuda-downloadsСначала установите необходимые инструменты сборки:
sudo apt install cmakeЗатем установите llama-cpp-python с поддержкой CUDA:
CMAKE_ARGS="-DGGML_CUDA=on" pip install --force-reinstall --no-cache-dir llama-cpp-pythonДля максимальной производительности рекомендуется указывать архитектуру вашей видеокарты при установке.
Пример для GeForce RTX 3050 (архитектура Ampere — SM 86):
CMAKE_ARGS="-DGGML_CUDA=on -DCMAKE_CUDA_ARCHITECTURES=86" pip install --force-reinstall --no-cache-dir llama-cpp-pythonУниверсальная сборка для нескольких архитектур:
CMAKE_ARGS="-DLLAMA_CUBLAS=on -DCMAKE_CUDA_ARCHITECTURES=75;86;89" pip install --force-reinstall --no-cache-dir llama-cpp-pythonДля определения архитектуры вашей видеокарты используйте таблицу на сайте NVIDIA:
https://developer.nvidia.com/cuda-gpusПри необходимости удаления старой версии CUDA:
sudo apt purge nvidia-cuda-toolkit
sudo rm -rf /usr/local/cuda*После установки проверьте доступность компилятора NVCC:
nvcc --versionЕсли команда не найдена, добавьте путь к CUDA в переменную PATH. Обычно NVCC располагается в:
/usr/local/cuda-13.0/binОткройте файл ~/.bashrc и добавьте в конец:
export PATH=$PATH:/usr/local/cuda-13.0/binПримените изменения:
source ~/.bashrcПроверьте корректность настройки:
nvcc --versionУспешная установка должна показать информацию вроде:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jul_16_07:30:01_PM_PDT_2025
Cuda compilation tools, release 13.0, V13.0.48
Build cuda_13.0.r13.0/compiler.36260728_0
Если GPU-ускорение не требуется, установите упрощенную версию:
pip install llama-cpp-python✅ Шаг 1: Проверка наличия GPU
nvidia-smiЕсли команда выполняется успешно и показывает информацию о видеокарте, значит драйвер NVIDIA и CUDA установлены корректно.
✅ Шаг 2: Проверка компилятора NVCC
nvcc --versionЭта команда должна отображать версию установленного CUDA компилятора.
AIDA включает специальный режим "Выбор меню UI", предназначенный для прямого взаимодействия с моделью DeepSeek без использования предустановленных промптов. Этот режим обеспечивает максимальную гибкость общения, но требует понимания шаблонов чата конкретной модели.
Важное примечание: Данный режим оптимизирован для моделей DeepSeek и может не работать корректно с другими моделями, поскольку у каждой модели есть свои специфические шаблоны и форматы общения.
Пример взаимодействия в режиме прямого общения:
🧑 Роль (system/user/assistant или ### для завершения): system
📨 Сообщение от system: Ты — ассистент по Python. Пиши только код, без пояснений.
🧑 Роль (system/user/assistant или ### для завершения): user
📨 Сообщение от user: Цикл for от 1 до 3
🧑 Роль (system/user/assistant или ### для завершения): ###
В этом примере:
- Сначала устанавливается системная роль с инструкциями для модели
- Затем задается пользовательский запрос
- Символы
###сигнализируют о завершении ввода и начале генерации ответа
Этот режим особенно полезен для экспериментов с различными типами промптов, тестирования возможностей модели.
| Раздел | Дополнительные возможности | Описание |
|---|---|---|
| Генерация кода | Включить тесты | Эта опция автоматически добавляет к сгенерированному коду comprehensive unit тесты с использованием подходящего фреймворка для выбранного языка программирования. Например, для Python будут созданы тесты с pytest или unittest, для JavaScript - с Jest или Mocha. Тесты покрывают основные сценарии использования, граничные случаи и потенциальные ошибки, что помогает убедиться в корректности работы кода и упрощает его дальнейшую поддержку. |
| Генерация кода | Включить документацию | Когда эта опция активна, AIDA добавляет детальную документацию к каждой функции, классу и модулю. Документация включает docstrings в соответствующем для языка формате (например, Google style для Python), комментарии, объясняющие логику работы, описания параметров, возвращаемых значений и возможных исключений. Это делает код самодокументируемым и значительно упрощает его понимание другими. |
| Анализ кода | Анализ безопасности | Система проводит проверку кода на наличие потенциальных уязвимостей безопасности. Анализируются такие аспекты как SQL-инъекции, XSS-атаки, небезопасное использование пользовательского ввода, слабые алгоритмы шифрования, утечки памяти, небезопасные настройки по умолчанию и другие распространенные проблемы безопасности. AIDA предоставляет конкретные рекомендации по устранению найденных уязвимостей. |
| Анализ кода | Анализ производительности | Эта функция исследует код с точки зрения эффективности выполнения. Анализируются алгоритмическая сложность, использование памяти, потенциальные узкие места, неэффективные циклы, избыточные операции и возможности для оптимизации. AIDA предлагает конкретные способы улучшения производительности, включая альтернативные алгоритмы и структуры данных. |
| Анализ кода | Анализ стиля кода | Система проверяет соответствие кода принятым стандартам и best practices для конкретного языка программирования. Анализируются именование переменных и функций, форматирование, структура кода, использование языковых конструкций, соблюдение PEP 8 для Python или других стайл-гайдов. AIDA предлагает улучшения для повышения читаемости и поддерживаемости кода. |
| Анализ кода | Анализ сложности | Функция оценивает сложность кода с использованием различных метрик, таких как цикломатическая сложность, когнитивная сложность, глубина вложенности и количество строк кода. AIDA выявляет слишком сложные функции и классы, которые могут быть трудными для понимания и тестирования, и предлагает способы их упрощения через рефакторинг. |
| Исправление кода | Исправить баги | Система автоматически находит и исправляет логические ошибки, синтаксические проблемы, неправильное использование API, ошибки в условных конструкциях, проблемы с областью видимости переменных и другие распространенные баги. AIDA не только исправляет найденные ошибки, но и объясняет причину их возникновения и способы предотвращения подобных проблем в будущем. |
| Исправление кода | Оптимизация производительности | Эта опция фокусируется на улучшении скорости выполнения и эффективности использования ресурсов. AIDA заменяет неэффективные алгоритмы на более быстрые, оптимизирует циклы, улучшает работу с памятью, предлагает более эффективные структуры данных и устраняет избыточные вычисления. |
| Исправление кода | Улучшить читаемость | Функция реструктурирует код для повышения его понятности и поддерживаемости. Это включает улучшение именования переменных и функций, разбиение сложных функций на более простые, устранение дублирования кода, улучшение структуры и логической организации кода, добавление поясняющих комментариев в критических местах. |
| Исправление кода | Добавить обработку ошибок | AIDA добавляет comprehensive систему обработки исключений и ошибок. Система анализирует потенциальные точки отказа и добавляет соответствующие try-catch блоки, валидацию входных данных, graceful handling критических ошибок, логирование проблем и механизмы восстановления после ошибок. |
| Исправление кода | Модернизировать код | Эта опция обновляет код для использования современных практик и возможностей языка. Включает миграцию на новые версии языка, использование современных библиотек и фреймворков, применение актуальных паттернов проектирования, замену устаревших конструкций на современные аналоги. |
| Объяснение кода | Включить диаграммы | Система создает ASCII диаграммы, схемы потоков данных, диаграммы архитектуры и другие визуальные элементы для лучшего понимания структуры и логики работы кода. Диаграммы помогают визуализировать сложные взаимосвязи между компонентами, потоки выполнения программы и архитектурные решения. |
| Объяснение кода | Объяснить сложность | AIDA проводит детальный анализ временной и пространственной сложности алгоритмов. Объясняется, как код будет масштабироваться с ростом объема данных, какие операции являются наиболее затратными, и предлагаются альтернативные подходы с лучшими характеристиками сложности. |
Каждая из описанных функций может применяться как самостоятельно, так и в комбинации с другими возможностями для достижения максимально эффективного результата. Система интеллектуально адаптируется к специфическим особенностям выбранного языка программирования, учитывает контекст поставленной задачи и предоставляет релевантные, практически применимые рекомендации.
Система шаблонов позволяет настроить поведение чата под ваши конкретные задачи. Следуйте этому пошаговому руководству для правильной настройки.
Прежде чем настраивать какие-либо параметры шаблонов, необходимо глобально активировать саму систему пользовательских шаблонов. Без этого шага все остальные настройки в данной секции будут полностью проигнорированы системой.
Найдите в конфигурационном файле секцию chat_template_system и установите параметр enabled в значение true:
"chat_template_system": {
"enabled": true,
// другие параметры...
}После активации системы шаблонов необходимо указать, какой именно шаблон будет использоваться для новых чатов. Эта настройка производится в основной секции конфигурации.
В секции settings найдите параметр default_chat_template и установите его значение равным имени желаемого шаблона:
"settings": {
"default_chat_template": "code_focused",
// другие настройки...
}После применения этой настройки Аида будет автоматически использовать шаблон code_focused для всех новых чатов по умолчанию.
По умолчанию система работает в режиме "detection_mode": "smart", что означает интеллектуальный выбор шаблона. В этом режиме Аида будет использовать ваш пользовательский шаблон только в том случае, если у модели отсутствует встроенный шаблон чата.
Чтобы гарантированно применить ваш собственный шаблон из файла config.json (будь то generic или code_focused), необходимо активировать принудительное переопределение. Установите параметр force_override в значение true:
"chat_template_system": {
"enabled": true,
"force_override": true,
// другие параметры...
}Следует понимать, что большинство современных языковых моделей поставляются с предустановленными шаблонами чата, которые специально оптимизированы для конкретной модели. Эти встроенные шаблоны обычно обеспечивают наилучшую производительность и совместимость.
Поэтому для большинства случаев использования рекомендуется оставлять систему пользовательских шаблонов отключенной:
"chat_template_system": {
"enabled": false,
// остальные параметры будут проигнорированы
}Включайте пользовательские шаблоны только тогда, когда у вас есть специфические требования, которые не покрываются встроенными шаблонами модели.