close
Skip to main content

Карта приложения: функции безопасности GitHub и качества ИИ

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

Что такое карточка приложения?

GitHub’s application and platform cards are intended to help you understand how our AI technology works, the choices application owners can make that influence application performance and behavior, and the importance of considering the whole application, including the technology, the people, and the environment. Application cards are created for AI applications and platform cards are created for AI platform services. These resources can support the development or deployment of your own applications and can be shared with users or stakeholders impacted by them.

As part of its commitment to responsible AI, GitHub adheres to Microsoft's six core principles: fairness, reliability and safety, privacy and security, inclusiveness, transparency, and accountability. These principles are embedded in the Responsible AI Standard, which guides teams in designing, building, and testing AI applications. Application and Platform Cards play a key role in operationalizing these principles by offering transparency around capabilities, intended uses, and limitations. For further insight, readers are encouraged to explore Microsoft’s Responsible AI Transparency Report and Условия GitHub.

1. Обзор

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

  • Copilot Автофикс для сканирования кода: Автоматически генерирует предложения исправлений для оповещений CodeQL на pull requests и по умолчанию ветке.
  • Общее обнаружение секретов: использует модель для выявления неструктурированных секретов в исходном коде, которые не может обнаружить детерминированное сопоставление шаблонов.
  • Генератор пользовательских шаблонов regex: использует ИИ для генерации регулярных выражений для кастомных шаблонов секретного сканирования из описаний на естественном языке.
  • GitHub Качество кода: На поверхности проблемы с качеством кода и предлагает рекомендации по исправлениям на основе LLM для pull request и стандартной ветки.

Copilot Autofix — это расширение сканирования кода, которое предоставляет пользователям целенаправленные рекомендации для устранения оповещений о сканировании кода, избегая появления новых уязвимостей безопасности. Потенциальные исправления генерируются автоматически крупными языковыми моделями (LLM) с использованием данных из кодовой базы и анализа сканирования кода. Copilot Autofix доступен для анализа CodeQL и не требует подписки на GitHub Copilot.

Пользователи сканирования кода уже могут видеть оповещения безопасности в своих pull requests. Однако разработчики часто мало обучены защищённому программированию, поэтому исправление этих оповещений требует значительных усилий. Copilot Autofix снижает барьер входа, объединяя информацию о лучших практиках с деталями кодовой базы и оповещения для предложения возможного исправления. Вместо того чтобы начать поиск информации об уязвимости, разработчик начинается с предложения кода, демонстрирующего потенциальное решение для базы кода. Разработчик оценивает потенциальное исправление, чтобы определить, является ли оно лучшим решением для базы кода и обеспечить поддержание предполагаемого поведения.

Универсальное обнаружение секретных секретов при сканировании секретов — это расширение секретного сканирования на базе искусственного интеллекта, которое выявляет неструктурированные секреты в исходном коде или других поверхностях GitHub и генерирует оповещения. Пользователи GitHub Secret Protection и GitHub Advanced Security уже могут получать уведомления о секретном сканировании на наличие партнёрских или пользовательских шаблонов в их исходном коде, но неструктурированные секреты не так просто обнаружить. Секретное сканирование использует модели для идентификации этих секретов. При обнаружении обнаружения оно отображается в «Общем» списке секретных оповещений о сканировании (во вкладке «Безопасность и безопасность качества» репозитория, организации или предприятия), чтобы сопровождающие и менеджеры по безопасности могли просмотреть оповещение и, при необходимости, удалить учетные данные или внедрить исправление. Для обычного обнаружения секретов не требуется подписка на GitHub Copilot.

Генератор регулярных выражений в Secret Scanning позволяет определять индивидуальные шаблоны секретного сканирования без знания регулярных выражений. Пользователи вводят описание на естественном языке того, что они хотят обнаружить, а также необязательные примерные строки, и генератор генерирует до трёх кандидатных регулярных выражений. Эти шаблоны затем можно проверить с помощью механизма пробного запуска перед развертыванием в виде кастомных шаблонов. Генератор регулярных выражений не требует подписки на GitHub Copilot.

GitHub Code Quality помогает пользователям повысить надёжность, поддерживаемость и общее состояние проекта, получая практическую обратную связь и предлагая автоматические исправления находок в pull requests и на стандартной ветке. При включении Code Quality выполняются два типа анализа: запросы качества CodeQL выявляют проблемы с поддерживаемостью, надёжностью или стилем кода, а анализ на основе LLM предоставляет дополнительные инсайты, выходящие за рамки детерминированных движков. Когда обнаруживается проблема с качеством, Copilot Autofix предлагает соответствующее исправление. В pull request-запросах результаты отображаются в виде комментариев, оставленных ботом github-code-quality . В стандартной ветке результаты на базе LLM отображаются в панели AI Findings во вкладке Security and quality Security.

Основным поддерживаемым языком функций безопасности ИИ в GitHub Code Security является английский.

2. Ключевые термины

Следующий список содержит глоссарий ключевых терминов, связанных с функциями AI Security в GitHub Code:

  • CodeQL: движок семантического анализа кода GitHub для выявления уязвимостей безопасности в исходном коде.
  • Copilot Autofix: функция GitHub на базе LLM, которая автоматически генерирует предложения исправлений для оповещений о сканировании кода. Copilot Autofix доступен для анализа CodeQL и не требует подписки на GitHub Copilot.
  • Большая языковая модель (LLM): тип нейронной сети, обученной на большом объёме текстовых данных, способной генерировать, анализировать и преобразовывать естественный язык и код. Copilot Autofix использует один или несколько LLM для обработки оповещений о сканировании кода и создания предложений по исправлениям.
  • Обнаружение ИИ для секретного сканирования: возможности на базе ИИ, расширяющие секретное сканирование, включая универсальное обнаружение секретов. Не требуется подписка на GitHub Copilot.
  • Общее обнаружение секретов: идентификация ИИ неструктурированных секретов (например, паролей), которые не покрыты партнёрскими или пользовательскими шаблонами. Общее обнаружение секретов использует модели для сканирования строк, похожих на пароли, в исходном коде.
  • Пользовательский паттерн: пользовательский регулярный выражение, используемое при сканировании секретов для обнаружения секретов, соответствующих определённому формату. Пользовательский генератор регулярных выражений шаблонов помогает создавать эти паттерны на основе описаний на естественном языке.
  • SARIF: формат обмена результатами статического анализа — стандартный формат, который CodeQL использует для отчёта о результатах сканирования кода, включая места оповещений и описания.
  • GitHub Качество кода: функция, которая выявляет проблемы с качеством кода и предлагает исправления на базе LLM. Code Quality сочетает запросы по качеству CodeQL с анализом на базе LLM для выявления проблем с поддерживаемостью, надёжностью и стилем.
  • Результаты ИИ: Панель управления во вкладке «Безопасность и качество где отображаются результаты качества кода на базе LLM для стандартной ветки.

3. Ключевые функции или возможности

Основные функции и возможности, описанные здесь, описывают, для чего предназначены функции GitHub Code Security AI и как они работают в поддерживаемых задачах.

  • Автоматические предложения по исправлению оповещений безопасности: Copilot Autofix автоматически генерирует предложения по изменению кода для оповещений CodeQL, которые находятся в pull requests и на ветке по умолчанию. Каждое предложение включает как предлагаемое изменение кода, так и объяснение исправления на естественном языке.
  • Alert-to-fix translation: Copilot Autofix переводит описание и местоположение оповещения о сканировании кода в практические изменения кода, которые могут устранить скрытую уязвимость безопасности. Система использует данные оповещений CodeQL в формате SARIF, окружающие фрагменты кода и текст помощи запросов для генерации соответствующих исправлений.
  • Multi-language support: Copilot Autofix поддерживает генерацию исправлений для подмножества запросов, включённых в стандартные и расширенные для безопасности наборы запросов CodeQL для C#, C/C++, Go, Java/Kotlin, Swift, JavaScript/TypeScript, Python, Ruby и Rust. Дополнительные сведения об этих наборах запросов см. в разделе Наборы запросов CodeQL.
  • Обнаружение паролей на базе искусственного интеллекта: универсальное обнаружение секретов в Secret scanning сканирует содержимое репозитория с помощью ИИ для выявления неструктурированных секретов (таких как пароли), которые не может найти детерминированное сопоставление шаблонов. Обнаруженные секреты отображаются в виде оповещений в списке оповещений о сканировании секретов во вкладке «Безопасность и безопасность качества».
  • Генерация регулярных выражений на базе ИИ: генератор регулярных выражений в Secret scanning берет описание нужного шаблона на естественном языке вместе с необязательными примерными строками и генерирует до трёх кандидатов регулярных выражений. Каждый результат включает сгенерированное ИИ простым языковым описанием, и вы можете проверить шаблоны с помощью пробного запуска перед развертыванием.
  • Обнаружение проблем с качеством кода: GitHub Code Quality выполняет запросы качества CodeQL на изменённом коде в pull requests и периодически на полном стандартном ветке. Эти запросы выявляют проблемы с поддерживаемостью, надёжностью и стилем.
  • Анализ качества кода на базе LLM: после каждого push-а в стандартную ветку LLM анализирует недавно изменённые файлы на предмет проблем с качеством, выходящих за рамки детерминированных движков. Результаты отображаются в панели с результатами ИИ .
  • Автоматические предложения по исправлению качественных результатов: Когда проблема с качеством обнаруживается любым из типов анализа, Copilot Autofix генерирует предложение по исправлению. На pull requests github-code-quality бот публикует комментарий с предложенным изменением.

4. Предполагаемое использование

Функции AI безопасности GitHub Code могут использоваться в различных сценариях в различных отраслях. Ниже приведены некоторые примеры вариантов использования:

  • Ускоренное устранение уязвимостей безопасности: Используйте Copilot Autofix для быстрой генерации предложений исправлений для оповещений CodeQL, сокращая время и опыт, необходимые для устранения проблем безопасности, выявленных при сканировании кода.
  • Снижение барьера для безопасного кодирования: Copilot Autofix помогает разработчикам с ограниченным обучением безопасному программированию. Вместо того чтобы самостоятельно исследовать уязвимости, разработчики начинают с предложения кода, демонстрирующего потенциальное решение для их кода.
  • Оптимизация проверки pull request: Когда сканирование кода находит оповещения по pull-запросу, Copilot Autofix предлагает предлагаемые исправления в строке, помогая разработчикам решать проблемы безопасности перед слиянием.
  • исправление оповещений на ветке по умолчанию: Copilot Autofix также может генерировать предложения по исправлению существующих оповещений на ветке по умолчанию, помогая командам сократить накопившиеся данные по безопасности.
  • Обнаружение утечек паролей в исходном коде: используйте универсальное обнаружение секретов для поиска неструктурированных секретов в репозиториях, которые не подпадают под паттерны сканирования партнёров и пользовательских секретов.
  • Сортировка учетных данных с контекстными оповещениями: При обнаружении пароля в списке оповещений отображается уведомление с контекстом обнаружения ИИ, что позволяет сопровождающим и менеджерам по безопасности проверить результат и принять меры.
  • Создание собственных шаблонов секретного сканирования без опыта в регулярных выражениях: используйте генератор регулярных выражений для определения пользовательских шаблонов, описывая то, что вы хотите обнаружить, на естественном языке, исключая необходимость вручную писать регулярные выражения.
  • Проверка сгенерированных паттернов до развертывания: после генерации регулярных выражений используйте механизм пробного запуска для тестирования паттернов в вашем репозитории или организации перед развертыванием их в качестве пользовательских шаблонов.
  • Выявление проблем с качеством кода в репозитории: Используйте GitHub Code Quality для выявления проблем с удобством обслуживания, надёжностью и стилем, чтобы разработчики и администраторы могли быстро расставлять приоритеты по зонам риска.
  • Ускорение исправления результатов качества кода: Copilot Autofix предлагает исправления для качественных результатов, объединяя информацию о лучших практиках с деталями кодовой базы для предложения потенциального исправления непосредственно на pull request или в панели AI findings.
  • Предоставление практической обратной связи по пулл-запросам: бот публикует комментарии с предложениями исправлений, помогая разработчикам github-code-quality решить проблемы качества перед слиянием.

5. Модели и обучающие данные

Copilot Autofix использует внутренние API Copilot GitHub, взаимодействуя с крупными языковыми моделями, которые создают как предлагаемые исправления в коде, так и пояснительный текст для этих исправлений.

Универсальное обнаружение секретов использует модели для поиска неструктурированных секретов.

Пользовательский генератор регулярных выражений шаблонов использует LLM и API GitHub Copilot для генерации регулярных выражений, соответствующих пользовательским описаниям и примерам.

Анализ GitHub Code Quality на базе LLM использует языковые модели Copilot для анализа недавно изменённых файлов на предмет проблем с качеством. Компонент качественных запросов CodeQL не использует LLM. Copilot Autofix для результатов качества кода использует тот же LLM-конвейер, что и Copilot Autofix, для сканирования кода.

Для сравнения доступных моделей для Copilot см. Сравнение моделей ИИ. Полный список поддерживаемых моделей см. AUTOTITLE. Для информации о месте размещения моделей см. AUTOTITLE. Чтобы узнать больше о данных, используемых для обучения базовых моделей, лежащих в основе GitHub безопасности и качества, см. На каких данных GitHub Copilot обучались? в разделе FAQ GitHub Copilot.

Данные, обрабатываемые Copilot Autofix, не используются для целей обучения LLM. Использование этой функции регулируется существующими условиями, связанными с GitHub Advanced Security. Для получения дополнительной информации см. Условия GitHub для дополнительных продуктов и функций.

6. Производительность

Когда Copilot Autofix включен для репозитория, оповещения о сканировании кода обрабатываются через следующий конвейер:

  1. Input processing: Когда идентифицируется оповещение о сканировании кода, GitHub собирает соответствующие данные в запрос для языковой модели. Эти данные включают:
    • Данные оповещений CodeQL в формате SARIF
    • Код из текущей версии ветки, включая короткие фрагменты по каждому источнику, погружению и любому месту, указанному в сообщении оповещения или пути потока
    • Первые ~10 строк из каждого файла были задействованы в любой из этих локаций
    • Текст помощи для запроса CodeQL, который выявил проблему
  2. Анализ языковой модели: собранный запрос отправляется в языковую модель, которая анализирует контекст оповещений, структуру кода и информацию по запросу.
  3. Генерация отклика: модель генерирует потенциальное исправление, включая как предлагаемое изменение кода, так и объяснительный текст, описывающий исправление.
  4. Форматирование вывода: предложение хранится внутри бэкенда сканирования кода и отображается в виде встроенного предложения на странице pull request или детализации оповещений. Взаимодействие пользователя не требуется, кроме включения сканирования кода на кодовой базе и создания pull-запроса.

Различия по опыту

Обнаружение секрета ИИ обрабатывает вводные данные и выводы следующим образом:

  1. Обработка ввода: Ввод ограничен текстом (обычно кодом), который пользователь проверил в репозитории. Система предоставляет этот текст модели вместе с мета-подсказкой, в которой просит модель найти неструктурированные секреты в пределах входных данных. Пользователь не взаимодействует с моделью напрямую. Для подтверждения одного результата может использоваться несколько моделей.
  2. Анализ модели: модель сканирует строки, напоминающие неструктурированные секреты, такие как пароли.
  3. Генерация отклика: Модель проверяет, что идентифицированные строки, включённые в ответ, действительно существуют во входе.
  4. Форматирование выхода: обнаруженные строки отображаются в виде уведомлений на странице секретного сканирования в отдельном списке от обычных уведомлений о секретном сканировании. Каждое оповещение отмечает, что оно было обнаружено ИИ. Для получения информации о том, как просматривать оповещения о общих секретах, смотрите Просмотр и фильтрация оповещений из секретного сканирования.

Генератор пользовательских шаблонов regex обрабатывает входные данные и производит выход следующим образом:

  1. Обработка вводных данных: пользователи вводят текстовое описание на естественном языке нужного им паттерна, а также необязательные примеры строк, которые следует сопоставить.
  2. Language model analysis: Описание и примеры отправляются в LLM через GitHub Copilot API, который генерирует регулярные выражения, соответствующие входным данным.
  3. Генерация отклика: Модель возвращает до трёх кандидатных регулярных выражений. Каждый результат включает описание на понятном языке, сгенерированное ИИ. Некоторые результаты могут быть довольно похожими, а некоторые — не совпадать со всеми экземплярами задуманного узора.
  4. Форматирование выхода: результаты отображаются в пользовательской форме определения шаблона. Когда вы нажимаете «Использовать результат», выражение и любые примеры копируются в основную форму пользовательского шаблона, где можно провести пробный запуск для проверки шаблона по всему репозиторию или организации. Дополнительные сведения см. в разделе Определение пользовательских шаблонов для проверки секретов.

GitHub Code Quality анализ, основанный на LLM обрабатывает входные данные и производит результаты следующим образом:

  1. Обработка ввода: после каждого push-а на стандартную ветку недавно изменённые файлы объединяются с другой релевантной контекстной информацией для формирования запроса. Запрос отправляется на языковую модель Copilot.
  2. Анализ языковой модели: языковая модель анализирует код на предмет удобства обслуживания, надёжности и других вопросов качества.
  3. Генерация ответов: модель генерирует ответ, который может включать предложения на естественном языке и предложения кода, связанные с определёнными строками.
  4. Форматирование выводов: Результаты отображаются в панели AI Findings во вкладке «Безопасность и безопасность». Если Code Quality предлагает предложение по коду, оно представлено как предлагаемое изменение, которое можно применить парой кликов.

Copilot Автофикс для результатов качества кода на pull requests:

  1. Обработка ввода: результаты качества кода из анализа CodeQL по pull-запросу отправляются в LLM вместе с соответствующим контекстом кода.
  2. Анализ языковой модели: LLM анализирует результат и генерирует потенциальное решение.
  3. Генерация отклика: Если LLM может сгенерировать исправление, оно порождает рекомендуемое изменение кода.
  4. Форматирование вывода: github-code-quality бот публикует комментарий к pull request-у с предложенным изменением. Пользователи также могут запрашивать генерацию автофикса для результатов на ветке по умолчанию.

7. Ограничения

Понимание ограничений функций AI в GitHub Code Security крайне важно для определения их использования в безопасных и эффективных рамках. Хотя мы призываем клиентов использовать функции GitHub Code Security AI в своих инновационных решениях или приложениях, важно отметить, что функции GitHub Code Security AI не были разработаны для всех возможных сценариев. Мы рекомендуем пользователям обращаться к Условия GitHub , а также к следующим аспектам при выборе сценария использования:

  • Недетерминированность: Copilot Автофикс использует генеративную модель, которая является недетерминированной. Даже при одинаковом оповещении и коде оно может не дать жизнеспособного предложения, или предложение может различаться в разных попытках.
  • Сложность проблемы и контекст: Некоторые оповещения по безопасности — например, те, что требуют отслеживания потока данных по сложной многофайловой кодовой базе или содержащие тонкие логические ошибки — могут быть затруднены для решения модели.
  • Размер файла: Если затронутый код находится в очень большом файле или репозитории, контекст, предоставленный LLM, может быть усечён. Когда контекст ограничен, функция не пытается исправить.
  • охват языков и фреймворков: Хотя Copilot Autofix поддерживает растущий список языков и оповещений CodeQL, он не охватывает все возможные типы или языки оповещений.
  • Операционная мощность LLM: Генерация фиксированных систем зависит от операционной мощности LLM. Если предложения нет, или если предложенное решение не проходит внутреннее тестирование, предложение не отображается.
  • Данные, ориентированные на английский: система в основном использует данные на английском языке, включая запросы, код в обучающих наборах данных LLM и тестовые случаи, используемые для внутренней оценки. Предложения могут иметь меньший процент успеха исходного кода и комментариев на других языках.
  • Синтаксические ошибки: система может предлагать исправления, которые не являются синтаксически корректными изменениями кода.
  • Ошибки расположения: система может предлагать исправления в неправильных местах. Принятие такого исправления без редактирования расположения может привести к синтаксической ошибке.
  • Семантические ошибки: система может предлагать исправления, которые являются синтаксически корректными, но изменяют семантику программы. Система не понимает намерений программиста.
  • Уязвимости безопасности и вводящие в заблуждение исправления: система может предложить исправления, которые не устраняют основную уязвимость или не вводят новые уязвимости.
  • Частичные исправления: система может предложить исправления, которые лишь частично устраняют уязвимость безопасности или лишь частично сохраняют запланированную функциональность кода.
  • Изменения зависимостей: Предлагаемые исправления могут включать добавление или обновление зависимостей программного обеспечения. Система не знает, какие версии зависимостей поддерживаются или защищены, и может предполагать сфабрикованные зависимости, опубликованные под статистически вероятными названиями. Всегда проверяйте изменения зависимостей перед слиянием.

Ограничения, специфичные для обнаружения секретов с помощью ИИ

  • Неполная отчетность: обнаружение секретов ИИ может упускать случаи внесения учетных данных в репозиторий. Обнаружение секретов с помощью ИИ со временем будет улучшаться. Вы сохраняете конечную ответственность за обеспечение безопасности кода.
  • Тестовый код: Обнаружение секретов ИИ может не обнаруживать секреты в тестовом коде. Секретное сканирование пропускает обнаружение при выполнении определённых условий, таких как:
    • Путь файла содержит «test», «mock» или «spec»
    • Расширение файла: .cs, .go``.java``.js``.kt``.php``.py``.rb``.scala, .swiftили ..ts

Ограничения, специфичные для генератора пользовательских шаблонов regex

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

Ограничения, специфичные для качества кода GitHub

  • Общие ограничения с Copilot code review: Анализ Code Quality на базе LLM использует ту же базовую языковую модель и движок анализа, что и Copilot code review. У него схожие ограничения, включая неполное обнаружение, ложноположительные результаты, точность рекомендаций кода и возможные искажения. Дополнительные сведения см. в разделе Карточка заявки: агенты GitHub Copilot.
  • Best effort autofix: Copilot Autofix for Code Quality Findings работает на основе наилучших усилий и не гарантирует генерацию исправления для каждого результата.
  • требуется проверка: Вы всегда должны просматривать предложения от Copilot Autofix и редактировать изменения по мере необходимости, прежде чем их принимать.

8. Оценки

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

Оценка производительности и качества

GitHub функции Security AI оцениваются на поддерживаемых поверхностях с помощью комбинации отраслевых стандартных бенчмарков (например, SWE-Bench) и внутренних оценочных наборов. Задачи бенчмарков берутся из публичных репозиториев с открытым исходным кодом и синтетических сценариев; Реальные пользовательские запросы или код клиента не используются без разрешения. Каждая оценка включает несколько независимых запусков для учёта недетерминированности в результатах модели. Ключевые метрики включают скорость разрешения (процент успешно выполненных задач), эффективность токенов, задержку и надёжность вызовов инструментов. Модели переоцениваются при внесении обновлений и непрерывном мониторинге в производстве с помощью уровней ошибок, задержки ответа и агрегированных моделей использования.

Методы оценки производительности и качества

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

Оценки рисков и безопасности

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

  • Ненависть и несправедливость
  • Сексуальный
  • Насилия
  • Причинение себе вреда
  • Защищаемый материал
  • Джейлбрейк
  • Уязвимость кода

Оценка данных о качестве и безопасности

Наши оценочные данные специально созданы для оценки производительности приложений ИИ в ключевых областях безопасности и качества, имитируя реальные сценарии и риски. Начнем с выявления соответствующих аспектов оценки озабоченности на основе многодисциплинарных исследований и экспертных данных. Эти проблемы превратятся в целевые цели оценки и руководство по разработке метрик оценки. Для safety мы создаём состязательные подсказки для получения нежелательных или редких ответов, которые затем оцениваются с помощью аннотаторов с помощью ИИ, обученных оценивать соответствие стандартам GitHub. Для обеспечения качества мы создаем запросы на основе рубрик, относящиеся к сценариям, включая оценку приложений и агентов для получения дополненного поколения (RAG). Наборы данных курируются из различных источников, включая синтетические и общедоступные наборы данных для имитации реальных сценариев пользователей. Используя проверенные наборы данных, оба оценочных процесса проходят итеративное уточнение и согласование с учетом человеческого фактора для обеспечения эффективности и надежности метрик. Эта методология лежит в основе повторяемых, строгих оценок, отражающих то, как клиенты используют оценки для создания более качественного ИИ.

Пользовательские оценки

GitHub использует автоматизированный тестовый жгут для постоянного мониторинга качества предложений по автофиксу Copilot. Тестовая ремня включает набор из более чем 2300 оповещений из разнообразного набора общедоступных репозиториев, где выделенный код имеет тестовое покрытие. Рекомендации по этим оповещениям тестируются, чтобы определить, сколько времени разработчику потребуется их редактировать перед добавлением в кодовую базу. Для многих тестовых оповещений можно было зафиксировать предложения, генерируемые LLM, as-is исправить оповещение при успешном прохождении всех существующих тестов CI.

GitHub проверяет эффективность предложений, объединяя все предлагаемые изменения без редактирования перед запуском сканирования кода и модульных тестов репозитория на полученном коде:

  1. Исправлено ли предупреждение о сканировании кода благодаря этому предложению?
  2. Ввели ли исправление новые оповещения о сканировании кода?
  3. Ввели ли исправления какие-либо синтаксические ошибки, которые может обнаружить сканирование?
  4. Изменило ли исправление выходные данные любого из тестов репозитория?

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

Система также проходит стресс-тестирование для проверки потенциального вреда (red teaming), а система фильтрации на LLM помогает предотвратить появление потенциально вредных намёков пользователям.

Обнаружение секретов ИИ подвергается ответственной AI Red Teaming, и GitHub продолжает отслеживать эффективность и безопасность этой функции со временем.

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

Анализ GitHub Code Quality на базе LLM использует рамку оценки обзора кода Copilot. Рекомендации Copilot Autofix для результатов качества кода следуют той же тестовой системе, что и Copilot Autofix для сканирования кода.

9. Компоненты безопасности и меры по устранению рисков

  • Human-in-the-loop review: Copilot Autofix представляет все предложения как предлагаемые изменения кода, требующие явного рассмотрения и принятия разработчиками перед применением. Разработчики должны оценивать каждое предложение и проверять, что оно поддерживает предполагаемое поведение кодовой базы.
  • Фильтрация контента: Система фильтрации на LLM обнаруживает и предотвращает потенциально вредные предположения пользователям. Система проходит стресс-тестирование с помощью красной команды для выявления потенциальных уязвимостей.
  • Внутреннее тестирование качества: предложения, не прошедшие внутреннее тестирование, не отображаются пользователям. Генерация фиксации показывается только тогда, когда система достаточно уверена в качестве предложения.
  • Opt-in/opt-out controls: Copilot Автофикс по умолчанию разрешен и включён для каждого репозитория, использующего CodeQL, но администраторы могут отключить Copilot автофикс на уровне предприятия, организации и репозитория. Дополнительные сведения см. в разделе Отключение автофикса для сканирования кода оповещений системы безопасности.
  • Нет обучения по данным клиентов: Данные, обрабатываемые Copilot Autofix, не используются для целей обучения LLM. Использование этой функции регулируется существующими условиями, связанными с GitHub Advanced Security.
  • цикл ложноположительной обратной связи: Когда пользователи закрывают общее уведомление о секретном обнаружении и отмечают причину как «ложноположительный», GitHub использует количество ложноположительных результатов для улучшения модели. GitHub не имеет доступа к самим секретным литералам.
  • Проверка при сухом запуске сгенерированных шаблонов: Сгенерированные регулярные выражения из генератора пользовательских шаблонов должны пройти этап проверки перед развертыванием. Пользователи явно импортируют результат в пользовательскую форму шаблона и тестируют его в своём репозитории или организации, чтобы убедиться, что шаблоны работают как ожидается до их использования в производстве.
  • Требуется явное действие пользователя: генератор regex не развёртает шаблоны автоматически. Пользователи должны нажать «Использовать результат », чтобы скопировать сгенерированное выражение в форму пользовательского шаблона, затем вручную сохранить и включить шаблон.
  • механизм обратной связи для качества кода: пользователи могут оставлять обратную связь по предложениям по качеству кода, используя кнопки «вверх» и «палец вниз» в комментариях бота github-code-quality, что помогает GitHub улучшить качество предложений.
  • preview-ограниченная доступность: GitHub Code Quality доступен в виде предварительного просмотра, позволяя организациям оценить функцию до более широкого внедрения.

10. Лучшие практики развертывания и внедрения функций GitHub Code Security AI

Ответственный ИИ — это общее обязательство между GitHub и его клиентами. Хотя GitHub создаёт AI-приложения, основанные на безопасности, справедливости и прозрачности, клиенты играют ключевую роль в разворачивании и ответственном использовании этих технологий в собственных условиях. Чтобы поддержать это партнерство, мы предлагаем следующие рекомендации для разработчиков развертывания и конечных пользователей, которые помогут клиентам эффективно реализовать ответственный ИИ.

  • Будьте осторожны и оценивайте результаты при использовании функций GitHub Security AI для важных решений или в чувствительных областях: Последствия — это те, которые могут оказать юридические или значительные последствия на доступ человека к образованию, трудоустройству, финансовым платформам, государственным льготам, здравоохранению, жилищному обеспечению, страхованию, юридическим платформам, либо которые могут привести к физическому, психологическому или финансовому ущербу. Конфиденциальные домены, такие как финансовые платформы, здравоохранение и жилье, требуют особого ухода из-за потенциального непропорционального влияния на различные группы людей. При использовании ИИ для принятия решений в этих областях убедитесь, что затронутые заинтересованные лица могут понять, как принимаются решения, обжаловать решения и обновить все соответствующие входные данные.
  • Оцените юридические и регуляторные аспекты: Клиентам необходимо оценивать возможные конкретные юридические и регуляторные обязательства при использовании любых платформ и решений на базе ИИ, которые могут быть неподходящими для использования в каждой отрасли или сценарии. Кроме того, платформы или решения ИИ не предназначены для и могут не использоваться способами, запрещенными в применимых условиях обслуживания и соответствующих кодексах поведения.
  • Всегда изучайте предложения перед принятием: оцените предлагаемое изменение кода, чтобы убедиться, что оно правильно исправляет уязвимость безопасности, не меняя предполагаемое поведение вашего кода. Хорошее тестирование помогает убедиться, что исправление не меняет поведение кодовой базы.
  • Проверьте, что CI-тесты проходят: После фиксации предложенного или модифицированного исправления всегда проверяйте, что непрерывное интеграционное тестирование (CI) для кодовой базы продолжается и что оповещение отображается как решено, прежде чем объединить pull request.
  • Внимательно проверяйте изменения зависимостей: если предлагаемое исправление включает изменения зависимостей, убедитесь, что добавленные или обновлённые зависимости защищены, поддерживаются ли и поддерживают задуманное поведение кодовой базы. Используйте решения для управления зависимостями, такие как API и действия по проверке зависимостей, для оценки изменений. Дополнительные сведения см. в разделе Анализ зависимостей.
  • Правильно закрывайте ложноположительные предупреждения: поскольку обнаружение секретов с помощью ИИ может генерировать больше ложных срабатываний, чем обнаружение паттернов партнёром, проверьте точность каждого оповещения. Когда вы проверяете предупреждение как ложноположительный, закройте его и отметьте причину как «ложноположительный» в интерфейсе GitHub. Эта обратная связь помогает улучшить модель.
  • Проверьте сгенерированные шаблоны regex с помощью пробного запуска: при использовании генератора пользовательских шаблонов regex всегда выполняйте пробный запуск между репрезентативными репозиториями перед развертыванием сгенерированного шаблона по всей организации.
  • Будьте конкретны в описаниях: Чтобы улучшить качество сгенерированных регулярных выражений, будьте максимально конкретны в описаниях на естественном языке и включайте разнообразные примеры строк, отражающих нужные вам паттерны.
  • Проверьте все сгенерированные шаблоны: Внимательно проанализируйте каждое сгенерированное регулярное выражение, включая описания на понятном языке, сгенерированные ИИ, и подумайте о том, чтобы изменить результаты для более полного соответствия вашим потребностям. Вы в конечном итоге несете ответственность за любые пользовательские шаблоны, которые вы решили использовать.
  • Проверяйте результаты по качеству кода перед применением исправлений: Всегда проверяйте точность и применимость результатов по качеству кода и предложений по автофиксам к вашей кодовой базе перед их принятием.
  • Оставляйте обратную связь по советам по качеству кода: используйте кнопки «палец вверх» и «палец вниз» в github-code-quality комментариях бота, чтобы улучшить инструмент и устранить любые вопросы или ограничения.
  • Выполнение контроля над человеком при необходимости: надзор за человеком является важной защитой при взаимодействии с приложениями искусственного интеллекта. В то время как мы постоянно совершенствуем наши приложения ИИ, ИИ по-прежнему может ошибаться. Созданные выходные данные могут быть неточными, неполными, предвзятыми, несоответственными или не имеющими отношения к поставленным целям. Это может произойти по различным причинам, таким как неоднозначность входных данных или ограничения базовых моделей. Поэтому пользователям следует просматривать ответы, генерируемые функциями GitHub Code Security AI, и проверять, что они соответствуют их ожиданиям и требованиям.
  • Будьте осведомлены о риске чрезмерной зависимости: Чрезмерная зависимость от ИИ возникает, когда пользователи принимают некорректные или неполные результаты ИИ, главным образом потому, что ошибки в результатах ИИ трудно обнаружить. Для конечного пользователя чрезмерная зависимость может привести к снижению производительности, потере доверия, отказу от заявки, финансовым потерям, психологическому ущербу, физическому ущербу и т. д. (например, врач принимает неверные выходные данные ИИ).
  • Будьте осторожны при проектировании агентного ИИ в чувствительных областях: Пользователям следует проявлять осторожность при проектировании и/или внедрении агентных AI-приложений в чувствительных областях, где действия агентов необратимы или имеют весьма значимые последствия. Дополнительные меры предосторожности также должны быть приняты при создании автономного агентного ИИ, как подробно описано в AUTOTITLE.
  • Enable CI тестирование на pull request: Обеспечьте непрерывное тестирование интеграции перед включением Copilot Autofix, чтобы функциональные требования были проверены после внесения исправлений разработчиками.
  • Используйте решения для управления зависимостями: Включите проверку зависимостей при pull requests, чтобы выявлять потенциально рискованные изменения зависимостей, вызванные предложениями автофикса.
  • Review review security metrics: Используйте панель обзора безопасности вашей организации, чтобы увидеть общее количество предложений по Copilot автофиксу, сгенерированных при открытых и закрытых pull requestах за определённый период времени. Дополнительные сведения см. в разделе Обзор индикаторов панели управления безопасностью.
  • Оценка ложноположительного объёма для секретного обнаружения: Оценка ложноположительного объёма и установление процессов сортировки для списка оповещений.
  • Мониторинг объёма и качества предложений по качеству кода: оценивайте объём и качество предложений по качеству кода и корректируйте их в соответствии с вашей организацией.

11. Узнайте больше о функциях GitHub Security AI

Для получения дополнительных рекомендаций по ответственному использованию функций Security AI GitHub мы рекомендуем ознакомиться со следующей документацией:

Подробнее об ответственном использовании ИИ