Тренд на использование больших языковых моделей (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) для работы с внутренней базой документов.
Я не являюсь профессиональным программистом, я аналитик данных, и этот проект я делал как инструмент для своей работы, если он кому то окажется полезен, буду рад.
Ссылки на проект
Спасибо за уделенное внимание.
Комментарии (6)

Sasa987 Автор
16.10.2025 15:55@sneg2015 еще один вариант :
Вы - ассистент по анализу данных. Всегда отвечай, генерируя исполняемый Python код с pandas. Данные: файл 'sales.csv' с колонками: date, product, revenue, units_sold Задача: проанализировать сезонность продаж Сгенерируй код который: 1. Загрузит данные 2. Преобразует даты 3. Посчитает месячную выручку 4. Построит график тренда 5. Выведет статистику Не объясняй словами - покажи код.от LLM вы получите:
python
import pandas as pd import matplotlib.pyplot as plt import numpy as np # Загрузка данных df = pd.read_csv('sales.csv') df['date'] = pd.to_datetime(df['date']) # Анализ сезонности df['month'] = df['date'].dt.month monthly_revenue = df.groupby('month')['revenue'].sum() print("Месячная выручка:") print(monthly_revenue) plt.figure(figsize=(12, 6)) plt.plot(monthly_revenue.index, monthly_revenue.values) plt.title('Сезонность продаж') plt.xlabel('Месяц') plt.ylabel('Выручка') plt.grid(True) plt.show() # Дополнительная статистика print(f"Общая выручка: {df['revenue'].sum():.2f}") print(f"Средние продажи в месяц: {monthly_revenue.mean():.2f}")
sneg2015
Спасибо за статью. Действительно интересный опыт.
Все же очень смущает доверие к такому анализу. В том же pandas , хотя бы примерно понятно что и как выбирается. Тут же где гарантия, что модель не выдумала свой ответ?
Sasa987 Автор
Вы правы в своих сомнениях. Нейросети как хороший друг - если не знает как ответить, то может просто соврать, чтобы поддержать тебя. Ей нельзя верить на 100%, но она даст помощь в направлении куда мыслить, или с чего начать, если ты оказался в затруднении.
Jacov911
Очень просто, пусть llm использует python, и делает отчёт через пандас
Ровно так и работал анализ в чатгпт и клоде
Sasa987 Автор
@sneg2015 для дополнительной проверки корректности ответа LLM можно просить ее использовать конкретную библиотеку Python, например:
Вы: "Проанализируй мой файл '
my_data.csv', генерируя и выполняя Python код с pandas"ответ LLM: "Я создам код для анализа:
``
python import pandas as pd import matplotlib.pyplot as plt df =pd.read_csv('my_data.csv') print("Базовая статистика:") print(df.describe()) print("Корреляционная матрица:") print(df.corr()) # Построим график plt.figure(figsize=(10, 6)) plt.scatter(df['x'], df['y']) plt.title('X vs Y')plt.show()``"