Введение
GitHub Copilot — это AI-ассистент, который встраивается в IDE и помогает писать код быстрее. Но многие разработчики используют его лишь как автодополнение, упуская более мощные сценарии: генерацию осмысленных коммитов, автоматическое code review, рефакторинг и документирование. Copilot основан на модели OpenAI Codex, обученной на миллионах репозиториев GitHub (источник: GitHub Copilot Docs). В этой подборке — 15 промтов для работы с кодом: от написания коммитов до ревью, с примерами и пояснениями.
Категория 1: Генерация и написание кода
1. Промт: «Напиши функцию на Python для парсинга CSV-файла с обработкой ошибок»
Задача: Сгенерировать готовый фрагмент кода с проверками.
Пример:
def parse_csv(file_path: str) -> list[dict]:
import csv
data = []
try:
with open(file_path, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
data.append(row)
except FileNotFoundError:
print(f'Файл {file_path} не найден')
except Exception as e:
print(f'Ошибка чтения: {e}')
return data
Результат: Copilot генерирует код с type hints и обработкой исключений.
2. Промт: «Создай API-эндпоинт на FastAPI для получения списка пользователей с пагинацией»
Задача: Получить готовый эндпоинт.
Пример:
from fastapi import FastAPI, Query
app = FastAPI()
@app.get('/users/')
async def get_users(page: int = Query(1, ge=1), limit: int = Query(10, le=100)):
users = [{'id': i, 'name': f'User{i}'} for i in range((page-1)*limit, page*limit)]
return {'page': page, 'limit': limit, 'users': users}
Вывод: Copilot понимает контекст и добавляет валидацию параметров.
3. Промт: «Напиши тест на Jest для React-компонента Button»
Задача: Сгенерировать unit-тест.
Пример:
import { render, screen, fireEvent } from '@testing-library/react';
import Button from './Button';
test('calls onClick when clicked', () => {
const handleClick = jest.fn();
render(<Button onClick={handleClick}>Click</Button>);
fireEvent.click(screen.getByText('Click'));
expect(handleClick).toHaveBeenCalledTimes(1);
});
Результат: Тест покрывает базовый сценарий.
Категория 2: Объяснение и документирование кода
4. Промт: «Объясни, что делает этот код: [вставь код]»
Задача: Получить текстовое объяснение.
Пример: Для кода map(lambda x: x**2, range(10)) Copilot ответит: «Создаёт генератор, который возводит числа от 0 до 9 в квадрат».
5. Промт: «Добавь docstring в функцию parse_csv»
Задача: Документировать существующий код.
Пример:
def parse_csv(file_path: str) -> list[dict]:
"""
Парсит CSV-файл и возвращает список словарей.
Args:
file_path (str): Путь к CSV-файлу.
Returns:
list[dict]: Данные из файла.
Raises:
FileNotFoundError: Если файл не найден.
"""
Результат: Copilot генерирует docstring в формате Google.
6. Промт: «Добавь комментарии к этому SQL-запросу: SELECT * FROM users WHERE age > 18»
Задача: Понять логику запроса.
Пример:
-- Выбрать всех пользователей старше 18 лет
SELECT * FROM users WHERE age > 18;
Вывод: Copilot создаёт краткие пояснения.
Категория 3: Code review и улучшение кода
7. Промт: «Проведи code review этого кода: [вставь код]»
Задача: Получить список проблем.
Пример: Для кода без обработки ошибок Copilot укажет: «Нет try-except, возможна ошибка при открытии файла».
8. Промт: «Найди узкие места в производительности этого цикла: for i in range(len(lst)): print(lst[i])»
Задача: Оптимизировать код.
Результат: Copilot предложит использовать for i in lst.
9. Промт: «Рефактори этот код, чтобы убрать дублирование: [вставь код]»
Задача: Улучшить структуру.
Пример: Copilot объединит повторяющиеся блоки в функцию.
Категория 4: Коммиты и сообщения
10. Промт: «Сгенерируй сообщение коммита для изменений: [diff]»
Задача: Создать осмысленный коммит.
Пример: Для diff с добавлением функции parse_csv Copilot предложит: «feat: add CSV parsing function with error handling».
11. Промт: «Напиши commit message в формате Conventional Commits: исправлен баг с обработкой пустого файла»
Задача: Получить структурированное сообщение.
Результат: «fix: handle empty CSV file and add validation».
12. Промт: «Создай шаблон PR description для нового API-эндпоинта»
Задача: Автоматизировать описание пул-реквеста.
Пример: Copilot генерирует: «## Changes\n- Added /users/ endpoint\n## Testing\n- Run curl http://localhost:8000/users/».
Категория 5: Продвинутые сценарии
13. Промт: «Напиши миграцию Alembic для добавления колонки email в таблицу users»
Задача: Создать миграцию.
Пример:
from alembic import op
import sqlalchemy as sa
def upgrade():
op.add_column('users', sa.Column('email', sa.String(255), nullable=True))
def downgrade():
op.drop_column('users', 'email')
Результат: Copilot генерирует функции upgrade/downgrade.
14. Промт: «Создай Dockerfile для Python-приложения с Poetry»
Задача: Получить готовый Dockerfile.
Пример:
FROM python:3.11-slim
WORKDIR /app
COPY pyproject.toml poetry.lock ./
RUN pip install poetry && poetry install --no-dev
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0"]
Вывод: Copilot учитывает биндинг и порт.
15. Промт: «Объясни ошибку в этом логе: [лог] и предложи исправление»
Задача: Диагностика.
Пример: Для KeyError Copilot укажет на отсутствие ключа в словаре.
Заключение
Эти 15 промтов покрывают основные сценарии: генерацию кода, ревью, коммиты и отладку. Используйте их в повседневной работе, чтобы ускорить разработку и повысить качество кода. Начните с малого — попробуйте промт для code review в своём проекте. Copilot не заменит разработчика, но сделает его продуктивнее.
Комментарии