Better – Un outil de révision de code basé sur l'IA
Guillaume Sere
Posted on November 21, 2024
Les revues de code ont toujours été cruciales pour maintenir des normes élevées et renforcer les meilleures pratiques dans un projet de codage. Cet article ne porte pas sur la manière dont les développeurs doivent réviser le code, mais plutôt sur la délégation d'une partie de celui-ci à l'IA.
Je ne dis pas que l'IA doit être utilisée à la place des outils de formatage et des linters. Au lieu de cela, elle doit être utilisée en plus de cela, pour détecter des éléments triviaux qui pourraient être manqués par un humain. C'est pourquoi j'ai décidé de suivre une action GitHub créer par Murtuzaali Surti qui examine le code d'une demande d'extraction et génère des suggestions à l'aide de l'IA. Laissez-moi vous expliquer comment procéder.
🚨 REMARQUE :
Cette action GitHub est désormais disponible sur la place de marché GitHub
C'est une action JavaScript - apprenez-en plus sur la création d'actions JavaScript sur GitHub
Obtenir la différence
Pour interagir avec l'API github, j'ai utilisé octokit, qui est une sorte de SDK ou une bibliothèque cliente permettant d'interagir avec l'API github de manière automatique.
Pour obtenir la différence de la demande d'extraction soulevée, vous devez transmettre l' Accepten-tête avec la valeur application/vnd.github.diffainsi que les paramètres requis.
Si vous n'êtes pas du tout familier avec les actions GitHub, voici une série d'actions GitHub 101 par Victoria Lo et c'est un bon début:
Une fois que j'obtiens le diff, je l'analyse et supprime les modifications indésirables, puis je le renvoie dans un schéma illustré ci-dessous :
Ignorer les fichiers
Ignorer des fichiers est assez simple. La liste d'entrée utilisateur nécessite une chaîne de motifs glob séparés par des points-virgules. Elle est ensuite analysée, concaténée avec la liste par défaut des fichiers ignorés et dédupliquée.
La liste des fichiers ignorés est ensuite utilisée pour supprimer les modifications différentielles qui font référence à ces fichiers ignorés. Cela vous donne une charge utile brute contenant uniquement les modifications souhaitées.
Générer des suggestions
Une fois que j'obtiens la charge utile brute après avoir analysé la différence, je la transmets à l'API de la plateforme. Voici une implémentation de l'API OpenAI.
Vous remarquerez peut-être l'utilisation du format de réponse dans l'implémentation de l'API. Il s'agit d'une fonctionnalité fournie par de nombreuses plateformes LLM, qui vous permet d'indiquer au modèle de générer la réponse dans un schéma/format spécifique. C'est particulièrement utile dans ce cas, car je ne veux pas que le modèle hallucine et génère des suggestions pour des fichiers ou des positions incorrects dans la demande d'extraction, ou ajoute de nouvelles propriétés à la charge utile de la réponse.
L'invite système est là pour donner au modèle plus de contexte sur la manière dont il doit effectuer la révision du code et sur les éléments à garder à l'esprit. Vous pouvez consulter l'invite système ici . L'invite utilisateur contient la différence réelle, les règles et le contexte de la demande d'extraction. C'est ce qui déclenche la révision du code.
Cette action GitHub prend en charge les modèles OpenAI et Anthropic. Voici comment elle implémente l'API Anthropic :
Ajout de commentaires
Enfin, après avoir récupéré les suggestions, je les nettoie et les transmets à l'API GitHub pour ajouter des commentaires dans le cadre de la révision.
J'ai choisi la méthode ci-dessous pour ajouter des commentaires car en créant un nouvel avis, vous pouvez ajouter tous les commentaires en une seule fois au lieu d'ajouter un seul commentaire à la fois. L'ajout de commentaires un par un peut également déclencher une limitation du débit, car l'ajout de commentaires déclenche des notifications et vous ne voulez pas spammer les utilisateurs avec des notifications.
Si cet article vous a plu, n'hésitez pas à me suivre pour plus de contenu ou à partager vos propres expériences dans les commentaires. 🙌
Posted on November 21, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.