Код, сгенерированный ИИ

Сгенерированный ИИ код уже есть в вашей кодовой базе. Вот что с этим делать.

В каждой организации используется код, сгенерированный ИИ, в производственной среде. Это не прогноз, а вывод отчета «Состояние безопасности продуктов в 2026 году», в котором приняли участие 400 руководителей служб информационной безопасности и специалистов по безопасности приложений, и который показал 100% внедрение. В том же отчете был выявлен разрыв, определяющий текущую ситуацию: 81% этих организаций не имеют полного представления о том, где и как используется ИИ в их кодовых базах. Разработка кода с использованием ИИ опережает управление кодом, созданным с помощью ИИ, и именно в этом разрыве кроется риск.

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

Мы предоставляем контекст, который ИИ не может удержать.

SMART TS XL Перед тем как предложенные ИИ изменения вступят в силу для всего вашего портфолио, система отображает все зависимости.

УЗНАТЬ БОЛЬШЕ…

Что на самом деле означает генерация кода с помощью ИИ?

Данная категория разделилась на три отдельные области применения, которые часто путают, но которые служат разным целям:

Искусственный интеллект в качестве помощника при написании кода (автодополнение в строке) предлагает варианты кода по мере ввода. В этом режиме работают GitHub Copilot, Cursor и Tabnine. Модель видит файл в контексте и предлагает дальнейшие действия. Разработчики принимают, отклоняют или изменяют предложенные варианты непосредственно в коде. Это наиболее распространенная и долгосрочная форма автодополнения.

Программирование с использованием ИИ-менеджеров — это сдвиг, определяющий 2026 год. Инструменты, такие как Claude Code, GitHub Copilot Agent и Cursor в режиме агента, могут получать задания типа «реализовать эту функцию», «исправить эту ошибку», «рефакторизовать этот модуль», и автоматически считывать файлы, писать код, запускать тесты и итерировать процесс без пошагового руководства человека. ИИ больше не помогает в разработке. Он управляет ею, и инженеры крупнейших мировых компаний передают значительную часть своей работы агентам ИИ, которые считывают кодовые базы, выполняют команды и принимают последовательные решения.

Анализ кода с помощью ИИ позволяет выявлять ошибки, проблемы безопасности, архитектурные недостатки и нарушения стиля. Такие инструменты, как Greptile, CodeRabbit, Qodo и Cursor BugBot, оставляют контекстные комментарии к запросам на слияние. В отличие от традиционного статического анализа, они понимают замысел кода и могут выявлять проблемы, которые правила сопоставления с шаблонами могли бы пропустить. В 2026 году правильный процесс проверки кода предполагает, что ИИ будет выполнять роль первого рецензента, а люди — роль принимающих решения, сосредоточившись на архитектуре, рисках, удобстве сопровождения и оценке.

Современный набор инструментов

Помощники по кодированию на основе искусственного интеллекта

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

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

Claude Code — это агент командной строки от Anthropic, позволяющий выполнять многоэтапные инженерные задачи прямо из терминала: чтение кодовых баз, написание и редактирование файлов, запуск тестов и итерации на основе полученных результатов. Он работает без графического интерфейса, что делает его особенно подходящим для автоматизированных конвейеров и интеграции с CI/CD.

Tabnine фокусируется на обеспечении конфиденциальности при автозавершении кода, предлагая варианты развертывания как в локальной среде, так и в частном облаке. Для организаций в регулируемых отраслях, которые не могут отправлять код во внешние API, модель развертывания Tabnine часто становится решающим фактором.

Инструменты для проверки кода с использованием ИИ

ИнструментПервичный подходДля каких задач
ГрептилКонтекст, учитывающий кодовую базуВыявление архитектурных и межфайловых ошибок
КодКроликКомментарии к обзору на уровне PRКоманды, желающие автоматизировать процесс проверки запросов на слияние без предварительной записи.
КодоСоздание и проверка тестовкоманды, ориентированные на покрытие
Cursor BugBotОбзор на основе агентовКоманды, использующие курсор
SonarQubeСтатический анализ + ИИШаблоны, основанные на правилах, + метрики качества
СемгрепАнализ шаблонов и загрязненийОбзор с акцентом на безопасность
Checkmarx AssistАгентная ремедиацияПрограммы обеспечения безопасности корпоративных приложений

Вот как на практике выглядит качественный результат проверки, выполненной ИИ:

CodeRabbit PR Review -- src/api/payments.py

WARNING HIGH: Missing input validation on amount parameter (line 23)
   process_payment() accepts amount: float but does not validate
   amount > 0 before calling the payment gateway.
   AI-generated code from this PR omitted the boundary check present
   in similar functions in src/api/orders.py (line 156).
   Suggested fix: if amount <= 0: raise ValueError("Amount must be positive")

WARNING MEDIUM: Hardcoded timeout value (line 41)
   requests.post(url, timeout=30) -- timeout should come from config,
   not be hardcoded. See PAYMENT_GATEWAY_TIMEOUT in settings.py.

INFO: Inconsistent error handling pattern (lines 67-78)
   This function raises PaymentError on failure; adjacent functions in
   this module return Result[PaymentResponse, PaymentError].
   Consider aligning with the module's existing pattern.

Команды, уже использующие SonarQube, часто добавляют к нему Greptile: SonarQube обрабатывает известные шаблоны статического анализа, а Greptile выявляет контекстно-зависимые ошибки, которые статический анализ не может обнаружить.

Проблема безопасности, которую никто не предвидел.

Код, сгенерированный ИИ, вносит те же самые ошибки, что и код, созданный людьми: SQL-инъекции, отсутствие проверки входных данных, небезопасная десериализация, некорректная аутентификация, но с гораздо большим количеством таких ошибок. Если ИИ генерирует в десять раз больше запросов на слияние (pull requests), абсолютное число уязвимостей может возрасти, даже если скорость обработки одного запроса на слияние будет идентична скорости обработки кода, написанного человеком. Масштабы внедрения ИИ увеличивают существующий долг безопасности, а не уменьшают его.

Конкретные закономерности, на которые следует обращать внимание в коде, сгенерированном ИИ:

SQL-инъекции, возникающие при автозаполнении шаблонов. Модели ИИ, обученные на устаревших кодовых базах, воспроизводят устаревшие шаблоны. Модель, которая видела тысячи примеров SQL-запросов, состоящих из конкатенированных строк, будет предлагать SQL-запросы, состоящие из конкатенированных строк. Без явного указания использовать параметризованные запросы и статического анализа для обеспечения этого, сгенерированный ИИ SQL-код может систематически создавать уязвимости для инъекций в кодовой базе.

питон

# What AI often generates without explicit security prompting
def get_user(username: str) -> dict:
    query = f"SELECT * FROM users WHERE username = '{username}'"
    return db.execute(query).fetchone()
# Vulnerable to: admin'-- or admin' OR '1'='1

# What AI generates when security requirements are stated in the prompt
def get_user(username: str) -> dict:
    query = "SELECT id, email, role FROM users WHERE username = %s"
    return db.execute(query, (username,)).fetchone()
# Parameterized -- injection-proof regardless of input

Разница между этими двумя результатами заключается в одном предложении в подсказке: «используйте параметризованный запрос, чтобы предотвратить SQL-инъекции». Без него модель по умолчанию использует интерполяцию строк, поскольку в обучающих данных она обнаружила больше примеров интерполяции строк, чем параметризованных запросов.

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

Небезопасные значения по умолчанию. В коде ИИ часто устанавливаются наиболее разрешительные параметры безопасности: отключается проверка сертификатов, используются подстановочные знаки CORS, а учетные данные для разработки остаются неизменными, поскольку разрешительные значения по умолчанию позволяют коду «работать» в большем количестве контекстов, для чего и оптимизирована модель.

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

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

Языки программирования для ИИ: что на самом деле понимает модель.

Python и TypeScript: самая мощная поддержка

Python и TypeScript обладают наиболее плотным представлением обучающих данных во всех основных моделях программирования для ИИ. Эти модели понимают идиоматические шаблоны, общепринятые соглашения библиотек и лучшие практики, специфичные для конкретных фреймворков. Предложенный код на Python и TypeScript является наиболее надежным, наименее склонным к созданию ложных представлений о несуществующих API и наиболее склонным к соблюдению лучших практик безопасности.

Доминирование Python в разработке ИИ/машинного обучения делает его естественным первым языком для команд, создающих системы на базе ИИ. Его экосистема, включающая PyTorch, TensorFlow, Hugging Face, LangChain, глубоко понятна всем основным моделям программирования.

Java и C#: мощные, но многословные

Для Java и C# существует обширный набор обучающих данных из открытых кодовых баз и StackOverflow. Инструменты искусственного интеллекта генерируют функционально корректный код на обоих языках, но могут предлагать излишне многословные шаблоны. Конфигурации ORM, настройки внедрения зависимостей и шаблонный код фреймворков, которые делают Java и C# готовыми к использованию в продакшене, требуют специфического контекста, который модели иногда упускают без явного запроса.

Go, Rust и Kotlin: стремительное развитие.

Простота Go и явное управление памятью в Rust представляют собой интересные задачи для моделей искусственного интеллекта. Подсказки в Go, как правило, надежны; подсказки в Rust быстро улучшаются, но все еще требуют тщательной проверки человеком, особенно в отношении управления временем жизни и небезопасных блоков.

Устаревшие языки программирования: COBOL, RPG, PL/I

Это тот аспект, который большинство руководств по программированию для ИИ обходят стороной. Организации, использующие COBOL на мэйнфреймах, RPG на IBM i и PL/I в финансовых системах, сталкиваются со специфической проблемой программирования для ИИ, с которой универсальные модели справляются плохо. Обучающие данные для этих языков скудны по сравнению с их производственным объемом. Модели ИИ дают уверенные предположения о синтаксисе COBOL, которые грамматически правдоподобны, но семантически некорректны, или которые работают изолированно, но нарушают ограничения связности программ, с которыми они взаимодействуют.

Что еще более важно: ограничение контекстного окна означает, что модель ИИ не может одновременно хранить в памяти большой набор COBOL-кодов. Она видит программу, которую редактирует, но не видит копибуков, которые она разделяет с 300 другими программами, задание JCL, которое ее вызывает, или схему DB2, от которой она зависит. Для того чтобы ИИ мог безопасно помогать при внесении изменений в устаревший код, структурный контекст, которого ему не хватает в контекстном окне, должен поступать из слоя структурного анализа, который понимает полный граф зависимостей.

Как писать более эффективные подсказки для создания более качественного кода

Качество кода, сгенерированного ИИ, прямо пропорционально конкретности запроса. Расплывчатые запросы приводят к созданию общего кода; конкретные запросы приводят к созданию целевого, корректного кода.

Требования к безопасности необходимо указывать явно. Модели ИИ по умолчанию используют функциональный код. Запрос «Напишите функцию, которая запрашивает базу данных по идентификатору пользователя» приведет к созданию SQL-запроса, состоящего из конкатенированных строк. Запрос «Напишите функцию, которая запрашивает базу данных по идентификатору пользователя, используя параметризованные запросы для предотвращения SQL-инъекций» также приведет к созданию параметризованного SQL-запроса. Требования к безопасности должны быть четко указаны, а не предполагаться.

Вот пример решения той же задачи с использованием защитного фрейма и без него:

# Vague prompt (produces insecure code):
"Write a function to get a user from the database by username"

# Specific prompt (produces secure, production-ready code):
"Write a Python function get_user(username: str) -> Optional[UserRecord]
that queries the PostgreSQL users table using a parameterized query
to prevent SQL injection. Return None if not found. Raise DatabaseError
on connection failure. Do not SELECT * -- return only id, email, and role."

Укажите фреймворк и версию. Запрос «Написать обработчик маршрута для Express.js» даст другие результаты, чем запрос «Написать обработчик маршрута для Express 4.18, использующий async/await, проверяющий входные данные с помощью zod и возвращающий типизированные ответы». Чем точнее указан контекст фреймворка, тем меньше модели приходится гадать.

Предоставьте интерфейс, а не только задачу. Вместо «напишите функцию обработки платежей» укажите тип входных данных, тип выходных данных, условия возникновения ошибок и зависимости: «Напишите функцию на TypeScript». processPayment(amount: number, currency: 'USD'|'EUR', customerId: string): Promise<PaymentResult> Этот класс вызывает наш внутренний класс PaymentGateway и обрабатывает ошибки INSUFFICIENT_FUNDS и CARD_DECLINED.

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

Проверка кода, сгенерированного ИИ: комплекс механизмов контроля качества.

Код, сгенерированный ИИ, должен проходить ту же, а во многих случаях и более строгую проверку, что и код, написанный человеком. Аргумент об объеме применим как к качеству, так и к безопасности: если ИИ создает больше кода быстрее, то механизмы выявления проблем должны быть столь же быстрыми и более систематическими.

Статический анализ обязателен, а не необязателен. Статический анализ, сканирование SAST, сканирование зависимостей, сканирование секретов и политики, которые не предполагают предварительного доверия к коммитам, сгенерированным ИИ, являются стандартными мерами по снижению рисков, связанных с качеством кода, созданного ИИ. Это означает, что ESLint, Pylint, SonarQube, Semgrep или аналогичные инструменты должны запускаться для каждого запроса на слияние, независимо от того, был ли код написан человеком или сгенерирован ИИ.

YAML

name: AI Code Quality Gate
on: [pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Static analysis (same rules for AI and human code)
        run: |
          pip install ruff bandit
          ruff check src/           # style + quality
          bandit -r src/ -ll        # security patterns

      - name: SAST scan
        uses: semgrep/semgrep-action@v1
        with:
          config: p/owasp-top-ten p/python

      - name: Stricter gate for AI-generated PRs
        if: contains(github.event.pull_request.labels.*.name, 'ai-generated')
        run: |
          echo "AI-generated PR -- enforcing senior-engineer review requirement"
          # Blocks merge until human approval from codeowner

Проверка запросов на слияние, сгенерированных ИИ, добавляет второй уровень анализа. Запуск CodeRabbit или Greptile на запросе на слияние, сгенерированном ИИ, выявляет контекстно-зависимые проблемы, которые пропускает статический анализ, логические ошибки, отсутствующие граничные случаи, архитектурные несоответствия с остальной частью кодовой базы.

В современных агентских рабочих процессах генерация тестов параллельно с генерацией кода стала стандартом. Claude Code, GitHub Copilot Agent и аналогичные инструменты могут генерировать тесты в рамках того же рабочего процесса, что и код. Тесты следует проверять с тем же скептицизмом, что и код: тесты, сгенерированные ИИ, оптимизируются по показателям покрытия кода и могут проверять реализацию в том виде, в котором она написана, а не в соответствии со спецификацией, как это предполагалось.

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

Код ИИ в корпоративных средах: проблема контекстного окна

Окно контекста — это ограниченный объем текста, который модель может обрабатывать одновременно. По состоянию на 2026 год некоторые перспективные модели предлагают окна контекста, приближающиеся к миллиону токенов, чего достаточно для обработки небольшого сервиса от начала до конца. Окно в миллион токенов вмещает примерно четыре мегабайта текста. Реальные корпоративные монорепозитории достигают гигабайт. Для кодовых баз размером более четырех мегабайт для большинства запросов необходимы глобальный поиск по коду и интеллектуальный анализ кода.

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

Для организаций, использующих устаревшие мэйнфреймовые системы, эта проблема усугубляется. Зависимости между программами COBOL, потоками заданий JCL, схемами DB2 и современными сервисами Java не видны модели, которая может видеть только то, что помещается в ее контекстное окно. Искусственный интеллект, помогающий разработчику модифицировать программу COBOL, никак не может узнать, что предлагаемое им переименовать поле присутствует в 47 других программах через общую книгу переименований, если только эта структурная информация не предоставлена ​​извне.

Контраст между контекстно-независимым и контекстно-обогащенным запросом на изменение устаревших данных наглядно демонстрирует важность структурных знаний:

# Without structural context -- what AI sees in isolation:
"Refactor the calculateInterest paragraph in ACCTPROC.cbl
to reduce cyclomatic complexity"

# With structural context from dependency analysis:
"Refactor the calculateInterest paragraph in ACCTPROC.cbl.
Note: this paragraph is called by 14 other programs via CALL.
It shares WS-ACCT-RATE from copybook INTRATES.cpy (included by 47 programs).
The WS-COMPOUND-FLAG field used in lines 340-360 is set by ACCTINIT.cbl
before this runs -- do not move or rename it.
Do not change field names, parameter order, or RETURN-CODE values --
these are interface contracts with callers."

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

Как SMART TS XL Поддерживает разработку с использованием ИИ в корпоративных кодовых базах.

SMART TS XL обеспечивает структурный контекстный слой, необходимый инструментам программирования ИИ для безопасной работы в больших многоязычных корпоративных кодовых базах.

Когда инструмент искусственного интеллекта предлагает внести изменения в программу на языке COBOL, SMART TS XLАвтора сопоставление зависимостей приложения Предоставляет контекст зависимостей, который не может содержать контекстное окно ИИ: какие файлы копирования включает программа, какие другие программы её вызывают, какие наборы данных она производит, какие задания JCL её вызывают и в какой последовательности. Эти структурные знания являются необходимым условием для того, чтобы предложение ИИ было оценено как безопасное, а не просто локально корректное.

SMART TS XLАвтора статический анализ кода Эта система проверяет код, сгенерированный ИИ, и код, написанный человеком, с одинаковой тщательностью, вычисляя метрики качества, выявляя закономерности безопасности, помечая неиспользуемый код и измеряя сложность на всех языках программирования в среде одновременно. Для организаций, которые внедрили инструменты ИИ для программирования и теперь управляют качеством результатов, получаемых с помощью этих инструментов, такое межъязыковое измерение качества является систематической проверкой, которую невозможно обеспечить в больших масштабах при проведении разовых проверок кода.

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

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

Структура управления

Организации, которые эффективно используют программирование с применением ИИ в 2026 году, выстраивают систему управления вокруг этого процесса, а не вокруг ограничений. Эта система состоит из четырех компонентов:

Прозрачность. Знайте, где в вашей кодовой базе находится код, сгенерированный ИИ. Некоторые инструменты могут помечать коммиты, сгенерированные ИИ; другие требуют применения политик через хуки коммитов или шаблоны запросов на слияние. Без прозрачности сохраняется разрыв в 81% организаций, которые не знают, где работает ИИ.

Последовательная проверка. Применяйте к коду, сгенерированному ИИ, те же стандарты статического анализа, сканирования безопасности и проверки кода, что и к коду, написанному человеком. Не освобождайте запросы на слияние, сгенерированные ИИ, от проверок качества только потому, что они «появились от ИИ».

Стандарты структурированных подсказок. Определите методы подсказок, которые ваши команды используют для генерации кода, необходимый контекст, требования к безопасности, которые необходимо включить, и используемые фреймворки. Это контроль качества входных данных, обеспечивающий стабильное качество выходных данных.

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

Искусственный интеллект пишет код. Последствия остаются за вами.

Разработка программного обеспечения для ИИ перешла из разряда экспериментов в разряд инфраструктуры. Вопрос уже не в том, следует ли использовать инструменты генерации кода для ИИ — это решение уже принято рынком, и 100% внедрение в организациях это подтверждает. Вопрос в том, была ли создана инфраструктура управления, обеспечивающая безопасность и устойчивость разработки программного обеспечения для ИИ в масштабах предприятий, параллельно с внедрением.

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