Préambule

Ce n'est pas la première fois qu'InDesign fricote avec l'IA. L'application dispose déjà de fonctionnalités génératives basées sur Firefly comme Text-to-Image et Generative Expand. De surcroît, les auteurs de scripts n'ont pas mis longtemps à tisser des passerelles avec les assistants intelligents — cf. par exemple OpenAI for InDesign de Roland Dreger.

La nouveauté de MATE — extension époustouflante conçue par Eugen Pflüger — c'est qu'elle ouvre la boîte noire de l'automatisation aux non-développeurs. Voilà de quoi faire blêmir les ouvriers du « cousu main » ! En coulisses, MATE pour InDesign chuchote avec un oracle appelé ChatGPT (ou Claude). L'oracle peut quelquefois délivrer des réponses ineptes, mais en moyenne, reconnaissons-le, il vient à bout des défis les plus fous.

Un prompt (et le code JSX induit) qui redispose en cercle tous les polygones de la page.

Eugen Pflüger, alias Plugisto, est un expert UX/UI spécialisé dans la création de solutions innovantes pour les produits Adobe. Ce n'est pas par hasard qu'il a reçu la médaille Developer Champion 2024 ! Designer et développeur autodidacte, il a mis au point Arranger et OMATA for Illustrator (tous deux gratuits). Il vit en Allemagne.


• Bonjour Eugen, dis-nous quelques mots de ton parcours !

Eugen Pflüger, créateur de MATE.Eugen Pflüger : J'ai découvert la programmation en autodidacte avec Flash, puis n'ai jamais cessé de creuser ce sillon. J'adore le design, mais aussi coder et écrire des scripts. En développant des plugins pour InDesign, Illustrator, Photoshop, Express et Figma, j'ai pu combiner les deux activités.

Je me passionne aussi pour l'art génératif (je ne parle pas ici des NFT).

• MATE est un coup de tonnerre dans le monde de l'automatisation Adobe. Comment ce diable est-il sorti de sa boîte ?

E. P. : Un designer doit parfois accomplir des tâches fastidieuses qu'un simple bout de code pourrait digérer en une seconde. Par exemple, organiser des éléments en cercle. Ultra-pénible à faire à la main, ultra-simple avec un script ! C'est là qu'Arranger est né.

Avec OMATA, j'ai voulu étendre cette première impulsion et donner aux designers la « puissance du code » pour créer, transformer ou randomiser facilement des centaines d’objets sans avoir à coder. L’idée était donc de faciliter la création de design et/ou art génératif. OMATA est un outil no-code, une simple interface visuelle qui fabrique du code. Tu peux empiler les unes sur les autres des commandes du genre « opacité aléatoire », Illustrator les exécutera.

Mais ça prenait un temps fou de profiler toutes ces commandes. Du fait de son API vétuste et un brin erratique, Illustrator n'était peut-être pas la meilleure entrée en matière…

• C'est alors que ChatGPT fit son arrivée fracassante…

E. P. : Oui, ChatGPT est apparu après la sortie d'OMATA. Comme tout le monde, je me suis mis à jouer avec. La façon dont une machine pouvait comprendre mes mots m'a tout de suite fasciné. Je me suis demandé si n'importe qui allait bientôt avoir le pouvoir de remplacer mes plugins. Ma pensée suivante a été : pourquoi ne pas essayer de les remplacer moi-même ! Alors j'ai commencé à bidouiller dans cette perspective :

Placer les éléments dans une grille. Les réorganiser en cercle. Leur appliquer une opacité arbitraire. Bien sûr, l'IA se mettait parfois à halluciner, notamment à cause de l'inversion de l'axe des ordonnées¹ dans l'API d'Illustrator. Mais ça fonctionnait plutôt bien. J'ai vite compris qu'avec MATE, je pouvais exécuter toutes les tâches accessibles à OMATA. Sauf que c'était dix fois plus simple, dix fois plus rapide, et qu'on pouvait en ajouter d'autres à l'infini. Par exemple, appliquer une opacité aléatoire à la sélection nécessite plusieurs étapes dans OMATA. Dans MATE, il suffit de taper une phrase simple et d'attendre quelques secondes. Pour une manœuvre plus complexe — mettons : s'assurer que 10 % des éléments ont une opacité supérieure à 50 — ça devient quasi impossible avec OMATA. Alors qu'avec MATE, il suffit d'une autre invite et l'affaire est entendue.

1. Adobe a modifié l'origine du document Illustrator de bas/gauche à haut/gauche à partir de CS5. Côté scripting, ce changement a entraîné des difficultés persistantes en matière de gestion des coordonnées.

On peut même demander à MATE de « générer l'interface utilisateur » : il affichera alors une boîte de dialogue permettant de saisir, par exemple, les valeurs minimales et maximales de l'opération. C'est impressionnant de découvrir le nombre de problèmes que l'outil peut régler à notre place. Des utilisateurs comme Jean-Claude Tremblay, Laurent Tournier et d'autres proposent tous les jours des exemples et des solutions incroyables.

MATE est un outil flexible pour tous les types d’utilisation. Vous pouvez le transformer pour qu'il réponde à vos besoins.

• Donnons à nos lecteurs un cas d’utilisation simple en prenant, disons, un document de 300 pages…

En parlant de 300 pages… voici une citation de Jean-Claude Tremblay extraite de notre serveur Discord (hier) :

   « Je dois redéfinir la hauteur-ligne à au moins 0,125' dans tous mes tableaux.
   Je dois rajuster tous ces tableaux à la largeur de leur bloc. Trois invites MATE
   et c'est réglé ! Tout ça dans un document de 300 pages ! J'❤️ MATE! »

MATE est un outil flexible pour tous les types d’utilisation. Vous pouvez le transformer pour qu'il réponde à vos besoins.

• Mais en gros, MATE est un assistant pour automatiser des tâches via ChatGPT ou Claude. Qu'apporte-t-il de plus que d'interroger directement ces IA ?

E. P. : MATE se concentre sur les tâches quotidiennes de l'utilisateur. D'abord, il nous évite de copier-coller sans cesse entre InDesign et ChatGPT/Claude. Mieux, il permet à l'utilisateur de rester dans son flux de production. MATE peut identifier les élements sélectionnés et travailler directement sur eux. Avec l'exécution automatique activée, MATE non seulement écrit un script, mais il l'exécute dans la foulée. Tu le redemandes, il l'exécute. C'est comme si une vraie personne était assise à côté de toi et faisait le boulot à ta place !

Exemple parfait présenté par Branislav Milić : désactiver l'option de césure automatique pour tous les styles de paragraphe.

Au-delà de ça, tu peux enregistrer tes scripts localement — et les exécuter localement — de façon à te constituer une véritable collection d'outils. À part le mode « Chat », MATE dispose des modes « Texte » et « Images ». Il peut ainsi corriger les fautes d'orthographe, traduire le texte dans une trentaine de langues, le raccourcir ou l'allonger… Il peut créer des images-tests pour les zones réservées, des visuels d'inspiration, etc.

• Au fait, comment bascule-t-on de ChatGPT à Claude Sonnet ?

E. P. : Il te faut la dernière version (v1.2.0 ou supérieure). En mode Chat, dans le coin inférieur gauche, il y a une icône en forme d'éclair. On peut switcher entre les modèles pour chaque discussion et même pour chaque invite. Sous « Paramètres » il est également possible de choisir un modèle par défaut. Chaque discussion démarrera alors avec ce modèle.

Possibilité de basculer entre les modèles d'assistants IA.

• Quelques mots sur ton système de licence et comment il s'articule avec OpenAI/Anthropic…

E. P. : MATE est disponible sous forme d'abonnement mensuel ou annuel (l'utilisateur bénéficie de deux mois gratuits). Je dois le proposer sous forme d'abonnement car les fournisseurs d'IA (OpenAI, Anthropic) me facturent l'utilisation. On peut également obtenir une version fonctionnelle avec sa propre clé API OpenAI — et bientôt la même formule avec Claude (Anthropic). Il s'agit alors d'un paiement unique, pas d'un abonnement. Enfin, MATE existe sous forme d'« offre à vie » (lifetime deal) : tu payes une seule fois et tu peux l'utiliser ad vitam æternam.

Questions techniques

• Le produit est plutôt facile à installer lorsqu'on utilise l'application Creative Cloud via Adobe Exchange. Mais supposons que je souhaite installer manuellement la source ZXP, est-ce possible ?

E. P. : Non, ce n'est pas possible. Je ne connais pas très bien les rouages de l'installation manuelle d'un ZXP. Adobe a corrigé le processus d'installation des extensions il y a quelque temps et cela fonctionne maintenant. Je suis un développeur solo. Je préfère consacrer mon temps au développement de fonctionnalités et à la correction de bugs plutôt qu'à répondre aux demandes d'assistance pour les problèmes d'installation. Si cela était vraiment nécessaire, que les utilisateurs me contactent à support[at]omata{dot}io. J'y jetterai un œil, mais je ne pense pas que ce soit un point crucial.

• Pour le moment, MATE produit du code ExtendScript. Prévois-tu d'ajouter une couche UXP ?

E. P. : C'est en préparation. Je dois encore trouver comment gérer cet aspect au niveau de l'interface, pour que les utilisateurs sachent à quoi ils ont affaire — tous ne sont pas préparés à ce changement. Mais ça viendra, oui.

On peut distinguer une « solution » d’un « outil ». Une solution résout un problème concret, un outil fait face à une multiplicité de problèmes.

• En préparant cette interview tu me disais que « MATE n’est pas une solution pour un cas d’utilisation unique ». Que voulais-tu dire ?

E. P. : En informatique, on peut souvent faire la distinction entre une « solution » et un « outil ». Une solution résout un problème concret (par exemple, Arranger gère les mises en page circulaires. C'est tout.) Un « outil » est par nature plus flexible et peut s'appliquer à une multiplicité de problèmes. MATE est un outil. Il en va d'ailleurs de même pour ChatGPT qui n'a pas d'usage unique. Il peut assister la rédaction d'e-mails, la programmation, l'écriture de poèmes, le brainstorming, etc.

MATE répond à des besoins ponctuels à un moment précis, mais cela peut concerner n'importe quel aspect de notre métier : styliser des cellules, réécrire des styles, mettre en gras les noms de voitures, écrire une commande GREP ou choisir des éléments graphiques au hasard pour créer un effet d'arrière-plan. C'est pourquoi j'aime le décrire comme un outil pour les automatisations, le travail créatif (par exemple, des couleurs aléatoires) et le scripting. Il ne serait pas pertinent de le réduire à un cas d'utilisation.

• Quelles sont les limitations à connaître ? Qu'est-ce que MATE pour InDesign ne sait pas faire ?

E. P. : Une première chose à dire est que MATE ne produira pas de belle mise en page à notre place. Pas plus qu'il ne dessinera une icône de licorne. C'est voulu. Je l'ai conçu comme un « assistant aux tâches rébarbatives », laissant à chacun plus d'énergie pour le volet creatif.

Une autre limite s'appelle la « fenêtre de contexte » (context window). En arrière-plan, l'IA ne peut travailler que sur un périmètre limité d'input. Par exemple elle ne saura pas ingurgiter un texte-fleuve. Il faudra alors le décomposer en morceaux plus petits. Cependant, les fournisseurs d'IA élargissent constamment ces fenêtres de contexte.

Si MATE s'imagine à tort que la propriété Spread.bounds existe, vous pouvez le remettre dans le droit chemin.

• Parlons de ces satanées « hallucinations ». Lors d'un échange sur X, nous avions remarqué que MATE pouvait inventer de toutes pièces des propriétés du DOM InDesign, provoquant alors des erreurs d'exécution…

E. P. : Les hallucinations désignent en effet la situation où l'IA invente des choses qui n'existent pas — par exemple des propriétés du DOM ! Ça arrive malheureusement, le système n'étant pas parfait. Ces accidents sont ancrés dans le fonctionnement des LLM (large language models). Andrej Karpathy a publié un commentaire intéressant à ce sujet (EN). Mais en un sens les hallucinations sont plutôt une fonctionnalité qu'un bug :) Sans elles, les LLM n'auraient pas atteint ce degré de créativité et de flexibilité. La question est de savoir comment y faire face, et j'y travaille. Une meilleure gestion des erreurs serait la première étape. L'un des avantages de l'IA est qu'elle peut corriger ses propres erreurs.

• Donc, supposons que je décèle une hypothèse erronée dans le raisonnement de MATE, je peux alors l'aiguiller en lui disant que, par exemple, « L'objet Spread n'a pas de propriété bounds ». Sur quoi il réajustera le code en conséquence (ce qui est génial !) Mais n'y a-t-il aucun moyen de faire persister ce correctif ?

Hélas les « grands » LLM comme ChatGPT, Claude, Mistral… n’apprennent pas de leurs erreurs de façon durable. Trop d'idées reçues circulent quant à ce que signifient « IA » et « apprentissage ». On peut toujours demander à un assistant de se souvenir d’une solution à une erreur, mais c'est peine perdue car la phase d’apprentissage du modèle est déjà terminée — elle est « gelée ». Les LLM apprennent lorsqu’ils sont formés, avant la phase de mise en circulation. Au-delà, aucun apprentissage persistant ne s'établira sur la base des interactions avec les utilisateurs.

Il y a à cela des raisons techniques et conceptuelles : que se passerait-il si on inculquait des fables à un LLM et qu'il doive s'en souvenir ? Qui décide de ce qui est vrai ou faux ? Voilà de bonnes raisons pour qu'un modèle entraîné reste clos. Un autre aspect du problème est la confidentialité : il faudrait enregistrer les invites de l'utilisateur, ses données, pour les intégrer aux modèles. Lors de l'avènement de ChatGPT, il y a eu pas mal de controverses sur l'utilisation des données personnelles en phase d'entraînement du modèle suivant. Sujet épineux !

Moi-même utilisateur de ChatGPT et de MATE, je comprends parfaitement la nécessité de corriger les erreurs évidentes et d'adapter MATE à nos besoins. Je fais des recherches à ce sujet. Il existe plusieurs voies, par exemple un système RAG² avec mémoire pour les corrections. J'y travaille.

2. RAG signifie Retrieval-Augmented Generation (« génération augmentée de récupération »).

L’IA se charge des étapes fastidieuses du codage, de sorte que l’on peut enfin se concentrer sur les défis de haut niveau.

• Branislav Milić observait dernièrement qu'avec un tel outil, on peut faire du reverse-engineering sur des scripts existants — par exemple, en analysant un code tiers et en l'adaptant à une fonction différente…

E. P. : En effet, tu peux faire ça. Mais tu pouvais tout aussi bien le faire avec ChatGPT dès le premier jour. Et à vrai dire, on a toujours pu le faire — sans l'aide d'une IA — avec n'importe quel fichier .jsx. Il était déjà possible de les ouvrir, de modifier certaines valeurs, de les réécrire. L'IA ne fait qu'accélérer et simplifier l'opération.

• Pour le dire en clair, les développeurs old-school tels que moi feraient-ils mieux de plier les gaules et de partir à la retraite ?

E. P. : Je comprends les inquiétudes. Première remarque : ce n'est pas parce que la rétro-ingénierie est techniquement possible qu'elle doit être autorisée. La question du droit d'auteur se pose à l'identique pour les polices ou les photos, par exemple. Techniquement, c'est simple à partager, bien qu'en général on ne soit pas autorisé à le faire. (Ce débat ne date pas de l'IA, il est aussi vieux que le design lui-même.)

D'autre part, je n’ai jamais entendu personne se plaindre d'avoir « trop de développeurs ». Les développeurs et les ingénieurs restent une ressource rare. Même si les non-développeurs peuvent désormais modifier des scripts sans l'ingénierie d'un expert, ça ne veut pas dire que vous aurez moins de travail. Je pense même le contraire. Les automatisations et les intégrations de systèmes sont de plus en plus recherchées. L’IA commet des erreurs et on a besoin de personnes en état de les corriger. Les développeurs comme toi peuvent utiliser l’IA pour accomplir des tâches plus rapidement et à moindre coût d'énergie mentale. L’IA se charge des étapes fastidieuses du codage, de sorte que l’on peut enfin se concentrer sur les défis de haut niveau.

• Que prévois-tu d’améliorer ou de corriger dans les prochaines versions ?

E. P. : D'abord améliorer la qualité des réponses, et réduire les « hallucinations ». Je voudrais que MATE comprenne mieux les documents et les requêtes. Ajouter d'autres modèles d'IA. Je travaille aussi à la mise au point d'un guide d'invite, d'un guide de dépannage, parce qu'il est important d'apprendre aux utilisateurs à gérer les erreurs, plutôt que de les ignorer.

Ce secteur évolue si rapidement qu'il est bien difficile de suivre la cadence et de proposer les modèles les plus performants. La bonne nouvelle est que les choses s'améliorent constamment !

Propos recueillis et traduits de l'anglais par Marc Autret


• Pour aller plus près :
→ OMATA Labs: omata.io
→ MATE: omata.io/mate
→ Adobe Exchange: @plugisto
→ Figma: figma.com/@plugisto

• À découvrir aussi :
A Case Study on Arranger: Making the Leap from CEP to UXP
OpenAI for InDesign (R. Dreger)
→ Adobe France: InDesign: Scripts, GREP et IA — avec L. Tournier (FR)