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

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

Для автоматизации это особенно полезно. Многие задачи не требуют большого приложения: скачать страницу, вытащить таблицу, привести даты к одному формату, объединить CSV, отправить результат в файл. Раньше на такой скрипт уходил вечер, если приходилось вспоминать библиотеку, читать документацию и отлавливать мелкие ошибки. Сейчас черновик можно получить за несколько минут, а сэкономленное время потратить на проверку данных и безопасный запуск.

Если вы только выстраиваете подход к ИИ в работе, полезно начать не с кода, а с карты повторяющихся задач. Я разбирал этот принцип в статье про внедрение нейросетей в рабочие процессы: сначала выбираем узкое место, затем превращаем его в повторяемый сценарий. Для генерации кода это правило особенно хорошо работает.

Где ИИ действительно ускоряет автоматизацию

Лучшие задачи для нейросети имеют понятный вход, понятный выход и небольшой набор правил. Например: «на входе CSV с заказами, на выходе Excel с группировкой по статусам», «на входе HTML-страница каталога, на выходе JSON с названием, ценой и ссылкой», «на входе папка с отчётами, на выходе один файл с нормализованными колонками».

Хуже подходят задачи, где много скрытой бизнес-логики. Если менеджер говорит «надо выгрузить всё важное», нейросеть не угадает, что именно считается важным. Нужно превратить расплывчатую просьбу в проверяемую спецификацию: какие поля брать, что делать с пустыми значениями, как назвать файл, какие ошибки считать критичными.

Я чаще всего вижу четыре рабочих класса задач:

Задача Подходящий язык Что просить у нейросети Риск, который проверяем вручную
Обработка CSV и Excel Python Скрипт с чтением файла, чисткой колонок, сохранением результата Кодировка, разделитель, пустые строки
Парсинг HTML-страниц Python или JavaScript Извлечение нужных блоков и сохранение в JSON Правила сайта, изменение разметки, лимиты запросов
Работа с API Python или JavaScript Запросы, обработка ответов, повтор при ошибке Токены, лимиты, формат ответа
Автоматизация в браузере JavaScript Скрипт для страницы или сценарий с браузерной средой Селекторы, авторизация, динамическая загрузка

В SoftChat такой сценарий удобно вести в диалоге: можно начать с формулировки задачи, затем уточнять код в той же истории разговора. Если задача повторяется, сохранённый шаблон промпта помогает не собирать запрос заново. Для сложных задач я подключаю отдельного ассистента с ролью «ревьюер кода» и прошу его проверять не красоту решения, а риски запуска: обработку исключений, сохранение логов, поведение при пустом входном файле. Эта механика укладывается в возможности чата с ассистентами, шаблонами промптов и историей разговоров.

Что написать в запросе, чтобы получить рабочий скрипт

Нейросеть пишет код тем лучше, чем меньше ей приходится додумывать. Хороший промпт похож на короткое техническое задание. В нём есть контекст, входные данные, ожидаемый результат, ограничения по библиотекам и критерии проверки.

Базовая форма запроса выглядит так:

Напиши скрипт на Python для автоматизации задачи.

Задача: прочитать файл orders.csv и сформировать отчёт report.xlsx.

Входные данные:
- файл orders.csv;
- разделитель запятая;
- колонки: order_id, created_at, status, amount, city;
- amount может быть пустым, пустые значения считать нулём.

Что нужно сделать:
1. Прочитать CSV в кодировке utf-8.
2. Привести created_at к формату YYYY-MM-DD.
3. Сгруппировать данные по city и status.
4. Посчитать количество заказов и сумму amount.
5. Сохранить результат в report.xlsx.

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

После кода дай короткую инструкцию запуска.

Такой запрос снимает половину будущих правок. Нейросеть не выбирает произвольный формат отчёта, не выдумывает названия колонок и сразу добавляет проверку входа. Если вы работаете в SoftChat, параметры ответа можно подстроить в настройках текущего чата: например, попросить более короткий ответ или увеличить объём, когда нужен разбор каждой строки. Настройки зависят от выбранной модели и показываются только там, где поддерживаются.

Больше приёмов формулировки запроса я собрал в материале про промптинг для нейросетей. Для кода главный приём такой: не просите «сделай красиво», просите «сделай так, чтобы я мог проверить результат по этим условиям».

Пример: Python-скрипт для обработки CSV

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

from pathlib import Path
import pandas as pd

INPUT_FILE = Path("orders.csv")
OUTPUT_FILE = Path("report.xlsx")
REQUIRED_COLUMNS = {"order_id", "created_at", "status", "amount", "city"}


def build_report(input_file: Path, output_file: Path) -> None:
    if not input_file.exists():
        raise FileNotFoundError(f"Файл не найден: {input_file}")

    df = pd.read_csv(input_file, encoding="utf-8")

    missing = REQUIRED_COLUMNS - set(df.columns)
    if missing:
        raise ValueError(f"Нет обязательных колонок: {', '.join(sorted(missing))}")

    df["created_at"] = pd.to_datetime(df["created_at"], errors="coerce").dt.strftime("%Y-%m-%d")
    df["amount"] = pd.to_numeric(df["amount"], errors="coerce").fillna(0)
    df["city"] = df["city"].fillna("Не указан")
    df["status"] = df["status"].fillna("unknown")

    report = (
        df.groupby(["city", "status"], as_index=False)
        .agg(order_count=("order_id", "count"), total_amount=("amount", "sum"))
        .sort_values(["city", "status"])
    )

    report.to_excel(output_file, index=False)
    print(f"Отчёт создан: {output_file.resolve()}")


if __name__ == "__main__":
    build_report(INPUT_FILE, OUTPUT_FILE)

После получения кода я почти всегда задаю второй вопрос: «Проверь этот скрипт как ревьюер. Найди ошибки, крайние случаи и предложи минимальные исправления». Это лучше, чем пытаться одним запросом получить идеальный результат. Разделение на генерацию и ревью снижает риск того, что модель одновременно придумывает решение и оправдывает его.

Условный пример: если в файле «orders.csv» 50 000 строк и 5 колонок, ручная проверка каждой строки бессмысленна, а автоматическая группировка занимает секунды после настройки скрипта. Но число строк само по себе не гарантирует качества. Ошибка в названии одной колонки ломает весь отчёт, поэтому проверка схемы входных данных в коде обязательна.

Пример: JavaScript для парсинга страницы

JavaScript удобен, когда нужно работать рядом с веб-страницей: разобрать HTML, достать карточки, пройтись по элементам. В серверной среде часто используют загрузку HTML и библиотеку для разбора разметки. В браузере можно работать с объектной моделью страницы, но тогда надо аккуратно относиться к правилам сайта и правам доступа.

Пример запроса:

Напиши скрипт на JavaScript для Node.js.

Задача: получить HTML страницы каталога и сохранить данные карточек в products.json.

Нужно извлечь:
- название товара из элемента .product-card .title;
- цену из .product-card .price;
- ссылку из тега a внутри карточки.

Ограничения:
- использовать fetch и cheerio;
- добавить user-agent;
- если карточек нет, вывести понятное сообщение;
- результат сохранить как массив объектов.

Черновик может выглядеть так:

import * as cheerio from 'cheerio';
import { writeFile } from 'node:fs/promises';

const URL = 'https://example.com/catalog';

async function loadHtml(url) {
  const response = await fetch(url, {
    headers: {
      'user-agent': 'Mozilla/5.0 data-check-script'
    }
  });

  if (!response.ok) {
    throw new Error(`Ошибка загрузки: ${response.status}`);
  }

  return response.text();
}

function parseProducts(html) {
  const $ = cheerio.load(html);
  const products = [];

  $('.product-card').each((_, element) => {
    const card = $(element);
    const title = card.find('.title').text().trim();
    const price = card.find('.price').text().trim();
    const href = card.find('a').attr('href') || '';

    if (title) {
      products.push({ title, price, href });
    }
  });

  return products;
}

async function main() {
  const html = await loadHtml(URL);
  const products = parseProducts(html);

  if (products.length === 0) {
    console.log('Карточки товаров не найдены. Проверьте селекторы.');
    return;
  }

  await writeFile('products.json', JSON.stringify(products, null, 2), 'utf-8');
  console.log(`Сохранено товаров: ${products.length}`);
}

main().catch((error) => {
  console.error(error.message);
  process.exit(1);
});

Адрес в примере условный. Перед парсингом реального сайта проверьте правила использования, частоту запросов и юридические ограничения. Нейросеть не отвечает за то, имеете ли вы право собирать конкретные данные. Она лишь помогает написать техническую часть.

Как проверить код, который сгенерировала нейросеть

Главная ошибка новичка: принять первый ответ за готовый инструмент. Я проверяю такие скрипты в пять проходов.

Первый проход, читаем код глазами. Есть ли жёстко прописанные пути, токены, адреса, имена файлов? Если есть, выносим в переменные или файл настроек. Второй проход, запускаем на маленьком наборе данных. Для CSV достаточно 10 строк: нормальная строка, пустая сумма, неверная дата, отсутствующий город, лишняя колонка. Третий проход, ломаем вход намеренно: удаляем файл, переименовываем колонку, передаём пустой файл. Скрипт должен падать понятно, а не молча создавать пустой отчёт.

Четвёртый проход, просим нейросеть сделать ревью. В SoftChat для этого можно сохранить отдельный шаблон промпта, например: «Проверь код на ошибки, безопасность, обработку пустых данных и зависимость от внешних сервисов. Не переписывай всё решение, предложи минимальные правки». Пятый проход, планируем запуск: вручную, по расписанию через системный планировщик или как часть внутреннего пайплайна. SoftChat не запускает ваши скрипты за вас, поэтому среда исполнения, секреты и расписание остаются на вашей стороне.

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

Python или JavaScript: что выбрать для автоматизации

Я выбираю язык не по моде, а по среде, где живёт задача. Если данные лежат в таблицах, чаще проще Python. Если задача связана с веб-страницей или уже есть проект на JavaScript, логичнее не добавлять второй стек.

Критерий Python JavaScript
Таблицы, CSV, Excel Обычно проще за счёт библиотек для анализа данных Можно, но часто больше служебного кода
Веб-страницы и интерфейсы Подходит для запросов и разбора HTML Удобен рядом с браузерной логикой
Быстрый одноразовый скрипт Хороший выбор для аналитика и операционного специалиста Хороший выбор для фронтенд-команды
Долгий запуск по расписанию Подходит, если настроена серверная среда Подходит, если уже используется среда Node.js
Порог чтения кода Часто ниже для задач с файлами Ниже для тех, кто привык к веб-разработке

Нейросеть может предложить оба варианта. Полезный приём: попросить сначала короткий план на двух языках, затем выбрать один и уже после этого просить полный код. Так вы не получаете два полуготовых решения вместо одного нормального.

Если задача повседневная, например раз в неделю собрать расходы из нескольких файлов или привести список контактов к одному виду, стоит посмотреть шире на нейросети и чат-боты для повседневных задач. Не каждый сценарий требует кода. Иногда достаточно правильно составленной таблицы, формулы или инструкции.

Как написать промпт для генерации и ревью кода

Я использую два отдельных промпта. Первый создаёт код, второй ищет слабые места.

Промпт для генерации:

Ты опытный разработчик автоматизаций.
Напиши рабочий скрипт на Python.

Контекст: я регулярно получаю CSV-файл с заказами и хочу делать сводный отчёт.

Вход: orders.csv, колонки order_id, created_at, status, amount, city.
Выход: report.xlsx с группировкой по city и status.

Требования:
- обработай отсутствие файла;
- проверь обязательные колонки;
- пустые суммы считай нулём;
- даты с ошибкой не должны ломать весь скрипт;
- добавь команды установки зависимостей и запуска.

Сначала дай код, затем поясни, как проверить его на тестовом файле.

Промпт для ревью:

Проверь код ниже как ревьюер автоматизаций.

Найди:
- ошибки выполнения;
- риск потери данных;
- неучтённые пустые значения;
- зависимость от формата файла;
- места, где нужен понятный текст ошибки.

Не переписывай весь скрипт. Дай список замечаний и минимальные исправления.

В SoftChat можно вести такую пару запросов в одном чате, а при необходимости переключать модель для разговора. Я иногда генерирую первый вариант одной моделью, а проверку отдаю другой. Это не магия, а обычная инженерная проверка: разные модели могут по-разному заметить пропущенную обработку ошибки или лишнюю зависимость.

Для обучения этот подход тоже работает. Если вы изучаете программирование, просите нейросеть объяснять каждую строку и задавать вам проверочные вопросы. Такой формат ближе к тьютору, чем к копированию готового ответа. Похожий принцип я разбирал в статье про нейросети в образовании и саморазвитии.

Как довести скрипт до запуска по расписанию

Когда скрипт прошёл тесты, остаётся эксплуатация. Здесь нейросеть полезна как справочник, но решение всё равно зависит от вашей инфраструктуры. Для локального компьютера можно попросить инструкцию для системного планировщика. Для сервера, команду запуска и пример логирования. Для контейнерной среды, файл конфигурации и переменные окружения.

Просите не абстрактную «инструкцию деплоя», а конкретный сценарий:

Скрипт report.py лежит в папке /opt/reports.
Он должен запускаться каждый день в 08:30.
Нужно сохранять лог в /var/log/report.log.
Дай пример настройки расписания для Linux и объясни, как проверить первый запуск.

После этого проверьте права на папки, доступ к файлам, кодировку, часовой пояс и место на диске. У автоматизаций есть неприятная особенность: они ломаются не в момент написания, а через месяц, когда поменялся формат входного файла или истёк токен доступа.

Модельный кейс: отделу из 6 человек нужно каждое утро объединять 12 CSV-файлов поставщиков в один отчёт. Нейросеть может помочь собрать скрипт чтения, нормализации колонок и записи результата, а команда проверяет правила сопоставления полей на тестовых файлах. Это не заменяет владельца процесса, зато снимает ручную склейку там, где правила уже описаны.

Что бы я сделал на вашем месте

Я бы не начинал с самого сложного сценария. Возьмите рутину, где вход и выход помещаются в один абзац: один CSV, одна папка файлов, одна HTML-страница, один отчёт. Напишите промпт с колонками, форматом результата и ограничениями по библиотекам. Получите код. Затем попросите ревью, прогоните на копии данных и сохраните финальный запрос как шаблон.

Если скрипт экономит хотя бы несколько повторяемых ручных операций в неделю, его уже стоит оформить аккуратно: понятные имена файлов, проверка входа, логирование, инструкция запуска. Нейросеть ускоряет путь к первому варианту, но надёжность появляется из тестов и дисциплины. Именно поэтому я рассматриваю ИИ не как замену разработке, а как быстрый способ превратить описанную рутину в проверяемый рабочий инструмент.