Промпты для программиста. 30 готовых примеров для генерации

От NP_Article

ИИ-технолог

Обучение управлению ИИ с 0 до мастерского уровня

250+ уроков Начато наполнение Без инфоцыган и воды

Вы когда-нибудь чувствовали, что нейросети обещают революцию в разработке, но на деле выдают код, который стыдно показывать коллегам? Проблема часто не в модели, а в том, как мы ее просим. Качественные промпты для программиста – это не магия, а инструмент, который превращает ИИ из генератора ошибок в полезного ассистента.

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

Вы увидите, как с помощью правильных запросов можно автоматизировать рутинные задачи и ускорить сложные процессы. Внутри вы найдете:

  • Создание и переработку кода.
  • Написание тестов и документации.
  • Работу с базами данных и API.
  • Отладку и поиск уязвимостей.
  • Решение архитектурных задач.

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

Типичные ошибки при составлении запросов для ИИ в разработке

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

  1. Просить написать все приложение целиком. Нейросеть предсказуемо выдаст набор разрозненных и неработоспособных фрагментов, потому что не может удержать в контексте весь проект.
  2. Не указывать язык, фреймворк и версию. Полученный код может использовать устаревший синтаксис или функции из другой библиотеки, что приведет к часам отладки несоответствий.
  3. Слепо копировать сгенерированный код в проект. Это прямой путь к появлению уязвимостей и трудноуловимых ошибок, ведь ИИ может галлюцинировать и создавать логически неверный, хоть и синтаксически правильный код.
  4. Не предоставлять контекст и примеры. Без понимания окружающего кода (существующие функции, стили кодирования) нейросеть сгенерирует решение в вакууме, которое будет сложно интегрировать.
  5. Использовать расплывчатые формулировки вроде «сделай лучше». ИИ не понимает субъективных оценок; ему нужны четкие критерии: «уменьши вложенность», «упрости логику», «добавь обработку ошибок».
  6. Забывать про ограничения и негативные инструкции. Не указав, чего делать НЕ нужно (например, «не используй внешние библиотеки»), вы рискуете получить решение, которое не соответствует требованиям проекта.
  7. Сдаваться после первой неудачной попытки. Часто для получения нужного результата требуется несколько уточнений. Первая генерация – это черновик, а не финальный продукт. Ну, конечно, все мы ожидали, что ИИ прочтет наши мысли с первого раза.

Сравнение слабых и сильных промптов для типовых задач

Разница между бесполезным и полезным ответом от ИИ часто кроется в деталях запроса. Наглядные примеры показывают, как конкретика и контекст меняют результат кардинально.

Задача Слабый промпт (что обычно делают не так) Сильный промпт (как надо) Почему сильный промпт работает лучше
Написать SQL-запрос «Напиши SQL, чтобы достать пользователей и их заказы» «Ты – опытный SQL-разработчик. Напиши запрос для PostgreSQL. Мне нужно выбрать имена пользователей (first_name) из таблицы `users` и количество их заказов (order_count) из таблицы `orders`. Связь по `users.id` и `orders.user_id`. Включи только пользователей, у которых больше 5 заказов. Отсортируй результат по убыванию количества заказов.» Сильный промпт задает роль, указывает диалект SQL, перечисляет таблицы, поля, условия соединения (JOIN), фильтрации (WHERE/HAVING) и сортировки. Это устраняет двусмысленность и дает точный, готовый к использованию запрос.
Создать компонент React «Сделай кнопку для React» «Ты – senior frontend-разработчик. Создай функциональный компонент `Button` для React с использованием TypeScript и стилей CSS Modules. Компонент должен принимать свойства: `children` (для текста), `onClick` (обработчик клика), `variant` («primary» или «secondary» для стилизации) и `disabled` (булево значение). Сгенерируй и код компонента (.tsx), и файл стилей (.module.css).» Здесь четко определена технология (React, TS, CSS Modules), задана структура компонента (функциональный), перечислены все необходимые свойства (props) с типами и возможными значениями. Это позволяет получить компонент, готовый к интеграции.
Объяснить фрагмент кода «Объясни этот код: [вставить код]» «Ты – наставник по программированию. Объясни этот фрагмент кода на Python пошагово, как для junior-разработчика. Сконцентрируйся на цели функции, логике работы с рекурсией и на том, как работает базовый случай выхода из нее. Укажи на потенциальные проблемы, например, риск переполнения стека при большой глубине рекурсии.» Сильный запрос не просто просит объяснения, а задает целевую аудиторию (junior), указывает ключевые моменты для анализа (рекурсия, базовый случай) и просит выявить подводные камни. Результат – глубокое, а не поверхностное объяснение.
Написать функцию «Напиши функцию для валидации email» «Ты – backend-разработчик на Python. Напиши функцию `is_valid_email(email: str) -> bool`, которая проверяет корректность email-адреса. Не используй внешние библиотеки. Функция должна проверять наличие одного символа ‘@’, наличие точки в доменной части и отсутствие пробелов. Верни `True`, если email корректен, и `False` в противном случае. Добавь docstring с примерами использования.» Задана сигнатура функции с типами, перечислены конкретные правила валидации, наложено ограничение (не использовать библиотеки) и указан формат вывода (boolean) и требование к документации. Это полностью определяет ожидаемый результат.

30 готовых промптов для программиста

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

1. Генерация функции с обработкой ошибок

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

Решение: Промпт запрашивает не только основную логику, но и явное добавление блоков `try-except` (или аналогов) для конкретных типов ошибок.

Текст промпта:

*****

Ты – опытный разработчик на [укажите язык, например, «Python»]. Твоя задача – написать функцию, которая выполняет [опишите действие, например, «загружает JSON из файла по указанному пути»].

Название функции: [укажите название, например, "load_json_file"].
Аргументы: [перечислите аргументы и их типы, например, "file_path: str"].
Возвращаемое значение: [укажите тип, например, "dict или None"].

Ключевые требования:

  1. Основная логика: [опишите основную логику, например, «открыть, прочитать и распарсить JSON-файл»].
  2. Обработка ошибок: Обязательно добавь обработку для следующих ситуаций:
    • Файл не найден ([укажите тип ошибки, например, «FileNotFoundError»]). В этом случае верни None и выведи в консоль лог с уровнем ‘ERROR’.
    • Ошибка разбора JSON ([укажите тип ошибки, например, «JSONDecodeError»]). В этом случае верни None и выведи лог.
    • Любые другие исключения.
  3. Формат ответа: Предоставь только код функции без дополнительных объяснений. Добавь к функции комментарии, объясняющие логику обработки ошибок.

*****

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

2. Рефакторинг «грязного» кода

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

Решение: Промпт дает ИИ роль «архитектора кода» и просит переписать его с учетом конкретных принципов чистого кода.

Текст промпта:

*****

Ты – эксперт по качеству кода и рефакторингу. Проанализируй следующий фрагмент кода на [укажите язык, например, «JavaScript»] и перепиши его, следуя принципам чистого кода.

Исходный код:

[вставьте ваш 'грязный' код сюда]

Задачи рефакторинга:

  1. Упрости вложенность (уменьши количество вложенных if/else).
  2. Вынеси магические числа и строки в именованные константы.
  3. Разбей длинную функцию на несколько более мелких, с понятными названиями, отвечающих за одну задачу (принцип единой ответственности).
  4. Дай переменным более осмысленные имена.
  5. Не меняй публичный интерфейс (названия исходных функций и их аргументы).

Формат ответа: Сначала предоставь переписанный код. Затем, в отдельном блоке, кратко объясни, какие именно улучшения были сделаны и почему.

*****

Почему это работает: Вместо абстрактного «сделай лучше», промпт дает конкретные, измеримые инструкции (упрости вложенность, вынеси константы). Это направляет ИИ на применение лучших практик и дает предсказуемый результат по улучшению читаемости и поддерживаемости кода.

3. Объяснение сложного алгоритма или фрагмента кода

Проблема: Вы столкнулись с непонятным алгоритмом или унаследованным кодом и хотите быстро разобраться в его работе.

Решение: Запрос ставит ИИ в роль наставника, который должен объяснить код для определенного уровня подготовки (например, для новичка).

Текст промпта:

*****

Ты – опытный наставник по программированию, который умеет объяснять сложные вещи простыми словами. Объясни следующий код на [укажите язык] так, как будто ты объясняешь его junior-разработчику.

Код для анализа:

[вставьте ваш код]

Структура объяснения:

  1. Общая цель: Что этот код делает в целом? Какую бизнес-задачу он решает?
  2. Пошаговый разбор: Пройдись по коду строка за строкой или логическими блоками. Объясни, что происходит на каждом шаге.
  3. Ключевые концепции: Если в коде используются специфические структуры данных, паттерны или приемы (например, рекурсия, динамическое программирование, битовые операции), объясни их суть в контексте этого кода.
  4. Аналогия: Приведи простую аналогию из реальной жизни, которая поможет понять логику работы кода.
  5. Возможные риски: Укажи на неочевидные моменты или потенциальные проблемы (например, сложность O(n^2), отсутствие обработки крайних случаев).

*****

Почему это работает: Промпт требует структурированного ответа, который охватывает не только механику («что делает код»), но и цель («зачем он это делает») и риски. Аналогия и пошаговый разбор делают объяснение доступным для любого уровня подготовки.

4. Написание юнит-тестов для функции

Проблема: Написание тестов – рутинная, но необходимая задача. Хочется автоматизировать генерацию тестовых сценариев.

Решение: Промпт предоставляет ИИ код функции и просит сгенерировать полный набор тестов, включая проверку «счастливого пути» и крайних случаев.

Текст промпта:

*****

Ты – QA-инженер, специализирующийся на автоматизированном тестировании. Твоя задача – написать набор юнит-тестов для следующей функции на [укажите язык] с использованием фреймворка [укажите фреймворк, например, «Jest» для JS, «pytest» для Python].

Исходная функция:

[вставьте код вашей функции]

Требования к тестам:

  1. Позитивные сценарии: Проверь корректную работу функции с типичными, ожидаемыми входными данными.
  2. Крайние случаи (Edge Cases): Проверь поведение функции с граничными значениями (например, пустые строки, пустые массивы, ноль, максимальные/минимальные значения).
  3. Негативные сценарии: Проверь, как функция обрабатывает некорректные входные данные (например, неправильный тип, null/undefined). Если функция должна выбрасывать исключение, напиши тест, который это проверяет.

Формат ответа: Предоставь готовый файл с тестами, который можно сразу запустить.

*****

Почему это работает: Промпт заставляет ИИ мыслить как тестировщик, систематически покрывая разные классы входных данных. Четкое разделение на позитивные, негативные и крайние случаи гарантирует более полное тестовое покрытие, чем при простом запросе «напиши тесты».

5. Создание SQL-запроса с объединением таблиц

Проблема: Нужно составить сложный SQL-запрос с несколькими JOIN, но нет времени или желания разбираться в синтаксисе.

Решение: Промпт детально описывает структуру базы данных, необходимые поля и условия, позволяя ИИ точно сконструировать запрос.

Текст промпта:

*****

Ты – опытный аналитик данных, мастер SQL. Напиши SQL-запрос для [укажите диалект, например, «PostgreSQL»].

Контекст:
У меня есть следующие таблицы:

  • users (колонки: id, name, email)
  • orders (колонки: id, user_id, amount, created_at)
  • products (колонки: id, name, price)
  • order_items (колонки: order_id, product_id, quantity)

Задача:
Мне нужно получить отчет, содержащий имя пользователя, его email и общую сумму всех его заказов за [укажите период, например, «прошлый месяц»]. Включи в выборку только пользователей, чья общая сумма заказов превышает [укажите порог, например, «1000»]. Отсортируй результат по убыванию общей суммы.

Формат ответа: Предоставь только финальный SQL-запрос.

*****

Почему это работает: Промпт предоставляет всю необходимую информацию: структуру таблиц, отношения между ними, условия фильтрации (`WHERE`, `HAVING`) и сортировки (`ORDER BY`). Это устраняет любую двусмысленность и позволяет ИИ сгенерировать сложный, но корректный запрос с первого раза.

6. Генерация документации для кода

Проблема: Код написан, но создание документации – утомительный процесс, который часто откладывается.

Решение: Промпт автоматизирует создание документации в стандартном формате (например, JSDoc, reST, Google Style Docstrings).

Текст промпта:

*****

Ты – технический писатель, который создает образцовую документацию для кода. Твоя задача – сгенерировать документацию для следующей функции/класса на [укажите язык] в формате [укажите формат, например, «Google Style Python Docstrings» или «JSDoc»].

Код для документирования:

[вставьте ваш код без документации]

Требования к документации:

  1. Краткое описание в одно предложение: Что делает функция/класс?
  2. Подробное описание: Если необходимо, добавь более развернутое объяснение.
  3. Аргументы (Args): Опиши каждый аргумент, его тип и назначение.
  4. Возвращаемое значение (Returns): Опиши, что возвращает функция, и укажи тип.
  5. Исключения (Raises): Перечисли возможные исключения и условия, при которых они возникают.
  6. Пример использования: Добавь небольшой, но понятный пример вызова.

Формат ответа: Предоставь исходный код, но уже с добавленной в него документацией.

*****

Почему это работает: Указание конкретного, общепринятого формата документации (JSDoc, Google Style) и четкая структура требуемых секций (Args, Returns, Raises) позволяют получить стандартизированный и полезный результат, который легко читается и интегрируется с инструментами автогенерации документации.

7. Поиск уязвимостей в фрагменте кода

Проблема: Есть подозрение, что в коде могут быть скрытые уязвимости, но не хватает экспертизы для их выявления.

Решение: Промпт ставит ИИ в роль специалиста по безопасности и просит провести аудит кода на предмет распространенных уязвимостей.

Текст промпта:

*****

Ты – специалист по кибербезопасности (пентестер). Проведи анализ следующего фрагмента кода на [укажите язык, например, «PHP»] на предмет потенциальных уязвимостей.

Код для анализа:

[вставьте ваш код]

Ищи следующие типы уязвимостей:

  • SQL-инъекции.
  • Межсайтовый скриптинг (XSS).
  • Небезопасная обработка загружаемых файлов.
  • Отсутствие или слабая валидация входящих данных.
  • Раскрытие конфиденциальной информации в сообщениях об ошибках.

Формат ответа:

  1. Если уязвимости найдены, составь список. Для каждой уязвимости:
    • Укажи номер строки, где она находится.
    • Опиши суть проблемы.
    • Предложи исправленный, безопасный вариант кода.
  2. Если уязвимостей не найдено, напиши: «В данном фрагменте кода очевидных уязвимостей из перечисленных категорий не найдено.»

*****

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

8. Конвертация кода с одного языка на другой

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

Решение: Промпт дает ИИ четкую задачу по трансляции кода, указывая на необходимость использовать идиоматические конструкции целевого языка.

Текст промпта:

*****

Ты – полиглот-программист, свободно владеющий несколькими языками. Твоя задача – перевести следующий код с [укажите исходный язык, например, «Python»] на [укажите целевой язык, например, «Go»].

Исходный код на [исходный язык]:

[вставьте код]

Требования к конвертации:

  1. Сохрани всю исходную логику и поведение.
  2. Используй идиоматические конструкции и стандартные библиотеки целевого языка. Например, если в Python используется list comprehension, в Go используй соответствующий цикл for...range.
  3. Сохрани названия функций и переменных, если это возможно.
  4. Добавь краткие комментарии к тем частям кода, где логика в целевом языке реализуется принципиально иначе.

Формат ответа: Предоставь только финальный код на [целевой язык].

*****

Почему это работает: Акцент на «идиоматическом» коде заставляет ИИ не просто механически заменять синтаксис, а писать так, как написал бы опытный разработчик на целевом языке. Это улучшает читаемость и производительность сконвертированного кода.

9. Создание регулярного выражения

Проблема: Регулярные выражения мощны, но их синтаксис сложен и неочевиден. Составление «регулярки» с нуля отнимает много времени.

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

Текст промпта:

*****

Ты – эксперт по регулярным выражениям. Создай регулярное выражение (для PCRE, совместимого с [укажите язык/инструмент, например, «JavaScript»]), которое соответствует следующим правилам: [опишите правила, например, «проверяет надежность пароля»].

Правила для соответствия:

  • Длина от 8 до 32 символов.
  • Должен содержать как минимум одну строчную букву.
  • Должен содержать как минимум одну заглавную букву.
  • Должен содержать как минимум одну цифру.
  • Должен содержать как минимум один специальный символ из набора [!@#$%^&*].

Примеры строк, которые должны соответствовать:

  • [пример 1, например, "Password123!"]
  • [пример 2, например, "@MySecret1"]

Примеры строк, которые НЕ должны соответствовать:

  • [пример 3, например, "password"] (нет заглавной, цифры, спецсимвола)
  • [пример 4, например, "PASSWORD123"] (нет строчной, спецсимвола)
  • [пример 5, например, "Pass1!"] (короткий)

Формат ответа:

  1. Готовое регулярное выражение.
  2. Краткое объяснение каждой части выражения.

*****

Почему это работает: Предоставление как позитивных, так и негативных примеров – это ключевой элемент. Он устраняет двусмысленность и позволяет ИИ точно настроить выражение. Требование объяснить результат помогает проверить его корректность и научиться чему-то новому. Ирония в том, что объяснение «регулярки» иногда бывает сложнее самой «регулярки».

10. Проектирование структуры простого REST API

Проблема: Нужно спроектировать эндпоинты для новой сущности, но хочется сделать это в соответствии с лучшими практиками REST.

Решение: Промпт просит ИИ выступить в роли архитектора и описать полный набор CRUD-операций для указанной сущности.

Текст промпта:

*****

Ты – архитектор программного обеспечения, специализирующийся на проектировании RESTful API. Спроектируй эндпоинты для управления сущностью «[укажите сущность, например, ‘Статья в блоге’]».

Сущность «[сущность]» имеет следующие поля: [перечислите поля, например, "id, title, content, author_id, created_at, status ('draft', 'published')"].

Опиши следующие эндпоинты в формате таблицы:

  • Метод HTTP (GET, POST, PUT, DELETE, PATCH)
  • Путь (например, /articles)
  • Описание (что делает эндпоинт)
  • Пример тела запроса (для POST, PUT, PATCH)
  • Пример успешного ответа (код состояния и тело)

Обязательно включи эндпоинты для:

  1. Создания новой сущности.
  2. Получения списка всех сущностей (с пагинацией).
  3. Получения одной сущности по ее ID.
  4. Полного обновления сущности по ID.
  5. Частичного обновления сущности по ID (например, только смена статуса).
  6. Удаления сущности по ID.

*****

Почему это работает: Промпт запрашивает не просто список путей, а полную спецификацию с методами, примерами запросов и ответов. Это дает структурированное, готовое к реализации техническое задание, которое соответствует стандартам REST.

11. Написание скрипта для автоматизации

Проблема: Есть рутинная задача (например, бэкап файлов, обработка логов), которую хочется автоматизировать с помощью скрипта.

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

Текст промпта:

*****

Ты – DevOps-инженер, эксперт по автоматизации. Напиши скрипт на [укажите язык, например, «Bash» или «Python»], который выполняет следующую задачу: [опишите задачу, например, «архивирует логи и загружает их в облачное хранилище»].

Пошаговый алгоритм работы скрипта:

  1. Найти все файлы с расширением .log в директории [укажите путь, например, "/var/log/app"], которые старше [укажите срок, например, «7 дней»].
  2. Создать из найденных файлов один .tar.gz архив с именем в формате logs-YYYY-MM-DD.tar.gz.
  3. Скопировать созданный архив в [укажите место назначения, например, «папку /mnt/backups»].
  4. После успешного копирования удалить исходные .log файлы.
  5. Если на каком-либо шаге происходит ошибка (например, нет файлов для архивации, нет прав на запись), скрипт должен завершиться с ненулевым кодом выхода и вывести информативное сообщение об ошибке.

Формат ответа: Предоставь полный код скрипта с комментариями, объясняющими каждый шаг.

*****

Почему это работает: Декомпозиция задачи на конкретные, последовательные шаги не оставляет ИИ пространства для неверной интерпретации. Требование по обработке ошибок и завершению с кодом выхода делает скрипт более надежным и пригодным для использования в CI/CD и cron-заданиях.

12. Отладка кода по сообщению об ошибке

Проблема: В приложении возникла ошибка с непонятным сообщением и стектрейсом, и неясно, что является причиной.

Решение: Промпт предоставляет ИИ весь доступный контекст (код, сообщение об ошибке) и просит выступить в роли опытного отладчика.

Текст промпта:

*****

Ты – опытный senior-разработчик, который может диагностировать любую проблему по сообщению об ошибке. Проанализируй следующую ситуацию.

Язык программирования: [укажите язык]
Фреймворк/Библиотека: [укажите, если применимо]

Сообщение об ошибке и стектрейс:

[вставьте полное сообщение об ошибке и стектрейс]

Код, который предположительно вызвал ошибку:

[вставьте фрагмент кода, на который указывает стектрейс]

Задача:

  1. Определи наиболее вероятную причину ошибки. Объясни простыми словами, что означает это сообщение об ошибке.
  2. Предложи 2-3 возможных варианта решения проблемы.
  3. Предоставь исправленный вариант кода для наиболее вероятного решения.

*****

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

13. Оптимизация производительности функции

Проблема: Функция работает корректно, но слишком медленно, и нужно найти способ ее ускорить.

Решение: Промпт фокусирует ИИ на поиске «бутылочных горлышек» в производительности и предлагает использовать более эффективные алгоритмы или структуры данных.

Текст промпта:

*****

Ты – эксперт по оптимизации производительности. Проанализируй следующую функцию на [укажите язык] и предложи способы ее ускорения.

Медленная функция:

[вставьте код медленной функции]

Контекст: Эта функция [опишите, что она делает и в каких условиях вызывается, например, «обрабатывает массив из миллионов элементов внутри цикла»].

Задача:

  1. Найди узкие места в производительности. Объясни, почему текущая реализация неэффективна (например, высокая алгоритмическая сложность, лишние операции в цикле).
  2. Перепиши функцию, используя более эффективные подходы (например, измени алгоритм, используй более подходящие структуры данных, примени мемоизацию).
  3. Оцени алгоритмическую сложность (Big O) до и после оптимизации.

Формат ответа: Сначала оптимизированный код, затем объяснение улучшений и сравнение сложности.

*****

Почему это работает: Промпт заставляет ИИ не просто переписать код, а провести анализ производительности. Требование оценить сложность (Big O) до и после гарантирует, что предложенные изменения действительно основаны на улучшении алгоритма, а не на микрооптимизациях.

14. Создание компонента для веб-фреймворка

Проблема: Нужно создать стандартный UI-компонент (например, модальное окно, аккордеон) с соблюдением всех правил конкретного фреймворка.

Решение: Промпт детально описывает структуру, свойства (props) и поведение компонента, а также технологии, которые нужно использовать.

Текст промпта:

*****

Ты – senior frontend-разработчик. Создай переиспользуемый компонент «[название, например, ‘Accordion’]» для [укажите фреймворк, например, «Vue 3»] с использованием [укажите доп. технологии, например, «TypeScript и Composition API»].

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

Свойства (Props):

  • items: массив объектов, где каждый объект имеет поля title (строка, заголовок секции) и content (строка, cодержимое секции).
  • multiple: булево значение. Если true, можно открывать несколько секций одновременно. Если false, при открытии одной секции все остальные должны закрываться.

Поведение:

  • При клике на заголовок секции ее содержимое плавно появляется или скрывается.
  • Состояние (открыта/закрыта) каждой секции должно управляться внутри компонента.

Формат ответа: Предоставь полный код для однофайлового компонента (.vue), включая