Тренд на использование больших языковых моделей (LLM) не ослабевает, но облачные решения вроде ChatGPT или Gemini имеют ряд ограничений: зависимость от интернета, платные подписки и, что самое важное, конфиденциальность данных. Особенно остро последний вопрос стоит при работе с корпоративной или чувствительной информацией, которую нельзя загружать в чужие сервисы.
В этой статье я хочу поделиться опытом создания полностью локального AI-ассистента на основе Microsoft Phi-3-mini — компактной, но мощной модели, способной анализировать данные из CSV, JSON и TXT файлов. Весь проект представляет собой набор Python-скриптов с открытым исходным кодом, которые автоматизируют установку и предоставляют интуитивно понятный чат-интерфейс.
Почему Phi-3-mini?
Microsoft позиционирует семейство моделей Phi-3 как "достаточно маленькие" (Small Language Models), но при этом "достаточно умные". Phi-3-mini, обладая 3.8 миллиардами параметров, демонстрирует производительность, сопоставимую с моделями вроде Mixtral 8x7B и GPT-3.5, но в значительно меньшем размере. Это делает её идеальным кандидатом для локального запуска на потребительском железе.
Компактность: ~7-8 ГБ против десятков и сотен ГБ у более крупных моделей.
Эффективность: Оптимизирована для работы на GPU с ограниченными ресурсами.
Качество: Поддерживает контекст до 4K токенов и отлично справляется с логическими и аналитическими задачами, включая код.
Архитектура решения
Проект задуман как максимально простой в развертывании. Его ядро состоит из двух основных скриптов на Python:
auto_install_AI_Phi-3-mini_.py
— установщик, который берет на себя всю рутину.
chat_with_AI_
Phi-3-mini.py
— интерактивный чат-клиент для общения с моделью и анализа данных.
Ключевые компоненты системы:
Менеджер зависимостей: Автоматически проверяет наличие Python 3.8+, pip и совместимых версий ключевых библиотек (PyTorch, Transformers и др.).
Детектор окружения: Определяет наличие и тип GPU (CUDA), чтобы задействовать аппаратное ускорение, или переключается на CPU.
Загрузчик моделей: Скачивает модель с Hugging Face Hub и размещает её в локальной структуре каталогов.
Файловый менеджер: Отслеживает папку data_files, автоматически обнаруживая и читая файлы для анализа по запросу пользователя.
Система сохранения: Реализует логику ручного и автоматического сохранения истории диалогов и ответов модели.
Структура проекта после установки:
auto_install_AI_Phi-3-mini_.py
chat_with_AI_Phi-3-mini.py
phi3-project/
├── models/
│ └── phi3-mini/ # Локальная копия модели
├── data_files/
│ ├── responses/ # Автосохраненные ответы
│ ├── sales_data.csv
│ └── report.json
└── scripts/ # Вспомогательные скрипты
💻 Как это работает: Установка и запуск
Весь процесс установки сводится к нескольким командам:
bash
Клонируем репозиторий (или копируем скрипты)
git clone
cd phi3-project
Запускаем автоматическую установку
python auto_install_AI_Phi-3-mini_.py
Установщик последовательно:
Проверит системные требования.
Предложит выбрать диск для установки.
Создаст структуру папок.
Установит необходимые Python-пакеты.
Загрузит модель Phi-3-mini.
После этого копируем файл
bash
python chat_with_AI_Phi-3-mini.py
в корневую папку проекта и запускаем чат-клиент. И всё — модель загружена, можно общаться и анализировать данные.
Ключевые возможности чат-клиента
Диалог с нейросетью происходит в редакторе. Я использовал Visual Studio Code.
Диалог прост - запускаете файл чата в редакторе и в терминале в строке ввода данных пишите, что вам нужно. Для выхода из диалога набираете "exit" или "выход"
система команд, которые можно вводить в терминале при диалоге:
/help - Справка по командам
/clear - Очистить историю
/history - Показать историю диалога
/stats - Статистика сессии
/files - Список доступных файлов
/model - Информация о модели
/exit - Выйти из программы
/save - сохранить последний ответ
/saveall - сохранить всю историю диалога
/autosave - включить/выключить автосохранение
/responses - показать сохраненные файлы
Автоматический анализ данных Это одна из самых полезных функций. Пользователю не нужно явно открывать файл — достаточно попросить модель его проанализировать.
Пример диалога:
👤 Вы: Проанализируй файл sales_data.csv и найди топ-3 категории по продажам.
🤖 Phi-3: Файл 'sales_data.csv' содержит 12500 записей. Проанализировав данные, вот топ-3 категории по объему продаж:
Электроника: $1,542,000
Книги: $891,500
Одежда: $745,200 Также я заметил, что в сто��бце 'Discount' присутствует 5% пропущенных значений.
Полная оффлайн-работа
После первоначальной установки и загрузки модели вся работа происходит локально. Никакие данные не покидают ваш компьютер, что критически важно для работы с коммерческой тайной, персональными данными или конфиденциальными отчетами.
Технический стек и оптимизация
Язык: Python 3.8+
Фреймворки: PyTorch, Transformers (Hugging Face)
Квантование: Используется 8-битное квантование (bitsandbytes) для уменьшения потребления памяти без значительной потери качества.
Ускорение: Автодетект CUDA, поддержка GPU NVIDIA через torch.cuda.
С какими вызовами пришлось столкнуться
Потребление памяти: Даже такая "маленькая" модель требует ~8 ГБ ОЗУ для комфортной работы. Решением стало внедрение 8-битного квантования и четкие минимальные системные требования.
Скорость ответа на CPU: На процессоре генерация ответа может занимать десятки секунд. Мы честно предупреждаем пользователей, что для продуктивной работы крайне желателен GPU.
Управление контекстом: Модель имеет ограничение в 4096 токенов. Пришлось реализовать «обрезание» истории диалога, чтобы оставаться в лимите.
Выводы и перспективы
Развертывание локальных LLM перестало быть прерогативой крупных компаний с мощными дата-центрами. Такие модели, как Phi-3-mini, открывают возможность создания персональных и корпоративных AI-ассистентов, которые:
Работают оффлайн.
Гарантируют конфиденциальность.
Не требуют ежемесячных платежей.
Кастомизируются под конкретные задачи.
Данный проект — это концепт, который можно развивать в разных направлениях: добавить веб-интерфейс на Streamlit или Gradio, интегрировать другие модели (например, кодогенерирующие), реализовать RAG (Retrieval-Augmented Generation) для работы с внутренней базой документов.
Я не являюсь профессиональным программистом, я аналитик данных, и этот проект я делал как инструмент для своей работы, если он кому то окажется полезен, буду рад.
Ссылки на проект
Спасибо за уделенное внимание.