Intenzioni del Codice di Intelligenza Artificiale

'AI Code Intentions'

Ogni moderno IDE include Intenzioni di Codice che ti consentono di eseguire alcune azioni predefinite sul tuo codice in base al contesto. Ad esempio, per un’istruzione for, possono esserci diverse intenzioni come Converti in while, Inverti l'ordine, Usa gli Stream, ecc. L’uso delle Intenzioni è molto comodo perché ci consente di eseguire rapidamente il refactoring o manipolare il codice.

Le Intenzioni sono piuttosto complesse da sviluppare, quindi di solito sono codificate in modo rigido e incluse negli IDE dai rispettivi fornitori. In alcuni IDE, è possibile sviluppare le proprie Intenzioni, ma non è così facile in quanto richiede una buona conoscenza della piattaforma dell’IDE, la scrittura di molto codice, lo sviluppo di plug-in per distribuire le proprie Intenzioni, ecc.

Tuttavia, le Intenzioni codificate in modo rigido possono diventare obsolete. Oggi è possibile chiedere a un LLM, ad esempio ChatGPT, di eseguire un’azione sul codice ed è piuttosto semplice. Devi fornire il frammento di codice e un prompt adeguato. Ad esempio, se fornisci il seguente ciclo con il prompt Inverti direzione di un ciclo a ChatGPT:

Avrai lo stesso risultato che otterresti utilizzando una Intenzione codificata in modo rigido fornita dal tuo IDE:

Quindi, è piuttosto naturale introdurre le Intenzioni AI, che sono essenzialmente prompt AI denominati legati a un determinato contesto. Il contesto può essere un file, una classe, un’istruzione, un metodo particolare, ecc., e l’IDE sarebbe responsabile di fornire il contesto corretto, chiedere a LLM il prompt corretto, ottenere e analizzare i risultati e applicarli al codice.

I vantaggi di avere Intenzioni AI sono:

  1. Quasi qualsiasi refactoring può essere fatto utilizzando il linguaggio naturale. I prompt possono essere semplici come Sostituisci usando il formato per API ben note (come PrintStream.println(String) di Java), oppure possono essere più complessi con istruzioni più dettagliate per API meno conosciute.
  2. Non è necessario codificare duramente le Intenzioni AI.
  3. Non è necessario scrivere plugin per distribuire le Intenzioni AI.
  4. Le Intenzioni AI possono essere facilmente configurate dall’utente.
  5. Non è necessario utilizzare un’interfaccia di chat, specialmente per attività ripetitive.
  6. Menor traffico di token LLM per consentire un risparmio di costi rispetto all’uso di un’interfaccia di chat.

Un’altra opzione interessante sono le intenzioni AI integrate direttamente nell’API utilizzando le annotazioni. Tali Intenzioni AI dichiarative istruirebbero l’IDE su quali intenzioni sono disponibili per classe, campo o metodo e quale prompt dovrebbe essere utilizzato per eseguire una particolare Intenzione chiedendo a un LLM. Queste Intenzioni AI dichiarative possono essere fornite dagli autori di framework/librerie e quindi possono essere immediatamente disponibili a tutti gli sviluppatori negli IDE che le supportano.

Ad esempio, la seguente annotazione specifica un’Intenzione AI Sostituisci usando il formato che consente di sostituire le chiamate a println(String) che ricevono una stringa concatenata con le chiamate a println(String, Object...) che ricevono un formato e una lista di argomenti:

Applicando tale Intenzione a una chiamata:

Si otterrebbe:

L’uso delle Intenzioni AI dichiarative può migliorare drasticamente la gestione delle API deprecate. Quindi ogni metodo deprecato può includere alcune Intenzioni AI per consentire di eseguire il refactoring in una versione moderna, senza la necessità di evitare il refactoring in futuro. Sfoglia la documentazione e la codifica manuale: rendi il tuo codice aggiornato con un solo clic.

Credo che le Intenzioni AI siano il futuro degli IDE e delle integrazioni LLM. Spero quindi che appaiano in molti IDE nel prossimo futuro.