Привет, читатели Habr! Сегодня я хочу поделиться с вами уникальными и полезными советами о том, как за считанные минуты создать качественный README для вашего Python-проекта и стильный логотип, используя возможности ChatGPT и Midjourney.

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

Основная цель состоит в том, чтобы ChatGPT мог разобраться в коде нашего проекта и без труда составить для него README. Однако стоит учесть ограничения: GPT-4 может запомнить до 25 000 слов в диалоге, а GPT-3 — до 3 000 слов. Если вы превысите эти лимиты, ChatGPT потеряет контекст. В связи с этим, просто скопировать 100 000 строк кода и попросить ИИ составить README не получится. Вместо этого мы научимся экономить количество слов и максимально эффективно использовать возможности ИИ.

Читайте далее, и вы узнаете самые лучшие практики и секреты создания README и логотипов с помощью ИИ!

Вот проект, который был на 80% написан с помощью ИИ https://github.com/denisxab/speakerpy

Часть 1 - Создаем автоматическую документацию проекта с помощью Sphinx

Оптимальным решением для экономии слов при работе с ChatGPT является использование docstring и аннотаций аргументов в классах и функциях.

  1. Генерируем документацию проекта с помощью Sphinx

    1. Установка sphinx

      pip install sphinx sphinx_rtd_theme;
    2. Создание структуры документации sphinx

      mkdir docs
      cd docs
      #Инициализация проекта
      sphinx-quickstart
    3. Заменить содержимое файла ./docs/source/conf.py на следующее:

      import sys
      import pathlib
      
      BASE_DIR = pathlib.Path(__file__).parent.parent.parent.parent
      project = BASE_DIR.name
      
      # Добавляем проект с модулями в путь Python
      sys.path.insert(0, str(BASE_DIR / project))
      extensions = [
          "sphinx.ext.autodoc",
      ]
      templates_path = ["_templates"]
      exclude_patterns = []
      language = "ru"
      html_theme = "sphinx_rtd_theme"
      html_static_path = ["_static"]
    4. Добавить в файл ./docs/source/index.rst модули, которые должны быть включены в документацию:

      .. toctree::
         :maxdepth: 2
         :caption: Contents:
      
      .. automodule:: ИмяМодуляИлиФайла
         :members:
         :undoc-members:
         :special-members:  __init__
         :inherited-members:
         :private-members:
    5. Собираем ./docs/docs/build/html/index.html

      make html   
  2. После того как получен файл ./docs/build/html/index.html, мы можем преобразовать его в простой текст и отправить в ChatGPT.

    sudo apt install lynx
     lynx -dump ./docs/docs/build/html/index.html > /docs/docs/build/html/index.txt

Часть 2 - Обращаемся к ChatGPT для написания README

  • Начните диалог с следующим промптом:

    Запоминай весь текст который я тебе буду отправлять. Когда я напишу команду "Напиши README по тексту который ты запомнил" тебе нужно будет написать README.md в формате Markdwon по тексту который я тебе отправил ранее. Если я тебе не дал команду "Напиши README по тексту который ты запомнил", то ожидай новой части текста, а в текущий ответ напиши мне "...". Ты меня понял ?
    • После того как ChatGPT подтвердит понимание, отправляйте текст с помощью такой команды:

      Запомни этот текст:
      
      [ТЕКСТ]
    • Когда вы отправили всю необходимую информацию, используйте эту команду для создания README:

      Напиши README по тексту который ты запомни
  • Если у вас уже есть README, и вы хотите его оптимизировать на основе предоставленного текста:

    Оптимизируй это README на основание текста который ты запоминал: 
    
    [ТЕКСТ README]
  • Если вам нужно оптимизировать и дополнить существующую главу документации:

    Оптимизируй и допиши эту главу на основание прошлого ответа. В текущий ответ напиши оптимизированную главу:
    
    [ТЕКСТ Главы]
    
  • Вы можете попросить написать новую главу, основываясь на вашем тексте:

    На основание прошлых ответов, напиши главу "ПроЧтоНаписатьГлаву" 
  • Команда для продолжения предыдущего ответа с места остановки:

    Продолжи свой прошлый ответ, на том месте где ты остановился
  • Команда чтобы он придумал краткое описание для текста

    На основание текста который ты запомнил, и на основание README, напиши About о программе.  Можешь использовать смайлики GitHub. Обязательно не более 350 символов.
  • Команда чтобы он придумал промт для midjourney, с помощью которого мы создадим логотип проекта.

    На основе текста который ты запомнил, и на основании своих ответов - придумай промт(на английском языке) для midjourney чтобы он нарисовал логотип.

Скрин диалога с ChatGPT

Комментарии (3)


  1. meloAngelo
    00.00.0000 00:00

    Статья супер! Никогда не интересовался темой ИИ, но для такой рутины вообще вещь. Спасибо автору, прикольная реализация


  1. shiryaevam
    00.00.0000 00:00

    Интересно было бы узнать есть такое на ts?


    1. denisxab Автор
      00.00.0000 00:00

      Да, существуют инструменты для автоматической генерации документации TypeScript. Некоторые из них:

      1. Typedoc: это самый популярный инструмент для генерации документации TypeScript. Он может работать со многими форматами документации, включая HTML, Markdown, JSON и другие. Typedoc поддерживает многие функции TypeScript, включая интерфейсы, классы, перечисления и другие.

      2. Compodoc: это инструмент для генерации документации, который поддерживает TypeScript и Angular. Он может генерировать документацию в форматах HTML и Markdown и предоставляет подробные отчеты о структуре проекта.

      3. DocFX: это инструмент для генерации документации, который поддерживает TypeScript и другие языки. Он может генерировать документацию в различных форматах, включая HTML, Markdown, PDF и другие. DocFX поддерживает многие функции TypeScript, включая интерфейсы, классы, перечисления и другие.

      4. JSDoc: это инструмент для генерации документации JavaScript, который может также использоваться для генерации документации TypeScript. JSDoc поддерживает стандартный синтаксис комментариев TypeScript и может генерировать документацию в формате HTML.

      5. TypeDoc Markdown Theme: это тема для Typedoc, которая позволяет генерировать документацию в формате Markdown. Она может быть полезна для разработчиков, которые предпочитают формат Markdown для документации.

      Каждый из этих инструментов имеет свои преимущества и недостатки, и выбор зависит от ваших потребностей и предпочтений.