Создавайте эффективные запросы для GitHub Copilot

Завершено

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

Например, следующие примеры представляют собой вопрос, запрос и описание задачи.

Question: How do I create a button that submits a form?

Request: Add a button that opens a modal dialog. The button should be blue with rounded corners.

Task: Build a product page that displays a product title, product image, product description, and price. Product information should be fetched from the attached ProductsList.json file. The price should be formatted as currency. The page should also include a button to add the product to the cart.

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

Что делает хороший запрос?

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

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

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

Example:

Write a function that tells me if a number is prime.

The function should take an integer and return true if the integer is prime.

The function should error if the input is not a positive integer.

Укажите конкретные примеры

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

Example:

Write a function that finds all dates in a string and returns them in an array. Dates can be formatted like:

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

Example usage:
findDates("I have a dentist appointment on 11/14/2023 and book club on 12-1-23")

Expected return: ["11/14/2023", "12-1-23"]

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

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

Пример: вместо запроса Copilot создать полную головоломку поиска слов, разделите её на этапы:

  1. Write a function to generate a 10 by 10 grid of letters
  2. Write a function to find all words in a grid of letters, given a list of valid words
  3. Write a function that uses the previous functions to generate a 10 by 10 grid containing at least 10 words
  4. Update the previous function to print the grid and 10 random words from the grid

Устранение неоднозначности

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

Плохие примеры:

  • "Что это означает?" (неясно, к чему относится «это».)
  • Исправление ошибки (не указывает, какая ошибка или как ее исправить).

Лучшие примеры:

  • "Что делает функция createUser?"
  • "Что делает код в последнем ответе?"
  • "Исправлена ошибка проверки в поле ввода электронной почты".

Рекомендации по библиотеке:

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

Укажите соответствующий контекст

Помогите Copilot понять структуру проекта и намерения, эффективно управляя средой разработки.

В интегрированной среде разработки:

  • Откройте соответствующие файлы и закройте несвязанные файлы.
  • Выделите определенные разделы кода, которые Copilot должен использовать в качестве ссылки.
  • Используйте участников чата, таких как @workspace в Visual Studio Code или @project в средах IDE JetBrains.

В «Copilot Chat»:

  • Ссылка на определенные файлы или блоки кода.
  • Вложите соответствующую документацию или спецификации.
  • Используйте четкие пути к файлам и имена функций.

Итерация и доработка

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

Стратегии итерации:

  • При использовании встроенных подсказок удалите и попробуйте снова с измененным запросом.
  • В Copilot Chat ссылайтесь на предыдущие ответы и запрашивайте конкретные изменения.
  • Развивайте частичные решения, запрашивая поэтапные улучшения.

Сохранение актуальной истории бесед

Copilot Chat использует историю чатов для понимания контекста, поэтому стратегически управляйте этой историей.

Рекомендации:

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

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

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

Факторы качества кода:

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

Note

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

Хорошие запросы:

  • Четкость: Точно опишите, что именно вам нужно.
  • Конкретные: включают сведения о макете, поведении или стиле.
  • Контекстный: ссылка на существующий код или структуру.

Итерации по запросам

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

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

Оценка и реагирование на предложения Copilot

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

Когда принимать предложения

Примите предложения Copilot в тех случаях, когда они:

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

Пример хорошего предложения для принятия:

Подсказка: Создайте функцию для проверки адресов электронной почты

Копилот предлагает:

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (typeof email !== 'string') {
        throw new Error('Email must be a string');
    }
    return emailRegex.test(email.toLowerCase());
}

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

Когда отклонять предложения

Отклоняйте предложения Copilot, когда они:

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

Пример предложения отклонить:

Задание: Создать функцию для проверки надежности пароля

Плохое предложение:

function validatePassword(password) {
    return password.length > 6;
}

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

Когда следует изменять предложения

Измените предложения Copilot, когда они:

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

Пример предложения для изменения:

Копилот предлагает:

function calculateTotal(items) {
    let total = 0;
    for (let i = 0; i < items.length; i++) {
        total += items[i].price;
    }
    return total;
}

Ваше изменение для улучшения удобочитаемости и актуальности JavaScript:

function calculateTotal(items) {
    return items.reduce((total, item) => total + item.price, 0);
}

Стратегии улучшения предложений

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

Уточните свой запрос:

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

Изменения запроса:

  • "Сделать предыдущую функцию более надежной с обработкой ошибок".
  • "Упрощение кода, который вы только что написали".
  • "Добавление типов TypeScript в предыдущую функцию".

Создавайте поэтапно:

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

Tip

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

Summary

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