Le secteur de l’IA vient d’être le théâtre d’un développement notable.
Tutoriel CodeGen de Salesforce : générer, valider et reclasser des fonctions Python à l’aide de tests unitaires et de contrôles de sécurité
Dans ce tutoriel, nous mettons en œuvre un workflow de bout en bout pour Salesforce CodeGen. Nous chargeons un modèle CodeGen provenant de Hugging Face, nous le préparons pour la génération de code, puis nous l’utilisons pour générer des fonctions Python à partir de requêtes en langage naturel. Nous allons ensuite au-delà de l’inférence de base en ajoutant l’extraction de fonctions, la vérification syntaxique, les contrôles de sécurité statiques, la validation basée sur des tests unitaires, le reclassement des meilleurs candidats parmi N, la synthèse de programmes en divers étapes, l’expérimentation de type « prompt », la visualisation des retombées de benchmark et l’exportation d’artefacts. Grâce à ce workflow, nous découvrons comment CodeGen peut être utilisé non seulement comme modèle de complétion de code, mais aussi dans le cadre d’un pipeline structuré de génération de code qui évalue, filtre et organise les solutions générées.
À noter également, nous installons toutes les bibliothèques nécessaires et préparons l’environnement pour l’exécution de Salesforce CodeGen. Nous vérifions l’environnement d’exécution, détectons la disponibilité du GPU, sélectionnons le modèle CodeGen, puis chargeons à la fois le tokenizer et le modèle depuis Hugging Face. Nous définissons par ailleurs des fonctions d’aide pour la génération de texte et l’affichage du code formaté, afin de faciliter la compréhension du reste du tutoriel.
Nous développons la couche utilitaire qui extrait les fonctions Python générées à partir des retombées bruts du système. Nous y intégrons une validation syntaxique, des contrôles de sécurité statiques, une exécution restreinte, l’exécution de tests unitaires et la gestion des délais d’expiration afin de faciliter l’évaluation du code généré. Nous calculons également la complexité du code et créons une fonction de notation permettant de classer les candidats générés en fonction de leur exactitude, de leur sécurité et de leur simplicité.
Nous commençons par un exemple simple de génération de code à partir de langage naturel, à l’aide d’une fonction calculant l’aire d’un cercle. Nous générons le résultat brut de CodeGen, extrayons la fonction, puis en analysons la syntaxe, la sécurité et la complexité. Nous définissons ensuite plusieurs tâches de programmation qui nous permettront par la suite d’évaluer les performances de CodeGen sur différents problèmes de génération de fonctions.
Nous créons des consignes structurées pour chaque tâche et générons plusieurs solutions candidates à l’aide de CodeGen. Nous évaluons chaque plateforme candidate à l’aide de tests unitaires, de vérifications syntaxiques, de contrôles de sécurité, d’analyses de complexité et d’un mécanisme de notation. Nous synthétisons ensuite les résultats dans un DataFrame et affichons la meilleure outil générée pour chaque tâche.
Nous illustrons la synthèse de programmes à plusieurs étapes en générant des fonctions plus petites qui fonctionnent ensemble sous forme de pipeline. Nous créons des fonctions pour la normalisation des mots, le comptage des mots et la sélection des mots les plus fréquents, puis nous les combinons pour former un workflow complet de traitement des mots les plus courants. Nous testons également différents styles de prompts, tels que la conversion de chaînes de documentation en code, la complétion partielle, la génération de tests et la refactorisation.
Par ailleurs, nous regroupons les résultats des tests comparatifs et présentons sous forme graphique les taux de réussite des meilleurs candidats pour l’ensemble des tâches. Nous exportons les candidats générés, les résumés des tests comparatifs, les meilleures solutions et le pipeline composé sous forme de fichiers réutilisables. Nous terminons en ajoutant une fonction d’aide interactive qui nous autorise de générer de nouvelles solutions CodeGen à partir de tâches de programmation personnalisées définies par l’utilisateur.
À retenir de cette annonce :
- Nous synthétisons ensuite les résultats dans un DataFrame et affichons la meilleure outil générée pour chaque tâche.
- Nous illustrons la synthèse de programmes à plusieurs étapes en générant des fonctions plus petites qui fonctionnent ensemble sous forme de pipeline.
Il faudra attendre les retours concrets pour juger de l’impact réel.
À découvrir aussi :
- OpenAI lance LifeSciBench, un benchmark comprenant 750 tâches qui évalue les modèles d’IA sur des projets de recherche réels en sciences de la vie à l’aide d’une grille d’évaluation rédigée par des experts
- Présentation de LifeSciBench
Source : MarkTechPost : MarkTechPost