Поток запроса пользователя GitHub Copilot

Завершено

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

Входящий поток:

Иллюстрация входящего потока GitHub Copilot.

Давайте рассмотрим все действия Copilot для обработки запроса пользователя в предложение кода.

1. Защита передачи запросов и сбора контекста

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

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

Одновременно Copilot собирает сведения о контексте:

  • Код до и после положения курсора, который помогает понять непосредственный контекст запроса.
  • Имя файла и тип редактируемого файла, что позволяет адаптировать предложения кода к конкретному типу файла.
  • Сведения о смежных открытых вкладках, обеспечивая соответствие созданного кода другим сегментам кода в том же проекте.
  • Сведения о структуре проекта и путях к файлам
  • Сведения о языках программирования и платформах
  • Предварительная обработка с помощью метода Fill-in-the-Middle (FIM) для рассмотрения как предыдущего, так и следующего контекста кода, эффективно расширяя понимание модели, позволяя Copilot создавать более точные и соответствующие предложения кода, используя более широкий контекст.

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

2. Фильтр прокси-сервера

После сбора контекста и создания запроса он безопасно передается прокси-серверу, размещенном в клиенте Microsoft Azure, принадлежащем GitHub. Прокси-сервер фильтрует трафик, блокируя попытки взломать запрос или управлять системой, чтобы выявить сведения о том, как модель создает предложения кода.

3. Фильтрация токсичных веществ

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

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

4. Создание кода с помощью LLM

Наконец, отфильтрованный и проанализированный запрос передается в МОДЕЛИ LLM, которые создают соответствующие предложения кода. Эти предложения основаны на понимании запроса и окружающего контекста Copilot, гарантируя, что созданный код имеет релевантный, функциональный характер и соответствует требованиям для конкретного проекта.

Исходящий поток:

Иллюстрация исходящего потока GitHub Copilot.

5. Проверка после обработки и ответа

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

  • Качество кода. Ответы проверяются на наличие распространенных ошибок или уязвимостей, таких как межсайтовые скрипты (XSS) или внедрение SQL, обеспечивая надежную и безопасную защиту созданного кода.
  • Сопоставление общедоступного кода (необязательно): при необходимости администраторы могут включить фильтр, который предотвращает возврат предложений более 150 символов, если они тесно похожи на существующий общедоступный код на GitHub. Это предотвращает предложение совпадений как исходное содержимое. Если любая часть ответа завершается сбоем этих проверок, она либо усечена или удалена.

6. Отправка предложений и запуск цикла обратной связи

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

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

7. Повторите последующие запросы

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