Qu'est-il arrivé aux programmeurs qui ont demandé à ChatGPT de revoir le code ?

Les PR de révision sont une partie importante des projets open source. Pour les mainteneurs de projet, c'est une chose heureuse pour quelqu'un dans la communauté de contribuer au code, ce qui montre que leur projet a été reconnu. Les projets open source deviendront plus forts grâce aux contributions de la communauté. Pour les développeurs qui contribuent au code, la capacité de programmation a été reconnue par les projets open source, ce qui vaut également la peine d'être écrit dans leur CV. Quelle réaction chimique se produira lorsque ChatGPT sera ajouté dans le processus de révision du code ?

Notre société Second State a récemment introduit un robot PR Review basé sur ChatGPT dans le référentiel GitHub de son propre projet open source. Lorsque quelqu'un soumet un nouveau PR, le robot résumera ce que fait le PR, les risques et problèmes potentiels, et ce que fait chaque engagement dans ce PR. Pour le réviseur, cela peut considérablement augmenter la vitesse de révision des relations publiques. Plus important encore, ChatGPT peut également trouver des problèmes potentiels dans le code et fournir un moyen plus efficace d'écrire du code. Regardons un exemple réel ci-dessous.

Jetez un oeil au code ci-dessous, voyez-vous des problèmes?

    let limit = (n as f64).sqrt() as i32;
    for a in 2..limit {
        if n % a == 0 {
            return JsValue::Bool(false);
        }
    }

Ce code vérifie si un entier positif donné est premier nou non. Parmi eux, la variable limitest initialisée npour convertir la racine carrée de en un entier, ce qui peut effectivement réduire la quantité de calcul. Ensuite, utilisez forune boucle pour tester limitchacun des nombres de 2 à s'ils sont des facteurs nde . Si nest divisible par l'un de ces nombres, alors nn'est pas premier et le code renverra false. Inversement, si le code traverse toutes les boucles avec succès, alors nest premier et renverra true. Ce code semble appartenir au langage Rust, mais JsValueest l'un des types qui échangent des données entre Rust et JavaScript, il peut donc être utilisé pour intégrer ce code Rust dans JavaScript.

Déclaration, le texte d'explication du code ci-dessus est généré par ChatGPT.

En termes simples, si le nombre donné est 1927, ce code va d'abord raciner 1927 pour obtenir le résultat 43, puis commencer à diviser par les entiers de 2 à 43 dans une boucle, jusqu'à ce que 43 se termine. Parmi tous les nombres de 2 à 43, s'il existe un nombre qui peut être divisé en parts égales, alors 1927 n'est pas un nombre premier, sinon, alors 1927 est un nombre premier.

Y a-t-il un problème trouvé ici ? Ce code commence par un entier positif n au début, ce qui a amélioré l'efficacité.

Voyons ensuite à quoi ressemble la revue ChatGPT, les résultats suivants de la revue ChatGPT sont basés sur GPT4.

Comme mentionné précédemment, nous avons déployé un robot PR Review basé sur ChatGPT dans le dépôt principal de Second State. Après le déploiement de ce robot, si quelqu'un soulève un nouveau PR, le robot résumera et révisera automatiquement le PR. Les PR précédents peuvent également déclencher le robot pour travailler avec des mots-clés définis par vous-même.

Nous avons essayé un PR précédent et avons laissé ChatGPT le résumer et l'examiner. ChatGPT a mentionné le passage suivant dans Problèmes potentiels :

La check_primefonction peut être optimisée davantage, car elle vérifie la divisibilité avec des nombres pairs après 2, ce qui n'est pas nécessaire.

GPT4 indique que check_primela fonction peut être mieux optimisée car il n'est pas nécessaire de rechercher un nombre pair après 2. En voyant cela, réalisez-vous soudainement que vous voulez vous tapoter les cuisses ? Il n'est plus divisible par 2, il n'est donc pas nécessaire d'essayer des nombres pairs tels que 4 6 8 10, car il n'est certainement pas non plus divisible. Économisez la moitié de la charge de travail ! Excellent doit toujours être ChatGPT, qui est un endroit que même les gens ont tendance à négliger. Bien sûr, vous pouvez continuer à optimiser le long de cette ligne de pensée.Tous les multiples de nombres premiers trouvés dans ce cycle (tels que les multiples de 3, les multiples de 5) n'ont pas besoin d'être testés ci-dessous. ChatGPT peut également vous aider à écrire cet algorithme général.

L'exemple ci-dessus est extrait de l'examen des relations publiques de ChatGPT sur le projet WasmEdge-quickjs : https://github.com/second-state/wasmedge-quickjs/pull/82 ChatGPT a également fait de nombreux commentaires constructifs, et ce PR n'a pas changé. Vous pouvez vérifier le code modifié et ChatGPT Review par vous-même.

ChatGPT a également une bonne performance dans les PR complexes.Ce PR a 56 commits. Cliquez sur le lien ci-dessous pour vérifier les détails de l'examen. https://github.com/WasmEdge/WasmEdge/pull/2314#issuecomment-1497861516

A travers l'exemple ci-dessus, nous pouvons maintenant répondre à la question posée par le titre de l'article : qu'est-il arrivé aux programmeurs qui ont demandé à ChatGPT de revoir le code ? La réponse est que ChatGPT peut permettre aux programmeurs de faire en sorte que les logiciels mangent le monde mieux et plus rapidement .

En voyant cela, vous devez avoir une question, comment installer un tel robot dans votre GitHub Repo, afin que ChatGPT puisse améliorer votre capacité de code ? Ce qui suit est un tutoriel étape par étape pour vous apprendre à lancer votre propre robot ChatGPT Review en 5 minutes.

Déployez votre propre bot ChatGPT Review

Tout d'abord, nous devons utiliser la plate-forme flows.network, qui est une plate-forme d'automatisation des flux de travail qui connecte les grands modèles d'IA et le SaaS du monde réel. L'un des avantages de son utilisation est que vous n'avez pas besoin de configurer un serveur (sans serveur) ou de faire Oauth vous-même, il vous suffit d'écrire le code de l'entreprise et de le télécharger ! flows.nework a une interface très conviviale.

La première étape consiste à bifurquer le référentiel github-pr-summary de flows.network. Ceci est open source, et vous pouvez également personnaliser l'invite dans le code en fonction de vos propres besoins, voir ci-dessous pour plus de détails. Ici, nous allons vous présenter comment déployer votre propre robot sous la forme d'aucun code.

Adresse de dépôt : https://github.com/flows-network/github-pr-summary/

Après le fork, vous pouvez accéder directement à flows.network pour déployer.

Tout d'abord, vous devez avoir un compte sur flows.network.Vous pouvez vous connecter directement avec votre compte github sans aucun frais.

Cliquez ensuite sur le bouton Créer un flux pour créer un nouveau flux. Ensuite, importez le référentiel que vous venez de créer dans l'interface utilisateur.

Cliquez ensuite sur avancé pour configurer les variables d'environnement afin que flows.network sache sur quel référentiel github vous souhaitez déployer ce robot, quelle est la clé API OpenAI et quel mot peut réveiller cette fonction.

  • login: Renseignez votre compte github personnel. Lors de la publication d'un avis, ce robot jouera votre rôle d'avis.
  • owner: Renseignez à quelle organisation appartient le référentiel Github auquel vous souhaitez déployer le robot.
  • repo: Renseignez le nom du référentiel Github sur lequel vous souhaitez déployer le robot.
  • openai_key_name: Renseignez le nom que vous voulez donner à la clé OpenAI, nous l'utiliserons directement plus tard.
  • trigger_phrase: Remplissez les mots que vous souhaitez déclencher ce robot.

Après avoir entré ces variables d'environnement, il est temps d'appuyer sur le bouton de déploiement. À ce stade, flows.network créera automatiquement votre fonction. À l'avenir, si votre dépôt a un nouveau commit, flows.network le créera et le déploiera également automatiquement pour vous.

L'étape suivante consiste à configurer le SaaS auquel nous devons nous connecter, et flows.network vous indiquera quels comptes SaaS doivent être vérifiés en fonction de votre fonction. Tout à l'heure nous venons de renseigner la variable d'environnement sur quel repo nous voulons déployer le robot, quel est le nom de la clé API OpenAI, maintenant nous devons autoriser flows.network pour lui permettre d'accéder à votre repo et votre clé API OpenAI, pour qu'il prenne réellement effet.

Cliquez sur la connexion violette pour vous connecter au compte OpenAI, vous devez entrer la clé API que vous avez demandée à OpenAI et nommer la clé OpenAI. Le nom ici doit être le même que le nom saisi précédemment dans la variable d'environnement.

Une fois OpenAI vérifié, continuez à vérifier GitHub, cliquez sur Connecter, et vous ouvrirez une page de vérification fournie par GitHub, sélectionnez le référentiel que vous venez de sélectionner et installez l'intégration du réseau de flux, afin que vous puissiez commenter votre référentiel.

Une fois que tout est défini, cliquez sur le bouton Accéder au flux. Attendez que la fonction soit compilée et que le statut du flux passe à running, puis vous pouvez demander à ChatGPT de revoir le PR pour vous.

Gameplay avancé : règles personnalisées et invite

Le référentiel github-pr-summary est open source et vous pouvez également personnaliser l'invite dans le code en fonction de vos besoins. La logique de la fonction se trouve principalement dans github-pr-summary.rsle fichier .

Adresse de dépôt : https://github.com/flows-network/github-pr-summary/

    let mut reviews: Vec<String> = Vec::new();
    let mut reviews_text = String::new();
    for (_i, commit) in commits.iter().enumerate() {
        let system = "You are an experienced software developer. You will act as a reviewer for GitHub Pull Requests.";
        let co = ChatOptions {
            // model: ChatModel::GPT4,
            model: ChatModel::GPT35Turbo,
            restart: true,
            system_prompt: Some(system),
            retry_times: 3,
        };
        let question = "The following is a GitHub patch. Please summarize the key changes and identify potential problems. Start with the most important findings.\n\n".to_string() + commit;
        if let Some(r) = chat_completion(openai_key_name, &chat_id, &question, &co) {
            write_error_log!("Got a patch summary");
            if reviews_text.len() < 9000 {
                reviews_text.push_str("------\n");
                reviews_text.push_str(&r.choice);
                reviews_text.push('\n');
            }
            reviews.push(r.choice);
        }

Le système et la question de ce code peuvent être réécrits en fonction de vos propres besoins. Par exemple, si votre projet est du code Rust pur ou C++ pur, vous pouvez laisser ChatGPT agir en tant que développeur Rust/C++ expérimenté, plutôt qu'en tant que développeur de logiciel expérimenté général. Si vous disposez d'autorisations GPT4, vous pouvez également modifier le modèle en GPT4 dans le code. Ceux-ci peuvent tous être personnalisés selon vos propres besoins.

Ci-dessus, nous avons introduit que certains paramètres tels que le référentiel GitHub à déployer et le nom de la clé API OpenAI sont transmis à la fonction via les variables d'environnement de la plate-forme de réseau de flux. Ici, nous présentons comment dire flows.network directement dans le code .

Reportez-vous au code suivant login, juntaoremplacez le in par votre compte github personnel owner, juntaoremplacez le par l'organisation où se trouve votre dépôt github repo, testremplacez le par le nom de votre dépôt github et openai_key_nameremplacez le par leglobal.free.trial nom que vous souhaitez nommer la clé OpenAI. trigger_phraseEnfin , flows summarizechangez le mot avec le mot que vous voulez déclencher, ou vous n'avez pas besoin de le changer, utilisez simplement ceci. La logique ici est la même que celle de l'étape de la variable d'environnement, mais nous l'avons modifiée directement dans le code.

pub async fn run() -> anyhow::Result<()> {
    dotenv().ok();

    let login = env::var("login").unwrap_or("juntao".to_string());
    let owner = env::var("owner").unwrap_or("juntao".to_string());
    let repo = env::var("repo").unwrap_or("test".to_string());
    let openai_key_name = env::var("openai_key_name").unwrap_or("global.free.trial".to_string());
    let trigger_phrase = env::var("trigger_phrase").unwrap_or("flows summarize".to_string());

Si vous avez modifié votre fonction, l'étape suivante consiste à déployer votre fonction sur flows.network, et vous pouvez lancer un robot GitHub en quelques clics.

Voir cela, c'est le véritable amour ! flows.network et le bot GitHub PR Summary se lancent sur Product Hunt, amis qui pensent que ce n'est pas mal, veuillez cliquer sur le lien ci-dessous pour voter pour ce bot.

https://www.producthunt.com/posts/gpt-nitro-for-github-pr

<a href=" https://www.producthunt.com/posts/gpt-nitro-for-github-pr?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-gpt-nitro-for-github-pr " target=" _blank"><img src=" https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=387993&theme=light " alt="GPT Nitro pour Github PR - Un réviseur basé sur ChatGPT pour vos pull requests GitHub | Product Hunt" style="width: 250px; height: 54px;" largeur="250" hauteur="54" /></a>

{{o.name}}
{{m.name}}

Je suppose que tu aimes

Origine my.oschina.net/u/4532842/blog/8645450
conseillé
Classement