Vai al contenuto

Localizzazione dei Repository GitHub tramite LLM

Scopri come gli LLM aiutano a tradurre efficacemente i repository di GitHub, migliorando la collaborazione globale.

Con l’espansione delle squadre di sviluppo software su scala globale, si è fatto sempre più necessario affrontare le sfide legate alla localizzazione dei repository GitHub. La diversità linguistica e culturale dei membri dei team implica l’esigenza di tradurre il contenuto in modo che ciascun membro possa contribuire efficacemente al lavoro comune. Un progetto innovativo, realizzato da studenti dell’Imperial College di Londra in collaborazione con Microsoft, ha implementato un’applicazione capace di tradurre file Markdown utilizzando Large Language Models (LLM) forniti da OpenAI.

Questa applicazione, costruita su un backend Django e frontend React, interagisce con GitHub tramite la sua API in qualità di app GitHub. Il suo obiettivo principale è quello di tradurre automaticamente i file di documentazione, mantenendo il contesto e la struttura originale. Dalla traslitterazione di testi a quella di blocchi di codice e immagini, l’idea è di mantenere il contenuto accessibile e comprensibile a tutti gli sviluppatori coinvolti.

Uno dei punti focali di questo lavoro è la traduzione di porzioni di codice. Per esempio, in un semplice frammento di codice Python come:
# test the Python print function
print(“Hello World”)
, è essenziale preservare la terminologia tecnica e la sintassi, per cui i commenti e le funzioni non devono subire modifiche. È qui che gli LLM dimostrano la loro superiorità rispetto ai tradizionali strumenti di traduzione automatica, in quanto possono cogliere le piccole sfumature e i significati contestuali.

Al fine di affrontare questo progetto, il team ha costruito un’app che esegue traduzioni in maniera automatica. I file di configurazione permettono di specificare le lingue target e di gestire la sincronizzazione con il repository principale, garantendo che ogni aggiornamento venga riflesso nelle traduzioni. Quando un file README.md viene aggiornato, l’app genera una richiesta di pull per incorporare le traduzioni nella branch principale. I file tradotti vengono collocati in directory parallele a quelle originali, mantenendo così una chiara separazione tra il contenuto originale e le versioni tradotte.

Uno degli aspetti cruciali da considerare è la traduzione delle immagini contenute nei file Markdown. L’approccio adottato prevede l’utilizzo di tecnologie OCR per estrarre il testo dalle immagini e successivamente tradurlo con l’ausilio degli LLM. Questo metodo, sebbene non infallibile, riesce a sostituire il testo originale con quello tradotto, riducendo potenziali problemi di violazione del copyright.

In generale, l’applicazione ha dimostrato risultati promettenti nell’affrontare la traduzione di testi in lingue ad alto sviluppo, con performance che variano in base alla disponibilità di dati di addestramento per lingue meno diffuse. L’accuratezza nella traduzione di commenti di codice è stata sorprendentemente alta, evidenziando l’efficacia degli LLM nel riconoscere ed elaborare strutture di codice.

Riguardo alle problematiche emerse, è stata notata una certa propensione degli LLM a generare contenuti aggiuntivi non richiesti. Questo accade principalmente con file di dimensioni maggiori, dove il rischio di una cattiva interpretazione del contesto aumenta. I programmatori hanno inoltre intenzione di approfondire l’utilizzo degli LLM anche per miglioramenti del codice e analisi statica, aprendo così a ulteriori possibilità di integrazione e sviluppo.

Il lavoro svolto ha portato alla creazione di repository GitHub pubblici, dove sono disponibili il codice sorgente, un notebook per testare le traduzioni e un’app di proof of concept. Sebbene il progetto originale non riceva più aggiornamenti, gli sviluppatori sono orientati a rendere il codice del notebook più accessibile, facilitando così l’adozione delle tecnologie LLM per scopi di localizzazione.