Thanks to visit codestin.com
Credit goes to docs.github.com

Skip to main content

Карточка заявки: агенты GitHub Copilot

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

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

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 включает несколько агентских функций, выходящих за рамки предложения и обсуждения — они могут просматривать код, принимать действия от вашего имени и создавать приложения. Эта карта охватывает следующие опыты:

  • Copilot code review: Обзор различий в pull-запросах и метаданных по GitHub.com, подготовке обратной связи, комментариев и предложенных изменений.

  • Copilot облачный агент: асинхронный агент на GitHub.com, который может создавать ветвления, писать код и открывать pull requests в ответ на назначенные задачи. Облачный агент работает в эфемерной среде с файрволом и автоматизированным сканированием безопасности.

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

  • Copilot SDK: Программная библиотека, позволяющая разработчикам создавать собственные приложения на базе ИИ с использованием Copilot. SDK взаимодействует с Copilot CLI по JSON-RPC и поддерживает пользовательские агенты, интеграции с MCP-серверами, жизненный цикл и управление сессиями.

  • GitHub Spark (предварительный просмотр): Управляемый опыт создания приложений, при котором агент пишет код и выполняет команды в среде разработки. Spark предоставляет управляемую среду выполнения и может добавлять возможности вывода через SDK GitHub Models.

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

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

Ниже приведен глоссарий ключевых терминов, связанных с агентами GitHub Copilot:

  • Code suggestion: Конкретное изменение кода, предложенное Copilot code review в рамках обратной связи по pull-запросу. Предложения по коду представлены как предлагаемые изменения, которые можно применить несколькими кликами.

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

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

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

  • Большая языковая модель (LLM): тип нейронной сети, обученной на большом объёме текстовых данных, способной генерировать, анализировать и преобразовывать естественный язык и код. Агенты Copilot используют одну или несколько LLM для обработки контекста и получения ответов.

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

  • Межсетевой экран: Сетевой контроль, который по умолчанию включён для облачного агента, предотвращающий исходящие соединения с неавторизованными хостами, защищая от случайного или вредоносного удаления кода или данных.

  • AI credit: единица потребления для Copilot функций. Каждое использование обзора кода Copilot требует кредитов ИИ.

  • Permission prompt: Интерактивный шаг подтверждения Copilot CLI, который просит пользователя одобрить действие — например, изменение файла, выполнение команды или доступ к файлам вне текущего каталога — до того, как агент продолжит действие. Запросы на разрешения являются ключевым механизмом безопасности локального агентного выполнения.

  • Copilot SDK: Программная библиотека (@github/copilot-sdk), позволяющая разработчикам создавать собственные приложения на базе ИИ, создавая сессии, отправляя запросы и получая потоковые ответы от Copilot. SDK взаимодействует с Copilot CLI через JSON-RPC.

  • JSON-RPC: Протокол связи между SDK Copilot и Copilot CLI. SDK отправляет структурированные запросы в CLI-процесс, который отвечает за взаимодействие с моделью и выполнение инструментов.

  • Пользовательский агент (SDK): Именованный агент в SDK, имеющий собственный системный запрос, инструменты с ограничением и опциональные MCP-серверы. SDK может автоматически делегировать подагенты в зависимости от намерений пользователя.

  • Hooks (SDK): Жизненные циклы в SDK Copilot, позволяющие разработчикам вносить пользовательскую логику в определённые моменты сессии, такие как до или после использования инструмента, при начале или конце сессии, а также при ошибке.

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

  • Spark: Приложение, созданное на GitHub Spark. Sparks могут варьироваться от простых утилит до full-stack веб-приложений и могут быть развернуты в публичном интернете с настраиваемой видимостью.

  • Targeted edit: функция в GitHub Spark, позволяющая выбрать конкретный элемент в приложении и предоставить сфокусированный запрос для уточнения его стиля, содержания или поведения, а не применять глобальные изменения.

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

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

  • Автоматическая обратная связь при обзоре кода: Когда пользователь запрашивает отзыв у Copilot, он сканирует изменения кода с дополнительным релевантным контекстом и даёт обратную связь по коду. Обратная связь может включать комментарии на естественном языке и конкретные предложения кода, связанные с определёнными строками и файлами.

  • Настраиваемое руководство по обзору: Copilot обзор кода можно настроить с помощью индивидуальных инструкций — описания стиля кода и лучших практик на естественном языке — чтобы обратная связь отражала конвенции и стандарты репозитория.

  • Автономное создание pull-запросов: Облачный агент Copilot может взять задачу из проблемы, комментария к pull-запросу или Copilot Chat, создать ветвь, сгенерировать индивидуальные изменения кода и открыть pull-запрос. После создания первоначального pull-запроса агент может делать итерации, исходя из ваших отзывов и отзывов.

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

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

  • Внешние интеграции: Облачный агент может получать информацию и контекст от MCP, таких как workIQ и Microsoft 365, а также внешних приложений, таких как Microsoft Teams, Linear, Slack и Jira, позволяя командам назначать задачи и отслеживать прогресс непосредственно в рамках существующих рабочих процессов.

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

  • Создание приложений на естественном языке (Spark): GitHub Spark предлагает среду разработки, ориентированную на естественный язык, для создания и развертывания full-stack веб-приложений без необходимости вручную писать или развёртывать код. Spark предоставляет полностью управляемую среду выполнения, которая масштабируется под потребности вашего приложения.

  • Inference Capabilities (Spark): SDK Spark нативно интегрируется с GitHub Models, позволяя внедрять вывод моделей в ваше приложение. Если Spark определит, что вашему приложению нужны возможности вывода, он добавит их с помощью SDK Spark.

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

GitHub Copilot Agents можно использовать в различных сценариях в различных отраслях. Ниже приведены некоторые примеры вариантов использования:

  • Дополнительный обзор человеческого кода: Copilot обзор кода предназначен для быстрого предоставления обратной связи по коду разработчика, позволяя разработчикам быстрее подготовить код к слиянию и повысить общее качество кода.

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

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

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

  • Настройка вашей среды (CLI): Copilot CLI может запускать команды в вашем терминале для настройки локальной среды для работы над существующими проектами.

  • Поиск правильной команды (CLI): Copilot CLI может предлагать команды для выполнения задач, которые вы пытаетесь выполнить, и объяснять незнакомые команды на естественном языке.

  • Создание собственных приложений на основе искусственного интеллекта (SDK): SDK Copilot позволяет разработчикам создавать приложения, использующие Copilot для генерации кода, взаимодействия с естественным языком и автоматизации задач в собственных продуктах и рабочих процессах.

  • Многоагентная оркестрация (SDK): Используя пользовательские и субагенты, разработчики могут создавать сложные рабочие процессы, где несколько специализированных агентов совместно выполняют сложные задачи с автоматической делегацией в зависимости от намерений пользователя.

  • Расширение приложений внешними инструментами (SDK): поддержка MCP-серверов SDK позволяет разработчикам подключать свои приложения к внешним источникам данных и сервисам, расширяя круг задач их агентов.

  • Создание и развертывание веб-приложений (Spark): Вы можете использовать GitHub Spark для создания full-stack веб-приложений на естественном языке. Интегрированная среда выполнения Spark позволяет развернуть эти приложения в публичном интернете с настраиваемой видимостью на основе разрешений учетных записей GitHub.

  • Быстрое прототипирование (Spark): Spark помогает разработчикам, дизайнерам, менеджерам продукта и другим конструкторам быстро создавать прототипы идей без необходимости создавать приложения с нуля или создавать сложные макеты. Прототипы могут быть развернуты для удобства обмена или остаться неопубликованными.

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

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

Review кода Copilot — это специально разработанный продукт, который использует тщательно настроенный микс моделей, подсказок и поведения системы для обеспечения последовательной и качественной обратной связи по широкому спектру кодовых баз. Переключение моделей не поддерживается, так как изменение модели, скорее всего, будет компрометировать надежность, взаимодействие с пользователем и качество комментариев проверки. Обзор кода Copilot может использовать модели, которые не включены на странице настроек «Модели» вашей организации.

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

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

Copilot SDK взаимодействует с Copilot CLI через JSON-RPC, используя те же базовые модели и возможности. Приложения, созданные на SDK, используют те же модели, что и аутентифицированный пользователь или организация Copilot. Разработчики также могут использовать собственные API ключи (BYOK) для использования пользовательских поставщиков моделей.

GitHub Spark использует большую языковую модель для питания своего агента внутри среды разработки. Агент пишет код и запускает команды для создания вашего приложения. SDK от Spark нативно интегрируется с моделями GitHub, позволяя вашему приложению внедрять возможности вывода моделей. Для информации о моделях, используемых GitHub Models, см. Ответственное использование моделей GitHub. Spark не проверяет задания в приложении на вывод — вы должны убедиться, что ваши встроенные возможности работают как задумано.

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

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

Copilot облачный агент

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

  1. обработка подсказок: Задача, предоставляемая через проблему, комментарий к pull request или сообщение Copilot Chat, объединяется с другой релевантной контекстной информацией для формирования запроса. Этот запрос отправляется в большую языковую модель для обработки. Входные данные могут принимать форму обычного естественного языка, фрагментов кода или изображений.
  2. Анализ языковой модели: Запрос проходит через большую языковую модель — нейронную сеть, обученную на большом объёме данных. Языковая модель анализирует входный запрос, чтобы помочь агенту рассуждать о задаче и использовать необходимые инструменты.
  3. Генерация ответов: Языковая модель генерирует ответ на основе анализа запроса. Этот ответ может принимать форму предложений естественного языка и предложений кода.
  4. Форматирование вывода: После завершения первого запуска агент обновляет описание pull request-запроса с внесенными изменениями. Агент может предоставить дополнительную информацию о ресурсах, к которым не смог получить доступ, и предложить шаги по их решению. Вы можете оставить обратную связь, оставив комментарий в pull request-е или явно упомянув агента (@copilot). Затем агент повторно отправляет эту обратную связь для дальнейшего анализа и отвечает с обновленными изменениями.

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

Обзор кода Copilot

Copilot Code Review проверяет ваш код и предоставляет обратную связь, используя сочетание обработки естественного языка и машинного обучения. Этот процесс можно разделить на несколько этапов:

  1. Обработка ввода: изменения кода объединяются с другой релевантной контекстной информацией (например, заголовком и телом pull request), а также с любыми заданными инструкциями, которые были определены, чтобы сформировать запрос. Этот запрос отправляется в большую языковую модель.
  2. анализ языковой модели: Запрос проходит через Copilot языковую модель — нейронную сеть, обученную на большом объёме текстовых данных. Языковая модель анализирует входную строку.
  3. Генерация ответов: Языковая модель генерирует ответ на основе анализа входного запроса. Этот ответ может принимать форму предложений естественного языка и предложений кода.
  4. форматирование вывода: Ответ подаётся пользователю либо напрямую в поддерживаемом редакторе, либо в виде проверки pull request на GitHub.com, предоставляя обратную связь кода, связанную с конкретными строками конкретных файлов. Если Copilot предоставил предложение по коду, оно представлено как предлагаемое изменение, которое можно применить несколькими кликами.

интерфейс командной строки Copilot

Copilot CLI работает на основе сочетания обработки естественного языка и машинного обучения для понимания вашей задачи и внесения изменений в кодовую базу. Этот процесс можно разделить на несколько этапов:

  1. Обработка вводных данных: Ваши данные комбинируются с релевантной контекстной информацией для формирования запроса. Этот запрос отправляется в большую языковую модель для обработки. Входные данные могут быть в форме простого естественного языка, фрагментов кода или ссылок на файлы в терминале.
  2. Анализ языковой модели: Запрос проходит через большую языковую модель — нейронную сеть, обученную на большом объёме данных. Языковая модель анализирует входный запрос, чтобы помочь агенту рассуждать о задаче и использовать необходимые инструменты.
  3. Генерация ответов: Языковая модель генерирует ответ на основе анализа запроса. Этот ответ может принимать форму предложений на естественном языке, предложений кода, изменений файлов и выполнения команд.
  4. Форматирование выхода: Ответ отформатирован и представлен с использованием выделения синтаксиса, отступов и других функций форматирования. Агент также может выполнять команды в вашей локальной среде и создавать, редактировать или удалять файлы в вашей файловой системе для выполнения задачи. Все такие действия требуют явных подсказок разрешения.

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

пакет SDK Copilot

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

  1. Создание сессии: Приложение создаёт сессию с SDK, указывая модель, системный запрос, доступные инструменты, пользовательские агенты, MCP-серверы и хуки. SDK устанавливает JSON-RPC соединение с Copilot CLI.
  2. Подсказка: Пользовательское мнение отправляется на сессию. SDK направляет запрос (вместе с контекстом сессии) в CLI, который пересылает его в языковую модель.
  3. Выполнение агента: языковая модель формулирует задачу и может вызывать инструменты, делегировать подагенты или подключаться к MCP-серверам. Жизненный цикл запускает огонь на каждом этапе, позволяя приложению внедрять собственную логику.
  4. Потоковая передача ответов: Ответы возвращаются в приложение, которое может представлять их в любом формате, подходящем для интерфейса. SDK предоставляет структурированные события для текста, вызовов инструментов, ошибок и сигналов завершения.

GitHub Spark

GitHub Spark использует агентный подход для создания и модификации приложений. Этот процесс можно разделить на несколько этапов:

  1. обработка ввода: Запросы на ввод предварительно обрабатываются Copilot, дополняются контекстной информацией из ваших текущих входных данных Spark — включая код из текущего приложения, предыдущие запросы и любые журналы ошибок из вашей среды разработки — и отправляются крупному агенту на базе языковой модели в вашей среде разработки. Система предназначена для генерации кода на основе отправленных подсказок и не способна к разговорному взаимодействию. Английский — предпочтителенный язык для заданий.
  2. Анализ языковой модели: Запрос проходит через большую языковую модель — нейронную сеть, обученную на большом объёме текстовых данных. Языковая модель анализирует входный запрос, чтобы помочь агенту рассуждать о задаче и использовать необходимые инструменты.
  3. Выполнение агента: агент работает в вашей среде разработки, принимая запрос и дополнительный контекст, и решает, как обновлять приложение. Агент может писать код, выполнять команды и читать результаты выполнения. Все действия предпринимаются для обеспечения функционального и точного кода. Единственным выходным результатом агента является код приложения.

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

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

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

  • Пропущенные проблемы с качеством кода: Copilot может не выявлять все проблемы, присутствующие в коде, особенно если изменения крупные или сложные. Для того чтобы все релевантные проблемы были выявлены и исправлены, проверка кода Copilot должна дополняться тщательной проверкой человеческого кода.

  • ложные срабатывания: Copilot рецензии кода связаны с риском галлюцинаций — он может выявить проблемы в рецензируемом коде, которые не существуют или основаны на недопонимании кода. Комментарии, созданные при проверке кода Copilot, должны быть тщательно рассмотрены и рассмотрены перед принятием мер и внесением изменений.

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

  • Потенциальные смещения: Обучающие данные Copilot берутся из существующих репозиториев, которые могут содержать смещения и ошибки, которые инструмент может повторять. Кроме того, обзор кода Copilot может быть предвзятым в пользу определённых языков или стилей программирования, что может привести к неоптимальной или неполной обратной связи.

  • Ограниченный обхват (облачный агент): Языковая модель, используемая облачным агентом, обучена на большом объеме кода, но всё ещё имеет ограниченный охват и может не справляться с определёнными структурами кода или малоизвестными языками программирования. Для каждого языка качество предложений зависит от объёма и разнообразия обучающих данных для этого языка.

  • Неточный код (облачный агент): облачный агент может генерировать код, который кажется корректным, но может быть не совсем семантически или синтаксически корректным, либо не отражать намерения разработчика. Вам следует внимательно проверять и тестировать сгенерированный код, особенно при работе с критически важными или чувствительными приложениями.

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

  • Совпадения публичного кода (облачный агент): Облачный агент может генерировать код, который совпадает или близок к общедоступному коду, даже если политика «Предложения, совпадающие с публичным кодом» установлена как «Блокировать». Если это происходит, Copilot показывает совпадения в журналах сессий агента с ссылкой на отображение деталей сопоставленного кода.

  • Limited Scope (CLI): Языковая модель, используемая Copilot CLI, обучена на большом объеме кода, но всё ещё ограничена и может не работать с определёнными структурами кода или малоизвестными языками программирования. Для каждого языка качество предложений зависит от объёма и разнообразия обучающих данных для этого языка.

  • Неточный код (CLI): Copilot CLI может генерировать код, который кажется действительным, но может быть не совсем семантически или синтаксически корректным, либо не точно отражать намерения разработчика. Вам следует внимательно проверять и тестировать сгенерированный код, особенно при работе с критически важными или чувствительными приложениями.

  • Риски безопасности (CLI): Copilot CLI генерирует код и естественный язык на основе контекста вашей локальной среды, что при неосторожном использовании может потенциально раскрыть чувствительную информацию или уязвимости. Вам следует тщательно изучить все результаты, полученные агентом.

  • Public code matches (CLI): Copilot CLI может генерировать код, который совпадает или близко соответствует общедоступному коду, даже если политика «Предложения, совпадающие с публичным кодом» установлена на «Block».

  • Риски выполнения команды (CLI): Требуется дополнительная осторожность при запросе или разрешен Copilot ии CLI выполнить команду, особенно в отношении потенциальной разрушительности некоторых предложенных команд. Вы можете столкнуться с командами для удаления файлов или форматирования жесткого диска, что может вызвать проблемы при неправильном использовании. В конечном итоге вы несёте ответственность за команды, выполняемые Copilot CLI.

  • Наследованные ограничения (SDK): Поскольку Copilot SDK взаимодействует с Copilot CLI, приложения, построенные на SDK, наследуют те же ограничения модели, включая ограниченный охват определённых языков программирования и возможность неточной или небезопасной генерации кода.

  • Сложность пользовательских агентов (SDK): Неправильная настройка пользовательских агентов, инструментов или крючков может привести к неожиданному поведению. Разработчики отвечают за тестирование и валидацию поведения своих конфигураций пользовательских агентов.

  • MCP сервер trust (SDK): MCP-серверы, подключённые через SDK, могут предоставлять инструменты и данные из внешних источников. Разработчики должны убедиться, что подключённые MCP-серверы надёжны, так как вредоносные или неправильно настроенные серверы могут вызывать вредоносное поведение или раскрывать конфиденциальные данные.

  • BYOK вариации модели (SDK): При использовании конфигураций «принесите свой ключ» с сторонними поставщиками моделей поведение может отличаться от моделей GitHub. Разработчики отвечают за оценку безопасности и качества ответов от выбранного ими поставщика.

  • Интерпретация пользовательского намерения (Искра): Искра не всегда правильно интерпретирует ваши намерения. Всегда используйте превью, предоставленный Spark, чтобы подтвердить точное поведение в вашем приложении.

  • Ограниченный охват (Spark): Spark обучен на большом количестве кода и релевантных приложениях, но может испытывать трудности со сложными или по-настоящему новыми приложениями. Spark лучше всего работает в обычных и личных приложениях (например, инструменты продуктивности, учебные пособия, утилиты для управления жизнью), а также когда обучение естественному языку ведётся на английском.

  • Совпадения публичного кода (Spark): Spark может генерировать код, который совпадает или близок к общедоступному коду, даже если политика «Предложения, соответствующие публичному коду» установлена в «Блок». Если это происходит, Copilot не предоставит ссылки на исходный код.

  • Ограничения безопасности (Spark): Хотя среда выполнения Spark следует лучшим практикам развертывания приложений, он генерирует код вероятностно, что может привести к уязвимостям, особенно если они распространены в обучающем наборе. При создании приложений, которые управляют персональными или конфиденциальными данными, следует тщательно проверять и тестировать созданное приложение.

8. Оценки

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

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

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

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

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

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

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

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

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

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

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

Агентские функции Copilot проходили работу RAI red teaming для выявления и устранения потенциальных рисков. Мы продолжаем отслеживать эффективность и безопасность этих функций на протяжении времени. Для получения дополнительной информации смотрите Microsoft AI Red Team building future of safer AI в блоге Microsoft security.

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

Copilot облачный агент

  • Управление эскалированием привилегий: облачный агент отвечает только на взаимодействия пользователей с доступом к записи в репозитории. Рабочие процессы действий, запускаемые pull-запросами, вызванными агентом, требуют одобрения пользователя с доступом к записи перед запуском. Агент фильтрует скрытые символы, которые могут позволить пользователям скрывать вредоносные инструкции в комментариях или выдавать содержимое.
  • Ограниченные права: облачный агент имеет доступ только к репозиторию, где он создаёт pull-запрос, и не может получить доступ к другим репозиториям. Он может отправлять только на одну ветвь: существующую ветку pull request, когда запускается через @copilot, или иначе на новую copilot/ ветвь. Это означает, что Copilot не может напрямую отправить ответвление по умолчанию (например, main). Агент не имеет доступа к секретам организации или репозитория Actions — агенту передаются только секреты и переменные, специально добавленные в copilot окружение.
  • Обеспечение прослеживаемости: Коммиты облачного агента создаются Copilot, а человек, начавший задачу, отмечается как соавтор. Это облегчает идентификацию кода, сгенерированного агентом, и того, кто инициировал задачу. Коммиты облачного агента подписаны, поэтому на GitHub они отображаются как «Verified». Это даёт уверенность в том, что коммиты были сделаны облачным агентом GitHub Copilot и не изменялись. Каждое сообщение коммита содержит ссылку на журналы сессий агента. Это даёт вам постоянную ссылку с любого коммита, написанного агентом, на полные журналы сессий, чтобы вы могли понять, почему Copilot внес изменения во время проверки кода, или отследить их позже для целей аудита.
  • Межсетевой экран для предотвращения эксфильтрации данных: по умолчанию облачный агент имеет включённый межсетевой экран, чтобы предотвратить удаление кода или других конфиденциальных данных, случайно или из-за злонамеренных пользователей.
  • Автоматизированное обнаружение уязвимостей безопасности: Во время генерации кода облачный агент автоматически анализирует недавно сгенерированный код на наличие уязвимостей безопасности и пытается их устранить. Анализ проводится с помощью CodeQL (для выявления потенциальных уязвимостей и ошибок), сканирования секретов (чтобы гарантировать, что секреты не вводятся) и анализа зависимостей (для проверки известных уязвимостей в ссылочных зависимостях).

интерфейс командной строки Copilot

  • Directory-scoped access: По умолчанию Copilot CLI имеет доступ только к файлам и папкам в и ниже каталога, из которого он был вызван. Если агент хочет получить доступ к файлам вне текущей директории, он запросит разрешение.
  • Запрос на изменение файлов: Copilot CLI запрашивает разрешение перед изменением файлов. Перед выдачей разрешения следует убедиться, что он изменяет правильные файлы.
  • Разрешения на выполнение команд: Copilot CLI запрашивает разрешение перед выполнением опасных команд. Вам следует внимательно изучить эти команды, прежде чем давать разрешение на бегство.
  • Configurable permissions: Вы можете предоставить Copilot CLI специальные разрешения или все права, используя различные командные строки: например, --allow-tool=[TOOLS...], --allow-all-tools, --allow-all (или его эквивалент слэш-команды /allow-all для использования в интерактивной сессии). Дополнительные сведения см. в разделе Справочник команды GitHub Copilot CLI. Обычно, когда вы используете Copilot CLI в режиме автопилота, вы предоставляете ему полные разрешения, позволяющие выполнять задачу самостоятельно, без необходимости одобрять активность по мере выполнения задачи. Дополнительные сведения см. в разделе Позволяя GitHub Copilot CLI работать автономно.
  • Security Considerations: Для получения дополнительной информации о практиках безопасности при использовании Copilot CLI см. О GitHub Copilot CLI.

пакет SDK Copilot

  • Унаследованные системы безопасности CLI: Copilot SDK взаимодействует с Copilot CLI, наследуя её модель разрешений и системы управления безопасностью. Для выполнения инструментов и модификации файлов по-прежнему требуется соответствующие права.
  • Контроль на основе крючков: Жизненный цикл SDK (такие onPreToolUse как и onPostToolUse) позволяют разработчикам реализовывать индивидуальные проверки безопасности, аудит, логирование и рабочие процессы утверждения до и после запуска инструмента.
  • Изоляция MCP-серверов: MCP-серверы работают как отдельные процессы. Разработчики могут контролировать, какие серверы доступны за одну сессию, ограничивая область доступа к внешним инструментам.
  • Объём сессии: Каждая сессия SDK изолирована со своим контекстом, инструментами и правами. Разработчики могут контролировать, какие данные и возможности доступны в каждой сессии.
  • Ответственность BYOK: При использовании конфигураций «принесите свой ключ» запросы и ответы отправляются непосредственно к настроенному провайдеру. Разработчики отвечают за проверку политики обработки данных выбранного ими провайдера.

Обработка данных при использовании собственного провайдера модели (CLI)

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

Telemetry

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

Если включить офлайн-режим, установив COPILOT_OFFLINE переменную окружения на true, вся телеметрия отключается. В офлайн-режиме Copilot CLI делает сетевые запросы только к вашему настроенному провайдеру модели.

Аутентификация и доступность функций

Аутентификация GitHub не требуется при использовании собственного провайдера модели (BYOK). Без аутентификации GitHub следующие функции недоступны:

  • /delegate, которая передаёт сессию серверному Copilot GitHub
  • Сервер GitHub MCP
  • Поиск кода на GitHub

В офлайн-режиме также отключены веб-инструменты, такие как web_fetch и GitHub Code Search.

Нет резервного варианта для моделей, размещённых на GitHub

Если конфигурация провайдера вашей модели неверна, Copilot CLI выходит с ошибкой. Он не возвращается к моделям, размещённым на GitHub. Распространённые сбои, такие как отказ в соединении, ошибки аутентификации, не найдена модель и тайм-ауты, создают удобные сообщения с практическими рекомендациями.

GitHub Spark

  • Защита контента: В Spark есть встроенные меры защиты от вредного, ненавистного или оскорбительного контента.
  • Отчёты по контенту: Вы можете сообщать о проблемном или оскорбительном контенте через обратную связь, а также сообщать о искре как о злоупотреблении или спаме. Примеры оскорбительного контента следует сообщать [email protected] по URL искры.
  • Безопасная среда выполнения: интеграция во время выполнения Spark использует лучшие практики для веб-развертывания для обеспечения безопасных и масштабируемых развертываний.

10. Лучшие практики развертывания и внедрения агентных функций GitHub Copilot

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

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

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

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

  • Будьте осведомлены о риске чрезмерной зависимости: Чрезмерная зависимость от ИИ возникает, когда пользователи принимают некорректные или неполные результаты ИИ, главным образом потому, что ошибки в результатах ИИ трудно обнаружить. Для конечного пользователя чрезмерная зависимость может привести к снижению производительности, потере доверия, отказу от заявки, финансовым потерям, психологическому ущербу, физическому ущербу и т. д. (например, врач принимает неверные выходные данные ИИ).

  • Будьте осторожны при проектировании агентного ИИ в чувствительных областях: Пользователям следует проявлять осторожность при проектировании и/или внедрении агентных AI-приложений в чувствительных областях, где действия агентов необратимы или имеют весьма значимые последствия. Дополнительные меры предосторожности также должны быть приняты при создании автономного агентного ИИ, как подробно описано в AUTOTITLE.

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

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

  • Configure custom instructions: Вы можете настроить пользовательские инструкции, чтобы помочь Copilot понять ваш стиль и лучшие практики, повышая релевантность и качество обратной связи по отзывам.

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

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

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

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

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

  • Используйте Copilot CLI как инструмент, а не как замену: Всегда проверяйте и проверяйте команды и код, сгенерированные Copilot CLI, чтобы убедиться, что они соответствуют вашим требованиям и не содержат ошибок или проблем с безопасностью.

  • Review команды перед выполнением (CLI): Будьте особенно осторожны, когда Copilot CLI предлагает выполнять команды, особенно те, которые изменяют или удаляют файлы. В конечном итоге вы отвечаете за команды, которые позволяете агенту выполнять.

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

  • Предоставить обратную связь (CLI): Если у вас возникнут проблемы или ограничения Copilot CLI, оставьте обратную связь с помощью команды /feedback.

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

  • Аудит MCP-серверных соединений (SDK): подключайтесь только к MCP-серверам, которым доверяете. Проверьте инструменты и данные, которые предоставляет каждый сервер, и убедитесь, что они соответствуют требованиям безопасности вашего приложения.

  • Реализуйте защитные крючки (SDK): используйте жизненный цикл SDK для реализации таких ограничений, как фильтрация контента, логирование аудита и рабочие процессы одобрения инструментов в ваших приложениях.

  • Область сессий (SDK): Настраивайте каждую сессию SDK только с инструментами, агентами и правами, необходимыми для выполнения задачи. Избегайте предоставления широкого доступа, когда достаточно узкого охвата.

  • Ознакомьтесь с политикой поставщика BYOK (SDK): Если используете конфигурации «принесите свой ключ», убедитесь, что условия использования и политики обработки данных выбранного производителя соответствуют требованиям вашей организации.

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

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

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

  • Убедиться, что возможности вывода работают как задумано (Spark): Если ваше приложение Spark использует возможности вывода через SDK GitHub Models, вы отвечаете за тестирование создаваемых подсказок, чтобы убедиться, что они дают правильные результаты.

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

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

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