Тренд на использование больших языковых моделей (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. Электроника: $1,542,000

  2. Книги: $891,500

  3. Одежда: $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) для работы с внутренней базой документов.

Я не являюсь профессиональным программистом, я аналитик данных, и этот проект я делал как инструмент для своей работы, если он кому то окажется полезен, буду рад.

Ссылки на проект

Спасибо за уделенное внимание.