Skip to main content

Проектирование запросов для GitHub Copilot

Следуйте этим стратегиям, чтобы улучшить результаты Copilot.

Запрос — это запрос на GitHub Copilot. Например, вопрос, который вы задаете Copilot Chat, или фрагмент кода, который запрашивает Copilot для завершения. В дополнение к запросу Copilot использует дополнительный контекст, например код в текущем файле и журнал чата, чтобы создать ответ.

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

Запустите общий, а затем получите конкретный

При написании запроса на Copilotсначала предоставьте Copilot широкое описание цели или сценария. Затем укажите все определенные требования.

Например:

Напишите функцию, которая сообщает мне, если число является простым

Функция должна принимать целое число и возвращать значение true, если целое число является простым.

Функция должна ошибиться, если входные данные не являются положительным целым числом

Примеры

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

Например:

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

  • 05/02/24
  • 05/02/2024
  • 5/2/24
  • 5/2/2024
  • 05-02-24
  • 05-02-2024
  • 5-2-24
  • 5-2-2024

Пример:

findDates("У меня есть назначение стоматолога на 11/14/2023 и книжный клуб на 12-1-23")

Возвращает: ["11.14.2023", "12-1-23"]

Модульные тесты также могут служить примерами. Перед записью функции можно использовать Copilot для записи модульных тестов для функции. Затем можно попросить Copilot написать функцию, описанную этими модульными тестами.

Разорвать сложные задачи на более простые задачи

Если вы хотите, чтобы Copilot выполнили сложную или большую задачу, разорвите задачу на несколько простых, небольших задач.

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

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

Избегайте неоднозначности

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

  • Что делает createUser функция?
  • Что делает код в последнем ответе?

Неоднозначность также может применяться к библиотекам:

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

Указание соответствующего кода

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

Если вы используете Copilot Chat в интегрированной среде разработки, откройте файл или выделите код, на который нужно ссылаться Copilot. Вы также можете указать, какие файлы Copilot Chat должны ссылаться. Например, в VS Codeиспользуйте #file переменную или @workspace участника. Инструкции по ссылке на файлы в интегрированной среде разработки см. в разделе "Запрос вопросов GitHub Copilot в интегрированной среде разработки".

Эксперимент и итерацию

Если вы не получите нужный результат, выполните итерацию в запросе и повторите попытку.

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

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

Сохранение актуальности журнала

Copilot Chat использует журнал чата для получения контекста о запросе. Чтобы предоставить Copilot только соответствующую историю:

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

Следуйте рекомендациям по написанию кода

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

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

Tip

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

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

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

Дополнительные материалы