Введите пароль


Нейронные сети на практике

Опыт применения LLM в инфраструктуре и разработке

Роман Бармин

АО «НАТ Казахстан»

О чём поговорим

🧠

Что такое LLM и зачем они нам

Краткий ликбез: чем отличается от «просто чат-бота», что умеет и чего не умеет

☁️

Облачные vs локальные нейросети

Когда какие использовать, плюсы и минусы каждого подхода

🔧

Реальные кейсы из работы

K8s, Ansible, CI/CD, анализ логов — как LLM помогает в ежедневных задачах

🔒

Безопасность и ограничения

Что можно и нельзя отправлять в нейросеть, подводные камни, галлюцинации

🚀

Как начать использовать

Инструменты, настройка, первые шаги — порог входа ниже, чем кажется

LLM — это не «чат-бот»

Что такое LLM

Large Language Model — большая языковая модель, обученная на огромных объёмах текста. Понимает контекст, генерирует код, анализирует логи, пишет документацию.


  • Контекстное окно: 100K–200K токенов
  • Работа с кодом на 50+ языках
  • Понимание архитектурных паттернов
  • Анализ ошибок по stack trace

Ключевые модели (2025–2026)

МодельТип
Claude 4 Opus / SonnetОблако
GPT-4o / o3Облако
Gemini 2.5 ProОблако
Llama 3.3 70BЛокально
Qwen 2.5 Coder 32BЛокально
DeepSeek R1 / V3Оба

Облако vs Локально

Параметр ☁️ Облачные (Claude, GPT) 🖥️ Локальные (Ollama, LM Studio)
Качество Высокое — лучшие модели на рынке Среднее — зависит от размера модели
Приватность Данные уходят на сервер Всё на вашем железе
Скорость Быстро — мощные GPU Зависит от железа
Стоимость $20–200/мес на подписку или по токенам Бесплатно (но нужно железо)
Интернет Обязателен Не нужен
Железо Любой компьютер с браузером 16–64 GB RAM, желательно GPU
Применение Сложные задачи, кодинг, архитектура Рутина, конфиденциальные данные

Вывод: Оптимальная стратегия — комбинировать. Облако для сложных задач, локальная модель для работы с конфиденциальными данными и рутинных операций.

Развёртывание локальной LLM

# Установка Ollama (macOS / Linux)
$ curl -fsSL https://ollama.com/install.sh | sh

# Скачать и запустить модель
$ ollama pull qwen2.5-coder:14b
$ ollama run qwen2.5-coder:14b

# Модель доступна по API
$ curl http://localhost:11434/api/generate \
  -d '{"model": "qwen2.5-coder:14b",
      "prompt": "Напиши Ansible playbook"}'

# Docker вариант
$ docker run -d -v ollama:/root/.ollama \
  -p 11434:11434 ollama/ollama

Рекомендуемые модели

  • qwen2.5-coder:14b — код, скрипты, K8s
  • llama3.3:70b — универсальная, качество
  • deepseek-r1:14b — рассуждения, анализ
  • codestral:22b — генерация кода (Mistral)

Минимальные требования

  • 7B модель — 8 GB RAM
  • 14B модель — 16 GB RAM
  • 70B модель — 48 GB RAM + GPU
  • SSD обязателен для загрузки моделей

Инструменты для работы с LLM

CLI / Терминал

  • Claude Code — CLI агент, работает с файлами, git, K8s
  • GitHub Copilot CLI — автодополнение команд
  • aider — open-source пара для кодинга

IDE интеграции

  • Cursor — VS Code + LLM, работа с целым проектом
  • GitHub Copilot — автодополнение в IDE
  • Continue.dev — open-source, подключает локальные модели

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

  • Open WebUI — веб UI для Ollama
  • LibreChat — мультимодельный чат
  • AnythingLLM — чат + RAG по документам

Мой стек: Claude Code (CLI) для сложных задач с инфраструктурой + Ollama для быстрых вопросов и работы с конфиденциальными конфигами. Cursor как IDE для фронтенд-разработки.

Кейс 1: K8s Upgrade Troubleshooting

Реальная задача Обновление Kubernetes 1.32 → 1.33 через kubespray

Проблема

При обновлении K8s на CentOS 8 падал containerd с ошибкой GLIBC_2.32 not found. Ansible-playbook валился с непонятными ошибками в dict evaluation.

Как LLM помогла

  • Проанализировала ошибки Ansible — нашла root cause: ansible-core 2.16 иначе обрабатывает dict
  • Предложила решение: добавить все *_binary_checksum переменные
  • Диагностировала GLIBC — предложила static binary containerd
  • Сгенерировала фиксы для inventory
# Ошибка, которую видели
TASK [download : download_file | Set URL]
fatal: undefined variable
  'cni_binary_checksum' is undefined

# LLM нашла причину:
# ansible-core 2.16 evaluates ENTIRE
# 'downloads' dict when accessing
# single key → needs ALL vars defined

# Решение — добавить в inventory:
cni_binary_checksum: "sha256:..."
containerd_archive_checksum: "sha256:..."
crictl_checksum: "sha256:..."
# + все остальные *_checksum

# containerd fix:
containerd_static_binary: true

Кейс 2: Автоматизация инфраструктуры

Ежедневная практика Генерация и дебаг Ansible, K8s манифестов, CI/CD

Что делает LLM

  • Генерирует K8s Deployment/Service/Ingress из описания на человеческом языке
  • Находит ошибки в Ansible playbooks
  • Пишет Bash-скрипты для CI/CD
  • Конвертирует конфиги между форматами
  • Объясняет чужой legacy-код

Экономия времени

Задачи, которые раньше занимали 30–60 минут поиска в документации и StackOverflow, решаются за 2–5 минут диалога с LLM.

# Запрос: "создай deployment для
# Spring Boot сервиса с healthcheck"

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
      - name: titanium
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 8080
        readinessProbe:
          httpGet:
            path: /actuator/health/readiness
            port: 8080

Кейс 3: Анализ логов и диагностика

Troubleshooting Поиск причин падения тестов и сервисов
📋

Анализ stack trace

Вставляешь Java stack trace → LLM определяет root cause, объясняет цепочку вызовов, предлагает fix. Работает с Spring Boot, Kafka, Oracle exceptions.

🔍

Массовые падения тестов

«400 тестов упало с ошибкой "ПС не сформирован"» → LLM по описанию архитектуры определяет: CURRENTSTATUS в Oracle ≠ 0, нужен сброс операционного дня. Без чтения документации.

🔑

Проблемы аутентификации

«invalid_grant при OIDC» → LLM знает типичные причины: expired password, missing client registration, неправильный scope. Даёт команды для проверки MongoDB/CAS.

Важно: LLM анализирует на основе паттернов. Всегда верифицируйте предложенные решения перед применением на production!

Кейс 4: Генерация и рефакторинг кода

Разработка Java, Python, React, Bash — любой стек

Что умеет хорошо

  • Писать утилитарный код (парсеры, конвертеры, скрипты)
  • Рефакторинг — переименование, извлечение методов, оптимизация
  • Писать тесты по существующему коду
  • Миграция между фреймворками
  • Написание SQL запросов (Oracle, PostgreSQL)
  • Генерация REST API endpoints

Где нужна осторожность

  • Бизнес-логика — LLM не знает ваши правила
  • Сложные SQL с оптимизацией — лучше проверить explain plan
  • Безопасность — ревью на XSS, SQL injection обязательно
  • Версионность — может предложить deprecated API
  • Конкурентный доступ — race conditions сложно для LLM

Правило: LLM — это джуниор-разработчик с энциклопедическими знаниями. Он быстро напишет код, но его нужно ревьюить как любой PR.

Безопасность при работе с LLM

Можно отправлять в облачный LLM

  • Публичную документацию и open-source код
  • Общие вопросы по технологиям
  • Stack trace без бизнес-данных
  • Шаблоны K8s/Ansible без секретов
  • Описание архитектуры в общих терминах

Нельзя отправлять

  • Пароли, токены, ключи API
  • Персональные данные клиентов (ИИН, счета)
  • Конфигурации с реальными IP/доменами
  • Банковские транзакции и суммы
  • Внутреннюю документацию заказчика

Решение: Для работы с конфиденциальными данными — локальная модель (Ollama). Данные не покидают вашу машину. Для проектов в финсекторе и госсекторе это критически важно.

Подводные камни и ограничения

🎭

Галлюцинации

LLM может уверенно генерировать несуществующие функции, пакеты, API endpoints. Всегда проверяйте, что предложенный код компилируется и работает.

📅

Устаревшие знания

Модель обучена на данных до определённой даты. Может предложить устаревший синтаксис K8s API или deprecated библиотеки. Локальные модели отстают сильнее.

📏

Ограничение контекста

Даже 200K токенов — это ~150K слов. Для больших проектов LLM не может «увидеть» весь код сразу. Нужно правильно формулировать контекст.

💰

Стоимость

Облачные API: $3–75 за 1M токенов. При активном использовании — $50–200/мес. Локальные — бесплатно, но нужны ресурсы на железо.

Промпт-инженеринг: как спрашивать

Плохо

«Напиши деплоймент для K8s»

Хорошо

«Напиши K8s Deployment для Spring Boot сервиса titanium: образ repo-cache.nat.kz/kisc/titanium:latest, порт 8080, liveness на /actuator/health, 2 реплики, лимит 512Mi RAM»

Плохо

«Почему тесты падают?»

Хорошо

«400 тестов падают с ошибкой "ПС не сформирован". Система: Oracle + K8s, есть таблица CURRENTSTATUS. Что проверить?»

Принципы хорошего промпта

  • Контекст — что за проект, стек, окружение
  • Конкретика — версии, имена, порты, пути
  • Формат — «в виде YAML», «как bash-скрипт»
  • Ограничения — «без внешних зависимостей», «CentOS 8»
  • Пример — покажите желаемый результат

Правило 80/20: 80% качества ответа зависит от качества вопроса. Потратьте 30 секунд на формулировку — сэкономите 30 минут на итерациях.

С чего начать

Шаг 1: Попробовать облако

  • Зарегистрироваться в claude.ai или chat.openai.com
  • Бесплатные тарифы дают базовое понимание
  • Начать с простого: «объясни этот код», «напиши скрипт»
  • Привыкнуть формулировать запросы (prompt engineering)

Шаг 2: Развернуть локально

  • Установить Ollama (одна команда)
  • Скачать модель 14B (10–15 минут)
  • Поставить Open WebUI для удобства
  • Подключить IDE (Continue.dev / Copilot)

Шаг 3: Встроить в рабочий процесс

  • Использовать CLI-инструменты (Claude Code, aider)
  • Автоматизировать рутину через API
  • Создать базу знаний проекта (RAG)
  • Обучить команду промпт-инженерингу

Ожидаемый результат

  • Ускорение рутинных задач в 3–5 раз
  • Снижение порога входа для новых сотрудников
  • Лучшая документация и код-ревью
  • Меньше времени на поиск в Google/StackOverflow

Итого

3–5x
ускорение рутинных задач
0 ₸
стоимость локального LLM
5 мин
установка Ollama
100%
данные остаются у вас
💡

Главный takeaway

LLM — это не замена инженера, а усилитель. Как IDE заменила блокнот, так LLM меняет подход к рутинным задачам. Кто начнёт раньше — получит преимущество.

Вопросы?

Готов показать живую демонстрацию

Роман Бармин

Telegram: @barm_in