Как стать автором
Обновить

Шаг за шагом: Как интегрировать ChatGPT для ревью пулл-реквестов на GitHub с помощью GitHub Actions

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров11K
Всего голосов 16: ↑14 и ↓2+15
Комментарии24

Комментарии 24

Интересно, разберётся ли он в более сложной логике? Например, метод getMessage может существовать намеренно, потому что ожидается , что в будущем он будет возвращать не messageCode, а что-то другое, и он был добавлен, чтобы потом не рефакторить сотни мест использования по всему проекту?

НЛО прилетело и опубликовало эту надпись здесь

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

Принято сообщать о проблемах такого рода в личные сообщения.

Кем принято?

Мне показалось, что это намеренная очепятка, выглядело забавно)

Сколько примерно будет стоить таким образом в среднем один PR?

На один файл из примера в статье ушло 0.2 рубля. Ну и так как один файл - один запрос, можно уже для своих PRов прикинуть. Но если использовать ChatGPT 4, то стоимость возрастет в десятки раз.

Как добавить мы разобрались. А кто-то понял зачем?

PROMPT ты прошел курс "Синьор JS за 30 дней", твоя задача ревьювить пул реквесты

В стандартном Review можно уточнять дальнейшие шаги реализации.
Реализованно ли это в ChatGPT-CodeReview или он дает только первоначальные замечания по коммиту и при следующих комментах (реакциях) от юзера в PullRequest будет тишина?

В комментах нельзя пообщаться с ChatGPT. ChatGPT-CodeReview смотрит только дифф файла и не сохраняет контекст между вызовами к OpenAI. Можно в открытом пулл реквесте менять файлы и тогда ChatGPT просто заново сделает ревью.

интересно как вы ищете готовые github actions для своих нужд? не про ChatGPT а вообще? часто вижу готовые в yml файлах.

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

ChatGPT не такой глупый, он может сильно больше чем лог ошибок action.checkstyle. Все зависит от промпта. Он может по небольшим кускам кода предлагать улучшения: по производительности, по памяти, по бест практис и т.д.

Тогда надо вот что сделать !

На входе промпт на написание кода. GPT пишет код. Далее код пушится и создается ПР. GPT делает ревью кода. Из Ревью формируется новый промпт на улучшение кода.

процесс повторяется. Пока не получим идеальный код!

Такая идея самотестинга давно пришла, ещё с начала общения с чатом, но до сих пор нет более менее четких критериев оценки ревью.

В идеале - чтобы он сам писал себе тесты.

Вообще, по идее, что-то похожее реализовано в проекте AutoGPT , но когда я смотрел его последний раз он был довольно сырой ещё

Заинтересовался и попробовал. Взял тупо стартовый проект со start.spring.io

Модель gpt-3.5-turbo выдала кучу замечаний. Как разумных, так и не очень. Например:

  • .gitignore: «Файлы HELP.md, .gradle, build/ должны быть добавлены в .gitignore». Но файлы эти как раз и присутствуют в gitignore.

  • build.gradle: «Не следует указывать версию плагина 'org.springframework.boot' в файле сборки». Мне кажется, что версии плугинов всё-таки надо фиксировать.

  • build.gradle: «Версия исходной совместимости '21' в блоке java выбрана некорректно». Ну да, старый он, про JDK 21 не ведает :)

  • build.gradle: «Обратите внимание, что нет пробела между "+" и "-" операторами в строках, начинающихся с плюсов или минусов. Рекомендуется добавить пробел для улучшения читаемости кода». Этого вообще не понял. В файле вообще нет плюсов и минусов.

  • gradle-wrapper.properties, application.properties: «Представленный код является настройками Gradle Wrapper'а и не является кодом Kotlin или Java ... Если хотите сосредоточиться на проверке кода на Kotlin или Java, пожалуйста, предоставьте соответствующий код ». А что ж ты тогда .gitignore комментировал?

  • DemoApplication.java: «Разбейте код на более мелкие методы». Вот задачку задал... Разбить на более мелкие методы класс с единственным методом, содержащим одну строчку кода.

  • gradlew.bat: «Код находится в файле с расширением "bat". Хорошей практикой будет переписать этот код на Groovy-скрипт (с расширением ".gradle"), чтобы использовать его в качестве декларативной конфигурации Gradle ». Без комментариев.

Это я написал только спорные моменты. А так-то там ещё много воды. https://github.com/Timo1979-x/equipment-spring/pull/1, если кому интересно.

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

Чтобы использовать запросы к OpenAI из РФ, можно создать ключ в сервисе

Не понял к чему эти сложности, ведь обращение к OpenAI идет с серверов гитхаба, которые не в РФ. Или Вы раннеры у себя хостите?

Не все могут с легкостью оплатить OpenAI

А можно ли как то сделать чтобы он файлы не по одному оценивал, а все вместе, их связи и т.д.?

Пока нет, но возможно это появится в будущих версиях anc95/ChatGPT-CodeReview , будем следить

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории