Copilot Chat: генерация кода с помощью тестирования это инструмент генерации кода с помощью ИИ, предназначенный для создания программного кода, управляемого тестовыми случаями и требованиями пользователей. Он организует трехэтапный рабочий процесс — определяет тесты, генерирует код и проверяет, используя языковую модель (LLM) для итеративного уточнения кода до тех пор, пока все тесты не пройдут. Подход подчеркивает развитие, основанное на тестировании (TDD), чтобы обеспечить правильность и соответствие ожидаемому поведению с самого начала.
Как работает CopilotChat
- Определение тестовых случаевПользователь определяет входы, ожидаемые выходы и дополнительное описание требований, которое фиксирует предполагаемую функциональность.
- Генерация кодаLLM генерирует код на основе предоставленных тестовых случаев и описания требований.
- ВалидацияCopilot Chat запускает сгенерированный код против тестовых случаев. Если какой-либо тест не удается, он взаимодействует с LLM для уточнения кода до тех пор, пока все тесты не пройдут.
Пример потока взаимодействия
- Требование: «Создать функцию JavaScript, которая суммирует множество чисел»
- Тесты: [сумма([1,2,3]) => 6, сумма([]) => 0, сумма([-1,1]) => 0
- LLM генерирует функцию, запускается тестирование, и любой неудачный случай требует усовершенствованной реализации.
Как использовать CopilotChat
- Предоставить тестовые случаиПеречислите репрезентативные входные данные и ожидаемые результаты. Включите крайние случаи для обеспечения надежности.
- Добавить описание дополнительных требованийУточнить ограничения, ожидания производительности или руководящие принципы стиля.
- Обсуждение Generated CodeИзучите произведенный код и его соответствие тестам и описанию.
- Проверка выполнения: Запустите автоматический набор тестов для проверки правильности.
- ПовторятьЕсли тесты терпят неудачу, запросите уточнения и повторную валидацию до тех пор, пока все тесты не пройдут.
Примеры
- Пример 1: функция JavaScript для вычисления факториала для неотрицательных целых чисел с обработкой ошибок для недействительного ввода.
- Пример 2: Функция Python объединяет два сортированных списка в один сортированный список без дубликатов.
- Пример 3: Утилита TypeScript для отключения функции с настраиваемой задержкой.
- Пример 4: Метод Java для выполнения двоичного поиска на сортированном массиве.
- Пример 5: Функция Go для разбора строки CSV в структуру записи с правильной обработкой цитируемых полей.
Безопасность и лучшие практики
- Используйте хорошо проверяемые тестовые случаи, чтобы предотвратить переобучение тестовому набору.
- Проверяйте не только правильность, но и эксплуатационные характеристики и использование памяти, где это уместно.
- Избегайте утечки секретов или учетных данных в тестовых данных или сгенерированного кода.
- Помните о лицензировании и атрибуции при повторном использовании сгенерированного кода.
Основные характеристики
- Тестируемый конвейер генерации кода: определять тесты, генерировать код, проверять с итеративной доработкой
- Автоматизированный цикл проверки, который перерабатывает код до тех пор, пока все тесты не пройдут
- Поддержка нескольких языков и сред с помощью генерации на основе LLM
- Осведомленность о крайних случаях и ошибках, включенная в определения испытаний
- Интерактивная утонченность побуждает направлять код в желаемый дизайн
- Четкое разделение между требованиями и руководящими указаниями по осуществлению
- Быстрые циклы итерации для ускорения развития и обучения