CodeWhisperer : les choses à savoir sur ce concurrent de GitHub Copilot made in AWS

Amazon CodeWhisperer GA

Amazon CodeWhisperer, concurrent de GitHub Copilot, est entré en phase commerciale. Voici quelques clés de compréhension.

Une « IA qui code », combien ça coûte ? Avec GitHub Copilot, commercialisé depuis près d’un an, c’est 10 $ HT par mois pour un usage individuel. Et 19 $/mois/utilisateur pour les comptes d’organisations. Exception faite de la période d’essai de 30 jours, il n’y a pas d’option gratuite, sinon pour certains publics (étudiants, enseignants et gestionnaires de grands projets open source).

Sur le papier, AWS est un peu plus généreux avec CodeWhisperer, qu’il vient de lancer en phase commerciale. En tout cas pour l’usage individuel : il est gratuit. La formule « business » est, elle, au même prix que celle de GitHub Copilot.

La version « business » de CodeWhisperer apporte essentiellement des outils d’administration au premier rang desquels le SSO*. Elle relève aussi le quota mensuel d’analyses de sécurité du code (500 par utilisateur, soit dix fois plus que sur l’offre individuelle).
Ce qui ne change pas, c’est le cœur fonctionnel : peu importe le type d’utilisateur, on bénéficie du support des mêmes langages et des mêmes IDE.

CodeWhisperer prend officiellement en charge les langages suivants : C, C++, C#, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, Rust, Scala et SQL. Microsoft avance une liste un peu plus restrictive pour GitHub Copilot, excluant autant Rust que Kotlin.
Sur la partie IDE, c’est le contraire : la liste de compatibilité de CodeWhisperer est un peu plus courte. En sont absents certains des environnements JetBrains que GitHub Copilot supporte, comme DataSpell et MPS.

CodeWhisperer a toutefois pour lui une compatibilité native avec l’IDE d’AWS (Cloud9) et la console Lambda. Il est par ailleurs optimisé pour fournir des suggestions exploitant les API AWS.

Dataset, multilinguisme, télémétrie… les dits et les non-dits de CodeWhisperer

Pendant la phase expérimentale, AWS s’était engagé à ne pas exploiter, à des fins d’amélioration du service, le code que les utilisateurs créeraient. La donne a changé avec le passage en phase commerciale. Surtout pour les utilisateurs individuels, qui, s’ils s’opposent à la pratique, doivent modifier le paramétrage. La télémétrie est quant à elle active par défaut pour tout le monde (il y a là aussi un mécanisme d’opt-out). Les utilisateurs européens y porteront d’autant plus d’attention que CodeWhisperer est hébergé aux États-Unis (région AWS US-East).
Avec GitHub Copilot, les choses sont un peu différentes. Il n’y a, en particulier, pas de télémétrie pour les comptes d’organisations.

Dans la pratique, GitHub Copilot comprend les consignes dans d’autres langues que l’anglais (illustration ci-dessous en espagnol). Microsoft ne met cependant pas cette capacité en avant.
Même tendance chez AWS. Le discours est le suivant : vu la diversité du jeu de données d’entraînement, il est possible que CodeWhisperer fournisse des suggestions à partir de commentaires écrits dans d’autres langues que l’anglais, nous annonce-t-on, mais ce cas de figure « n’est pas officiellement pris en charge ».

GitHub Copilot espagnol

Concernant, justement, le dataset sur lequel a été formé le grand modèle de langage qui porte CodeWhisperer, AWS ne dit pas grand-chose. Il donne même, dans ses diverses communications relatives au lancement commercial, moins de détails qu’au début de la preview. Il était alors question de quatre sources : projets open source, dépôts internes (liés notamment à Amazon.com), documentation API et forums.

Les principales recommandations d’usage n’ont, en revanche, pas changé depuis l’ouverture des expérimentations. Parmi elles, pour assurer le bon fonctionnement de CodeWhisperer, privilégier des commentaires courts associables à des tâches précises n’impliquant pas de fonction trop longue. Et recourir à un nommage « intuitif » des éléments de code (variables, docstrings…).

Scans de sécurité : O.K. pour Java, JavaScript et Python

Les deux produits présentent une certaine surface fonctionnelle commune. Tous deux incluent par exemple une forme d’antiplagiat (comparaison du code généré avec celui contenu dans le dataset d’entraînement). Sur CodeWhisperer, elle se traduit par l’affichage d’un lien vers la source probable et d’une mention des licences impliquées.

flagging

L’analyse de sécurité fonctionne pour le moment avec trois langages : Java, JavaScript et Python. Elle ne se limite pas au code que CodeWhisperer a généré : elle englobe l’ensemble des composantes du projet, dépendances comprises. Le volume analysable varie en fonction des langages… à la discrétion d’AWS, qui ne communique pas de détails sur le sujet.

Il est possible de désactiver l’appel automatique à CodeWhisperer, au profit d’un enclenchement manuel (Alt+C sur Windows, Option+C sur Mac). Les flèches gauche et droite permettent de naviguer entre les suggestions ; la touche Tab, d’en accepter une.

* Pour la version « business », l’authentification repose sur IAM Identity Center (ex-AWS SSO). Pour l’usage individuel, elle se base sur un identifiant AWS Builder (pas de compte AWS nécessaire ; un e-mail suffit).